Uso de Atributos de Fed: Autorización de OAM y Cabeceras HTTP
En este artículo se describe cómo se pueden utilizar los atributos recibidos en los mensajes SSO de SAML/OpenID en las políticas de autorización de OAM y cómo se pueden proporcionar a aplicaciones web protegidas.
En tiempo de ejecución, cuando OAM/SP procesa correctamente un mensaje de respuesta SSO de SAML/OpenID, el servidor guarda parte de la información de la respuesta en la sesión de OAM como atributos que se pueden utilizar en las políticas de autorización de OAM.
-
En condiciones para reglas de autorización
-
En respuestas para proporcionar los atributos SAML/OpenID a aplicaciones web protegidas
La información de respuesta SSO de SAML/OpenID se guarda en la sesión de OAM como atributos a los que hacen referencia los siguientes identificadores:
-
El nombre del partner IdP, al que hace referencia
$session.attr.fed.partner
-
Valor NameID de la respuesta de SSO, al que hace referencia
$session.attr.fed.nameidvalue
-
Formato NameID de la respuesta SSO, para protocolos SAML a los que hace referencia
$session.attr.fed.nameidformat
-
Atributos incluidos en la afirmación de SAML
AttributeStatement
o en la respuesta SSO OpenID, a la que hace referencia $session.attr.fed.attr.ATTR_NAME
, con ATTR_NAME como -
Nombre de atributo de sesión local, si se ha aplicado una asignación de perfil de atributo IdP
-
O el nombre de atributo de la respuesta de SSO, si no se ha aplicado ninguna asignación de perfil de atributo IdP para este atributo
Visión general
Un entorno OAM típico se compone de lo siguiente:
-
Directorio LDAP
-
Servidor de administración de OAM, con el servidor de tiempo de ejecución de OAM de la consola de administración de OAM
-
Aplicaciones web
-
Agentes WebGate que protegen la aplicación web en servidores HTTP (OHS, IIS...)
Cuando un usuario autenticado solicita acceso a un recurso protegido:
-
WebGate intercepta la llamada y garantiza que el usuario esté autenticado
-
El usuario está autorizado a acceder al recurso evaluando las políticas de autorización para este recurso
-
WebGate inyecta datos, como cookies o cabeceras HTTP, en la solicitud HTTP que se reenviará al recurso protegido
Las políticas de autorización de OAM utilizadas para evaluar si un usuario puede acceder a un recurso o no se pueden basar en varias condiciones:
-
Identidad: condición basada en la identidad o los grupos de usuarios a los que pertenece el usuario
-
Dirección IP: condición basada en la dirección IP del usuario.
-
Temporal: condición basada en el tiempo
-
Atributos: condición basada en atributos (LDAP, solicitud HTTP o atributos de sesión).
Un administrador puede utilizar los datos de federación recibidos en el mensaje SSO de SAML/OpenID en una regla de autorización mediante una condición de atributo que evalúe los atributos de federación.
Las respuestas de autorización de OAM que se utilizan para inyectar datos en la solicitud HTTP para ponerlos a disposición de las aplicaciones web protegidas se basan en
-
Atributos de LDAP de usuario
-
Datos de solicitud HTTP
-
Cadenas estáticas
-
Atributos de sesión de OAM
De forma similar a las políticas de autorización de OAM, un administrador puede inyectar datos de federación en la solicitud HTTP mediante el uso de atributos de sesión de OAM que hacen referencia a las entradas de federación ($session.attr.fed.partner
, $session.attr.fed.attr.ATTR_NAME…
)
Configuración de SSO de Federación
Utilice la misma configuración de federación de SAML 2.0 configurada para el anterior, donde:
-
OAM actúa como proveedor de servicios
-
IdP (
AcmeIdP
) envía una afirmación de SAML con-
NameID definido en
userID
-
Atributos enviados
-
email
establecido en la dirección de correo electrónico del usuario -
fname
definido en el nombre del usuario -
surname
definido en el apellido del usuario -
title
definido en el último cargo del usuario
-
-
OAM/SP configurado con un perfil de atributo IdP en
-
Asignar
fname
a nombre -
Asignar
surname
a apellido -
Dejar el correo electrónico tal cual
-
Se utilizarán dos usuarios:
Alice:
-
userID: alice
-
correo electrónico:
<alice@oracle.com>
-
first name: Alice
-
last name: Appleton
-
title: manager
Bob:
-
userID: bob
-
correo electrónico:
<bob@oracle.com>
-
first name: Bobby
-
last name: Smith
-
title: ingeniero
La respuesta XML SAML con la afirmación devuelta por IdP es:
<samlp:Response ..>
<saml:Issuer ...>http://acme.com
/idp</saml:Issuer>
<samlp:Status>
<samlp:StatusCode
Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion ...>
<saml:Issuer ...>http://acme.com /idp</saml:Issuer>
<dsig:Signature ...>
...
</dsig:Signature>
<saml:Subject>
<saml:NameID ...>alice</saml:NameID>
...
</saml:Subject> <saml:Conditions ...>
...
</saml:Conditions> <saml:AuthnStatement ...>
...
</saml:AuthnStatement>
<saml:AttributeStatement ...>
<saml:Attribute Name="email" ...>
<saml:AttributeValue
...>alice@oracle.com</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="title" ...>
<saml:AttributeValue
...>manager</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="surname" ...>
<saml:AttributeValue
...>Appleton</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="fname" ...>
<saml:AttributeValue
...>Alice</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
La página Probar SP muestra diferentes resultados, ya que OAM/SP ha procesado los atributos según las reglas en las que:
-
no se modificó el correo electrónico
-
el título no ha cambiado
-
fname se ha asignado al nombre
-
el apellido se ha asignado al apellido
Descripción de la ilustración Test_Federation_SSO.jpg
Aplicación web protegida
En este ejemplo, utilice los siguientes componentes:
-
OHS está instalado
-
Se ha configurado un agente WebGate para esta instancia de OHS
-
Se ha creado un dominio de aplicación de OAM para esta WebGate, que protege todos los recursos del servidor de OHS
-
Política de autenticación:
-
Nombre: política de recursos protegidos
-
Esquema de Autenticación: FederationScheme
-
-
Política de autorización:
-
Nombre: política de recursos protegidos
-
Recursos
-
/** y /.../*
-
Enlazado a Política de recursos protegidos
-
-
Política de autenticación y política de autorización "Protected Resource Policy"
-
El recurso
/cgi-bin/printenv
en OHS imprime datos al procesar la solicitud HTTP enviada por el explorador -
Cabeceras HTTP
-
Datos de solicitud (ruta de acceso, cadena de consulta...)
-
Datos del servidor (dirección IP, puerto...)
Un ejemplo de un explorador que accede al recurso sin estar protegido por OAM/WebGate da como resultado la siguiente visualización (en la prueba, la aplicación web estará protegida como se indica arriba):
Descripción de la ilustración Protected_web_Application.jpg
Condiciones de autorización
En el siguiente ejemplo se muestra cómo crear una política de autorización con atributos de federación almacenados en la sesión de OAM para un recurso con las siguientes restricciones:
-
Los usuarios se autentican mediante SSO de federación (por lo que el recurso está protegido mediante una política de autenticación FederationScheme)
-
IdPs proporciona el cargo del usuario y se conoce localmente como título (si IdP envía el cargo mediante un nombre distinto del título, se debe utilizar un perfil de atributo IdP para asignarlo al nombre de cargo local)
-
Solo los usuarios con el título de gestor deben tener acceso al recurso
Para crear dicha política de autorización, ejecute los siguientes pasos:
-
Vaya a la consola de administración de OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole
-
Vaya a Access Manager, Dominios de aplicación.
-
Busque y haga clic en el dominio de aplicación para el recurso.
-
Haga clic en Políticas de autorización
-
Abra la política de autorización que protege el recurso (en este ejemplo, Protected Resource Policy).
-
Haga clic en el separador condiciones.
-
Haga clic en Agregar para definir una nueva condición:
-
Nombre:
TitleCondition
-
Tipo:
Attribute
-
-
Haga clic en Agregar selección
-
Seleccione la condición recién creada
-
En la ventana Detalles de condición, haga clic en Agregar:
-
Espacio de nombres:
Session
-
Nombre de atributo:
Other
-
Introduzca el nombre del atributo:
fed.title
-
Operador:
Equals
-
Valor de atributo:
manager
-
-
Haga clic Aceptar
-
Haga clic en el separador Reglas.
-
Elimine la condición TRUE si está presente en la regla de permiso, condiciones seleccionadas
-
Agregue TitleCondition a Permitir regla, condiciones seleccionadas
-
Haga clic en Aplicar.
Descripción de la ilustración Add_Condition.jpg
Descripción de la ilustración Add_Attr_Condition.jpg
Descripción de la ilustración Authorization_Policy.jpg
Para probarlo, en un nuevo explorador, acceda al recurso protegido. Se le redirigirá a IdP.
Si se autentica en IdP con alice, el explorador muestra lo siguiente al final del momento, mostrando la cabecera HTTP de usuario remoto definida en alice (ya que IdP ha proporcionado el atributo de título definido en manager y OAM solo permite el acceso a los usuarios con el atributo de sesión de OAM fed.title
definido en manager):
Descripción de la ilustración Document_root.jpg
Si se autentica en IdP con bob, el explorador muestra lo siguiente al final del momento, mostrando un error (ya que IdP ha proporcionado el atributo de título definido en Engineer y OAM solo permite el acceso a los usuarios con el atributo de sesión de OAM fed.title
definido en manager):
Descripción de la ilustración OAM_Operation_error.jpg
Inyección de atributos federales
En el siguiente ejemplo se muestra cómo inyectar atributos SAML/OpenID recopilados de la respuesta SSO como cabeceras HTTP para la Web protegida con las siguientes restricciones:
-
Los usuarios se autentican mediante SSO de federación (por lo que el recurso está protegido mediante una política de autenticación FederationScheme)
-
IdPs proporciona el cargo del usuario y se conoce localmente como título (si IdP envía el cargo mediante un nombre distinto del título, se debe utilizar un perfil de atributo IdP para asignarlo al nombre de cargo local)
-
OAM/WebGate está configurado para inyectar:
-
Dirección de correo electrónico como dirección de correo electrónico
-
Nombre como nombre
-
Apellido como apellido
-
La configuración se realiza mediante el uso de objetos de respuesta de autorización en una definición de política de autorización
Para configurar dicha política de autorización, realice los siguientes pasos:
-
Vaya a la consola de administración de OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole
-
Vaya a Access Manager, Dominios de aplicación.
-
Busque y haga clic en el dominio de aplicación para el recurso
-
Haga clic en Políticas de autorización
-
Abra la política de autorización que protege el recurso (en este ejemplo, Protected Resource Policy).
-
Haga clic en el separador Respuestas.
-
Haga clic en Agregar para crear la entrada para la dirección de correo electrónico:
-
Tipo:
Header
-
Nombre:
emailaddress
-
Valor:
$session.attr.fed.attr.email
-
-
Haga clic en Agregar.
-
Haga clic en Add para crear la entrada para el nombre:
-
Tipo:
Header
-
Nombre:
firstname
-
Valor:
$session.attr.fed.attr.firstname
-
-
Haga clic en Agregar.
-
Haga clic en Add para crear la entrada para el apellido:
-
Tipo:
Header
-
Nombre:
lastname
-
Valor:
$session.attr.fed.attr.lastname
-
-
Haga clic en Agregar.
-
Haga clic en Aplicar.
Descripción de la ilustración ACS_Authorization_Policy.jpg
Para probarlo, en un nuevo explorador, acceda al recurso protegido. Se le redirigirá a IdP donde se produce la autenticación.
A continuación, OAM/WebGate inyecta los elementos de respuesta de autorización según los atributos de sesión de OAM (recibidos desde IdP) y la aplicación web protegida los muestra (mi página de prueba muestra una cabecera HTTP como HTTP_NAME
, donde NAME
es el nombre de la cabecera HTTP).
Descripción de la ilustración Authorization_Response.jpg
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Using Fed Attributes- OAM Authorization and HTTP Headers
F61887-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.