Procesamiento de Atributos Entrantes con OAM y SP
Cuando OAM actúa como proveedor de servicios:
-
Valida la respuesta de SSO entrante de IdP
-
Asigna la respuesta SSO a un registro de usuario LDAP
-
Extrae el identificador de usuario y los atributos opcionales contenidos en la respuesta SSO y los almacena en la sesión de OAM.
Estos atributos almacenados en la sesión de OAM se pueden utilizar posteriormente:
-
En Políticas de Autorización, donde las condiciones/reglas evalúan los atributos de la sesión de OAM
-
Como respuestas de política para proporcionar esos atributos a aplicaciones web protegidas por WebGate/OAM, como cabeceras HTTP o cookies
En este artículo se describe cómo se puede configurar OAM que actúa como proveedor de servicios para:
-
Procese los atributos incluidos en una afirmación de SAML entrante o en la respuesta SSO OpenID para asignar los nombres de los atributos entrantes a los nombres locales.
-
Solicitar atributos del OP mediante el protocolo OpenID (SAML no proporciona una forma para que los SP en tiempo de ejecución soliciten atributos de IdP durante una operación SSO de federación)
Visión general
Asignación de nombre de atributo
El principal motivo para procesar atributos entrantes es asignar los nombres de los atributos de la respuesta SSO a los nombres locales, reconocidos por otros componentes locales. Esta función es útil en despliegues de federación, porque los distintos partners remotos a veces utilizan nombres diferentes para hacer referencia al mismo atributo.
Supongamos, por ejemplo, el siguiente caso de uso:
-
IdP1 envía el nombre del usuario como
firstname
en la afirmación de SAML -
IdP2 envía el nombre del usuario como
f_name
en la afirmación de SAML -
Los componentes locales (aplicaciones protegidas, OAM...) esperan hacer referencia al nombre del usuario como
first_name
enruntimeBy
procesando los atributos entrantes, OAM/SP puede asignar:
Al procesar los atributos entrantes, OAM/SP puede asignar:
-
De
firstname
afirst_name
para IdP1 -
De
f_name
afirst_name
para IdP2
Esto permite al consumidor de los datos enviados en los mensajes SAML/OpenID hacer referencia al nombre del usuario solo por el identificador first_name
:
-
Una condición de política de autorización solo hará referencia al nombre de la sesión de OAM mediante
first_name
-
Una respuesta de política hace referencia al nombre de la sesión de OAM mediante
first_name
-
Los objetos de política no tienen en cuenta
firstname
nif_name
utilizados por el IdPs remoto
Atributos de solicitud
El protocolo OpenID 2.0 define una forma para que los partners SP/RP soliciten atributos del IdP/OP en tiempo de ejecución.
OAM/SP proporciona una forma de solicitar atributos del OP OpenID
Perfiles de Atributo
Anteriormente explicamos qué perfiles de atributos de SP estaban en IdP y cómo usarlos:
-
Definen qué atributos se deben enviar a los partners de SP
-
Cómo asignar un nombre a los atributos
-
Cómo definir los valores de esos atributos
-
Si esos atributos siempre se deben enviar o solo cuando se solicitan
En OAM/SP, existe un concepto similar para solicitar atributos y asignar nombres de atributos. El perfil de atributo IdP es una recopilación de reglas que indica a OAM/SP:
-
Qué atributos se deben solicitar en tiempo de ejecución (solo OpenID 2.0)
-
Cómo se deben asignar localmente los nombres de los atributos incluidos en los mensajes SAML/OpenID
Ejemplos
En el resto del artículo se describe cómo configurar OAM/SP para:
-
Asignar nombres de atributos entrantes a nombres locales, mediante la consola de administración de OAM, para un SAML 2.0 remoto IdP
-
Solicitar atributos en tiempo de ejecución y asignar nombres de atributos entrantes a nombres locales, mediante comandos WLST de OAM, para un OP remoto OpenID 2.0
Utilice la aplicación de SP de prueba incluida con OAM/SP para ver cómo se procesan los atributos de la respuesta SSO de SAML/OpenID.
Asignación de Atributos Entrantes
En esta sección se muestra cómo configurar OAM/SP para procesar atributos de SAML 2.0 entrantes a través de la consola de administración. El ejemplo se basa en una federación con un partner SAML 2.0 IdP remoto identificado como AcmeIdP
en OAM/SP:
-
IdP envía Unspecified con el formato NameID
-
El valor NameID contiene el ID de usuario
-
La afirmación contiene los siguientes atributos de SAML
-
Nombre del usuario, identificado por
fname
-
Apellido del usuario, identificado por
surname
-
Dirección de correo electrónico del usuario, identificada por
email
-
OAM/SP se configurará primero para no asignar ningún nombre de atributo y, a continuación, se configurará
-
configurado para asignar
fname
afirstname
-
Asignar
surname
alastname
-
Dejar el correo electrónico tal cual
Para ello, cree un nuevo perfil de atributo IdP y asígnelo a AcmeIdP.
Nota: Si los nuevos partners IdP se incorporan posteriormente y envían los atributos con los mismos nombres, será posible asignar el perfil de atributo IdP existente a esos nuevos socios.
Creación del socio sin reglas de asignación
Antes de configurar OAM/SP para asignar atributos entrantes a nombres locales, realice una prueba de SSO de federación para ver cómo se ven los atributos si OAM/SP no cambia.
En este caso, el partner IdP está enlazado a un perfil de atributo IdP vacío y OAM/SP no modificará los nombres de los atributos entrantes incluidos en la respuesta SSO.
El partner IdP se configura de forma similar a (siendo idp-attribute-profile
el perfil de atributo IdP por defecto, que en nuestra prueba está vacío):
Descripción de la ilustración Create_ID_Partner.jpg
Al utilizar la aplicación Probar SP para realizar una operación SSO de federación con AcmeIdP
, el resultado de la operación muestra que, para el usuario alice, se ha enviado lo siguiente en la afirmación:
-
NameID establecido en formato de dirección de correo electrónico y valor establecido en alice
-
Atributos enviados:
-
email
definido en<alice@oracle.com>
-
fname
definido en Alice -
surname
establecido en Appleton
-
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://adc00peq.us.oracle.com:7499/fed/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="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 cómo OAM/SP ha procesado los atributos. Como no hay reglas de asignación, los nombres de los atributos no se han modificado.
Descripción de la ilustración Federation_SSO.jpg
Creación de reglas de asignación
Para crear un nuevo perfil de atributo IdP, ejecute los siguientes pasos:
-
Vaya a la consola de administración de OAM: http(s)://oam-admin-host:oam-admin-port/oamconsole
-
Vaya a Identity Federation, Administración de proveedores de servicios.
-
Haga clic en el separador Perfiles de atributo de proveedor de identidad.
-
Haga clic en el botón Crear perfil de atributo IdP.
Descripción de la ilustración Create_Mapping_Rules.jpg
Configure la información básica sobre el nuevo perfil de atributo IdP:
-
Introduzca un nombre
-
Introduzca una descripción si es necesario
Nota sobre Ignorar atributos no asignados: si está activada, OAM/SP descarta los atributos de la respuesta SAML/OpenID no definida en este perfil de atributo.
Nota sobre el perfil de atributo de partner IdP por defecto: si se activa, será el perfil de atributo IdP asignado previamente cuando se cree un nuevo partner IdP a través de la interfaz de usuario
- Si se activa, será el perfil de atributo IdP utilizado para los partners IdP que no tengan un perfil de atributo IdP asignado (por ejemplo, los creados mediante comandos WLST)
Descripción de la ilustración Create_Attr_Profile.jpg
Agregue las asignaciones necesarias. Realice las siguientes operaciones para agregar la asignación firstname
:
-
Haga clic en el botón Add Entry de la tabla Attribute Mapping.
-
Configure el atributo de correo electrónico:
-
Nombre de atributo de mensaje:
fname
-
Nombre de atributo de sesión de OAM:
firstname
-
Solicitud del partner: activada (no relevante para SAML)
-
Realice las siguientes operaciones para agregar la asignación de apellidos:
-
Haga clic en el botón Add Entry de la tabla Attribute Mapping.
-
Configure el atributo Name:
-
Nombre de atributo de mensaje:
surname
-
Nombre de atributo de sesión de OAM:
lastname
-
Solicitud del partner: activada (no relevante para SAML)
-
El perfil de atributo IdP se ha configurado para asignar los atributos fname y surname a los nombres locales para los partners IdP enlazados a este perfil.
Nota: No es necesario crear una asignación para el correo electrónico, ya que
-
No queremos cambiar el nombre del atributo
-
Se ha dejado Ignorar atributo no asignado sin marcar. Si esa casilla se hubiera marcado, debemos crear una asignación para el correo electrónico al correo electrónico.
Descripción de la ilustración IdP_Attr_Profile.jpg
El socio IdP se debe actualizar para utilizar el nuevo perfil de atributo IdP:
-
Vaya a la consola de administración de OAM:
http(s)://oam-admin-host:oam-admin-port/oamconsole
-
Vaya a Identity Federation, Administración de proveedores de servicios.
-
Haga clic en Buscar partners de proveedor de identidad.
-
Abra el partner IdP que desee.
-
En la sección Asignación de Atributos, seleccione el perfil de atributo IdP recién creado como perfil de atributo
-
Haga clic en Guardar
Descripción de la ilustración Update_IdP_Attr_Profile.jpg
Probar
Estamos utilizando la aplicación Probar SP de nuevo para realizar una operación SSO de federación con OAM mediante el nuevo perfil de atributo IdP.
La respuesta XML SAML con la afirmación devuelta por IdP sigue siendo la misma:
<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://adc00peq.us.oracle.com:7499/fed/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="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:
-
email
no se ha modificado -
fname
se ha asignado afirstname
-
surname
se ha asignado alastname
Descripción de la ilustración Test_Federation_SSO.jpg
Atributos de solicitud
En esta sección se muestra cómo configurar OAM/SP para solicitar atributos de IdP en tiempo de ejecución mediante los comandos WLST de OAM. El ejemplo se basa en una federación con un partner de IdP/OP remoto OpenID 2.0 y OAM/SP está configurado para:
Solicite los siguientes atributos:
-
Dirección de correo electrónico con el nombre de atributo OpenID definido en
http://axschema.org/contact/email
y el nombre local definido enemail
-
UserID
con el nombre de atributo OpenID definido enhttp://schemas.openid.net/ax/api/user_id
y el nombre local definido enuserid
Para ello, cree un nuevo perfil de atributo IdP y asígnelo a acmeOP
. Más adelante, si se incorporan nuevos partners de OP, se podrá asignar el perfil de atributo IdP existente para que OAM/SP solicite los mismos atributos de esos nuevos IdPs.
Supongamos que ya está en el entorno WLST y conectado mediante:
-
Introduzca el entorno WLST ejecutando:
$IAM_ORACLE_HOME/common/bin/wlst.sh
-
Conéctese al servidor de administración de WLS:
connect()
-
Navegue a la rama Domain Runtime:
domainRuntime()
Pasos
Para configurar el nuevo perfil de atributo IdP, ejecute los siguientes pasos:
-
Crear un nuevo perfil de atributo de proveedor de servicios
createIdPPartnerAttributeProfile("openIDAttrProfile")
-
Especifique el nombre del nuevo perfil de atributo IdP
-
Crear la asignación para el atributo de correo electrónico y solicitarlo en tiempo de ejecución
setIdPPartnerAttributeProfileEntry("openIDAttrProfile", "http://axschema.org/contact/email", "email", requestFromIdP="true")
-
Especifique el nombre del perfil de atributo IdP que desea modificar
-
Especifique el nombre del atributo OpenID en
http://axschema.org/contact/email
-
Especifique el nombre local del atributo:
email
-
Indique que OAM/SP debe solicitarlo en tiempo de ejecución:
requestFromIdP="true"
-
Crear la asignación para el atributo de correo electrónico y solicitarlo en tiempo de ejecución
setIdPPartnerAttributeProfileEntry("openIDAttrProfile", "http://schemas.openid.net/ax/api/user_id", "userid", requestFromIdP="true")
-
Especifique el nombre del perfil de atributo IdP que desea modificar
-
Especifique el nombre del atributo OpenID en
http://schemas.openid.net/ax/api/user_id
-
Especifique el nombre local del atributo:
userid
-
Indique que OAM/SP debe solicitarlo en tiempo de ejecución:
requestFromIdP="true"
Para actualizar el partner IdP para utilizar ese perfil de atributo IdP, ejecute:
-
Comando
setIdPPartnerAttributeProfile
:setIdPPartnerAttributeProfile("acmeOP", "openIDAttrProfile")
Especifique el nombre del partner IdP -
Especifique el nombre del perfil de atributo IdP que se va a utilizar
OpenID Respuesta
La respuesta OpenID generada por el IdP remoto para alice/alice@oracle.com
será:
https://acme.com/oam/server/fed/sp/sso?reEd=id-TEMxjNN7SEdYWowvioAuTAx7UPuKAUsj-NPWLSUf&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=http%3A%2F%2Fadc00peq.us.oracle.com%3A7499%2Ffed%2Fidp%2Fopenidv20&openid.claimed_id=http%3A%2F%2Fadc00peq.us.oracle.com%3A7499%2Ffed%2Fidp%2Fopenidv20%3Fid%3Did-YxEgHp7b49OrDy9dJP4BWrwbNUQ-&openid.identity=http%3A%2F%2Fadc00peq.us.oracle.com%3A7499%2Ffed%2Fidp%2Fopenidv20%3Fid%3Did-YxEgHp7b49OrDy9dJP4BWrwbNUQ-&openid.return_to=http%3A%2F%2Fadc00pcc.us.oracle.com%3A23002%2Foam%2Fserver%2Ffed%2Fsp%2Fsso%3FreEd%3DidTEMxjNN7SEdYWowvioAuTAx7UPuKAUsj-NPWLSUf&openid.response_nonce=2014-03-07T22%3A22%3A24Zid-8PQjU4IXHX6inl35bHEFws1Yv-8-&openid.assoc_handle=id-Iek3nx7-n2LldOPeooa4auWKC4-&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ax.mode=fetch_response&openid.ax.type.attr0=http%3A%2F%2Fschemas.openid.net%2Fax%2Fapi%2Fuser_id&openid.ax.value.attr0=alice&openid.ax.type.attr1=http%3A%2F%2Faxschema.org%2Fcontact%2Femail&openid.ax.value.attr1=alice%40oracle.com&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle%2Cns.ax%2Cax.mode%2Cax.type.attr0%2Caopenid.sig=JBPLV5nDISw4qeWv8Yv4iPGJ6Y8%3D
Los parámetros de consulta de URL descodificados relacionados con los atributos son:
-
Nombre del atributo #0:
openid.ax.type.attr0= http://schemas.openid.net/ax/api/user_id
-
Valor para el atributo #0:
openid.ax.value.attr0=alice
-
Nombre del atributo no 1:
openid.ax.type.attr1= http://axschema.org/contact/email
-
Valor para el atributo no 1:
openid.ax.value.attr1=alice@oracle.com
La página Probar SP muestra diferentes resultados, ya que OAM/SP ha procesado los atributos según las reglas en las que:
-
http://schemas.openid.net/ax/api/user_id
se ha asignado auserid
-
http://axschema.org/contact/email
se ha asignado al correo electrónico
Descripción de la ilustración OpenID_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.
Processing Incoming Attributes with OAM and SP
F61883-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.