Provisionamiento de Usuarios de JIT en OAM y SP
En este artículo se describe cómo agregar el aprovisionamiento de usuarios a OAM/SP, lo que permite al servidor crear un registro de usuario sobre la marcha durante SSO de federación, si el usuario aún no tiene una cuenta.
Durante una operación de SSO de federación, OAM/SP valida la respuesta de SSO entrante (SAML o OpenID) e intenta asignarla a un registro de usuario de LDAP local según la información contenida en la respuesta de SSO (normalmente atributos de usuario):
-
Si la asignación devuelve un único registro de usuario, la operación es correcta y se crea una sesión de OAM para ese registro de usuario
-
Si la asignación devuelve varios registros LDAP, la operación es un fallo no recuperable:
- La configuración de asignación es incorrecta
- O hay registros de usuario LDAP no válidos en el directorio
-
Si la asignación no devuelve ningún registro, significa que:
-
La configuración de asignación es incorrecta
-
O la configuración es correcta, pero el usuario no tiene un registro en el directorio local. En este caso, OAM/SP se puede configurar para crear automáticamente un registro de usuario LDAP basado en los datos incluidos en la respuesta SSO y garantizar que las siguientes operaciones de asignación de SSO de federación para ese usuario se asignan al mismo registro de usuario LDAP nuevo
OAM/SP valida la respuesta de SSO, procesa los atributos mediante reglas definidas en el perfil de atributo IdP para el partner IdP y, si es necesario, llama al módulo de aprovisionamiento de usuarios configurado en OAM/SP:
-
El módulo de provisionamiento de usuario incluido
-
O una implantación personalizada de un módulo de provisionamiento de usuarios
Después de la llamada del módulo de provisionamiento de usuarios (por defecto o personalizado), el servidor crea una sesión para el usuario. Las operaciones de SSO de federación posteriores para el mismo usuario dan como resultado la asignación de OAM/SP de la respuesta de SSO a ese registro LDAP recién creado.
Módulo de aprovisionamiento de usuario incorporado
El módulo de aprovisionamiento de usuarios incorporado permite crear un registro de usuario en el directorio LDAP cuando falla la asignación:
-
Mediante el almacén de identidades especificado en la entrada de partner IdP o el almacén de identidades de OAM por defecto si no se especifica ninguno
-
Mediante el DN de base de usuario especificado en la entrada de partner IdP o el DN de base de usuario para el almacén de identidades utilizado, si no se especifica ninguno
-
Creación de un registro de usuario con
userID
basado en un atributo incluido en la respuesta SSO de SAML/OpenID: -
La configuración del módulo de aprovisionamiento de usuarios indica qué atributo utilizar como
userID
(por ejemplo, foo). -
El módulo intenta localizar ese atributo en la lista de atributos de la respuesta de SSO después de que esos atributos fueron procesados por el perfil de atributo IdP (por ejemplo, el módulo busca el atributo foo en la lista de atributos procesados de la respuesta de SSO)
-
Si el atributo no está en la lista de atributos de la respuesta de SSO, el módulo evalúa la regla de asignación especificada en la entrada de partner IdP: si la regla de asignación utiliza el atributo
userID
, utiliza los datos asignados comouserID
(por ejemplo, si la afirmación de SAML se ha asignado mediante NameID a un registro de usuario de LDAP mediante el atributo LDAP foo, el módulo utiliza el valor NameID comouserID
) -
O bien, la configuración del módulo de aprovisionamiento de usuarios no indica qué atributo utilizar como
userID
o si el atributouserID
no se ha podido determinar siguiendo el flujo anterior, el módulo consulta la configuración del almacén de identidades para determinar el atributo userID (por ejemplo, uid) y sigue el proceso indicado anteriormente. -
El módulo intenta localizar ese atributo en la lista de atributos de la respuesta de SSO después de que el perfil de atributo IdP haya procesado esos atributos (por ejemplo, el módulo busca el atributo uid en la lista de atributos procesados de la respuesta de SSO)
-
Si el atributo no está en la lista de atributos de la respuesta de SSO, el módulo evalúa la regla de asignación especificada en la entrada de partner IdP. Si la regla de asignación utiliza el atributo
userID
, utiliza los datos asignados comouserID
(por ejemplo, si la afirmación de SAML se ha asignado mediante NameID a un registro de usuario de LDAP mediante el atributo LDAP uid, el módulo utiliza el valor NameID comouserID
) -
Si el atributo
userID
aún no se pudo determinar (porque uid no está en la lista de atributos enviados por IdP, por ejemplo), el módulo intenta utilizar el valor NameID comouserID
. -
Si está presente, lo utiliza
-
De lo contrario, se devuelve un error porque el módulo de aprovisionamiento de usuarios no puede seleccionar un valor
userID
.
Nota importante: el algoritmo anterior es un poco complejo, pero permite a un administrador
-
Para probar el aprovisionamiento de usuarios en un POC sin tener que realizar varios pasos de configuración, así como para configurar el módulo de aprovisionamiento de usuarios según las necesidades del administrador.
-
Una vez creado el registro de usuario, el módulo de aprovisionamiento de usuarios define los atributos del registro de usuario en función de:
-
Lista de atributos que se deben definir: esto se indica mediante la configuración del módulo definida por el administrador, que dicta la lista de atributos de la respuesta SSO para definir
-
Los atributos mostrados en la regla de asignación: los atributos mostrados en la regla de asignación de la entrada de partner IdP se definen automáticamente en el registro de usuario de LDAP, para garantizar que la asignación funciona la próxima vez que el usuario con una respuesta de SSO idéntica realiza SSO de federación con OAM/SP.
Activación del aprovisionamiento de usuarios en OAM/SP
Realice los siguientes pasos para activar/desactivar el aprovisionamiento de usuarios en OAM/SP:
-
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()
-
Actualice la propiedad
userprovisioningenabled
a: -
Activar el aprovisionamiento de usuarios en OAM/SP:
putBooleanProperty("/fedserverconNg /userprovisioningenabled", "true")
-
Desactivar aprovisionamiento de usuarios en OAM/SP:
putBooleanProperty("/fedserverconNg /userprovisioningenabled", "false")
- Salga del entorno WLST: exit()
Prueba de configuración
Utilice la misma configuración de federación de SAML 2.0 configurada anteriormente, 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 enfirst name
del usuario -
surname
definido enlast name
del usuario -
title
definido enlast job title
del usuario
-
-
-
OAM/SP configurado con un perfil de atributo IdP en
-
Asignar
fname
agivenname
-
Asignar
surname
asn
-
Asignar
email
amail
-
El usuario alice se utiliza en IdP, mientras que no existe ninguna cuenta de usuario para alice en OAM/SP:
userID
: aliciaemail
: alice@oracle.comfirst name
: Alicelast name
: Appletontitle
: mánager
-
Durante un SSO de federación de SAML 2.0 con el partner remoto IdP, la respuesta de SAML XML con la afirmación devuelta por IdP sería:
<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</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>
El resultado del procesamiento de la afirmación SAML 2.0 por OAM/SP muestra los atributos transformados y NameID
Descripción de la ilustración Operation_Result.jpg
Casos de Prueba
Los casos de prueba muestran diferentes configuraciones para el módulo de aprovisionamiento de usuarios, con el usuario no existente en OAM/SP antes de cada prueba:
Caso de uso n.o 1:
-
No hay ninguna configuración de módulo de aprovisionamiento de usuario
-
La regla de asignación se realiza mediante NameID al atributo LDAP
uid
Caso de uso n.o 2:
-
No hay ninguna configuración de módulo de aprovisionamiento de usuario
-
La regla de asignación se realiza mediante el correo de atributo de SAML al atributo de correo LDAP
Caso de uso n.o 3:
-
La regla de asignación se realiza mediante NameID al atributo LDAP
uid
-
Módulo de aprovisionamiento de usuarios configurado para definir los atributos
givenname
,sn
y mail
Caso de uso n.o 4:
-
La regla de asignación se realiza mediante el correo de atributo de SAML al atributo de correo LDAP
-
Módulo de aprovisionamiento de usuarios configurado para utilizar
givenname
comouserID
Caso de uso n.o 5:
-
La regla de asignación se realiza mediante el correo de atributo de SAML al atributo de correo LDAP
-
Módulo de aprovisionamiento de usuarios configurado para utilizar NameID como
userID
-
Defina los atributos
givenname
ysn
Después de cada operación de SSO de federación, imprima el registro de usuario LDAP del usuario creado y, a continuación, suprima ese registro antes de la siguiente prueba.
Nota importante: el perfil de atributo IdP debe asignar los nombres de atributo de SAML entrante a los nombres de atributo que se utilizan en el directorio LDAP. Por este motivo, en nuestro perfil de atributo IdP de prueba,
fname
se asigna agivenname
. El plugin de aprovisionamiento de usuarios incorporado toma los nombres de atributo de la lista de atributos procesados y los agrega tal cual al registro de usuario LDAP (si se ha configurado para ello): no hay ninguna asignación de nombre de atributo adicional.
Caso de uso no 1
En este caso de uso, la configuración es tal que:
-
No hay ninguna configuración de módulo de aprovisionamiento de usuario
-
La regla de asignación se realiza mediante NameID al atributo LDAP
uid
Después de SSO de federación, se ha creado el registro de usuario para alice:
dn: uid=alice,ou=users,dc=us,dc=oracle,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: alice
cn: alice
sn: alice
El registro de usuario de LDAP tiene las siguientes características:
-
Identificador de Usuario
:-
No hay ninguna configuración de módulo de provisionamiento de usuario
-
El módulo de aprovisionamiento de usuarios ha comprobado si el almacén de identidades de usuario
UserID
(uid
en la prueba) era un atributo enviado por IdP: este no era el caso -
El módulo de aprovisionamiento de usuarios ha utilizado NameID como
userID
(que se almacena en el atributouid
de LDAP):uid
se ha definido en alice
-
-
Atributos Adicionales:
-
El módulo Provisionamiento de usuarios define los atributos que se han utilizado en la regla de asignación: NameID se ha asignado a
uid
. Este atributo ya se ha definido (comouserID
). -
cn
ysn
son atributos obligatorios según el esquema LDAP utilizado en esta prueba y, si no se especifica explícitamente,userID
se utiliza para rellenar esos atributos
-
Caso de uso no 2
En este caso de uso, la configuración es tal que:
-
No hay ninguna configuración de módulo de aprovisionamiento de usuario
-
La regla de asignación se realiza mediante el correo de atributo de SAML al atributo de correo LDAP
Después de SSO de federación, se ha creado el registro de usuario para alice:
dn: uid=alice,ou=users,dc=us,dc=oracle,dc=com
mail: alice@oracle.com
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
uid: alice
cn: alice
sn: alice
El registro de usuario de LDAP tiene las siguientes características:
-
Identificador de Usuario
:-
No hay ninguna configuración de módulo de provisionamiento de usuario
-
El módulo de aprovisionamiento de usuarios ha comprobado si el almacén de identidades de usuario
UserID
(uid
en la prueba) era un atributo enviado por IdP: este no era el caso -
El módulo de aprovisionamiento de usuarios ha utilizado NameID como
userID
(que se almacena en el atributouid
de LDAP):uid
se ha definido en alice
-
-
Atributos Adicionales:
-
El módulo Provisionamiento de Usuarios define los atributos que se han utilizado en la regla de asignación: el atributo de correo electrónico de la afirmación de SAML se ha asignado al correo. El atributo de correo se ha definido en
alice@oracle.com
-
cn
ysn
son atributos obligatorios según el esquema LDAP utilizado en esta prueba y, si no se especifica explícitamente,userID
se utiliza para rellenar esos atributos
-
Caso de uso n.o 3
En este caso de uso, la configuración es tal que:
-
La regla de asignación se realiza mediante NameID al atributo LDAP
uid
-
Módulo de aprovisionamiento de usuarios configurado para definir los atributos
givenname
,sn
ymail
.
Para ello, 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, Plugins.
-
Seleccione FedUserProvisioningPlugin.
-
En el campo KEY_USER_RECORD_ATTRIBUTE_LIST, introduzca
givenname
,sn
y el correo como una lista separada por comas sin espacios:givenname
,sn
,mail
-
Haga clic en Guardar
Descripción de la ilustración Plug_ins_Screen.jpg
Después de SSO de federación, se crea el registro de usuario para alice:
dn: uid=alice,ou=users,dc=us,dc=oracle,dc=com
mail: alice@oracle.com
givenName: Alice
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
uid: alice
cn: alice
sn: alice
sn: Appleton
El registro de usuario de LDAP tiene las siguientes características:
-
Identificador de Usuario
:-
No hay ninguna configuración de módulo de provisionamiento de usuario para
userID
-
El módulo de aprovisionamiento de usuarios ha comprobado si el almacén de identidades de usuario
UserID
(uid
en la prueba) era un atributo enviado por IdP: este no era el caso -
El módulo de aprovisionamiento de usuarios ha utilizado NameID como
userID
(que se almacena en el atributouid
de LDAP):uid
se ha definido en alice
-
-
Atributos Adicionales:
-
El módulo Provisionamiento de usuarios define los atributos que se han utilizado en la regla de asignación: NameID se ha asignado a
uid
. Este atributo ya se ha definido (comouserID
). -
El módulo de aprovisionamiento de usuarios ha recuperado los atributos
givenname
,sn
y mail de la lista de atributos procesados y los ha definido en el registro de usuario LDAP. -
cn
es un atributo obligatorio según el esquema LDAP utilizado en esta prueba y, si no se especifica de forma explícita,userID
se utiliza para rellenar ese atributo
-
Caso de uso no 4
En este caso de uso, la configuración es tal que:
-
La regla de asignación se realiza mediante el correo de atributo de SAML al atributo de correo LDAP
-
Módulo de aprovisionamiento de usuarios configurado para utilizar
givenname
comouserID
Para ello, 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, Plugins.
-
Seleccione FedUserProvisioningPlugin.
-
Defina el campo
KEY_USER_RECORD_ATTRIBUTE_LIST
en un valor en blanco -
Defina el campo
KEY_USERID_ATTRIBUTE_NAME
engivenname
-
Haga clic en Guardar
Descripción de la ilustración Access_mngt.jpg
Después de SSO de federación, se crea el registro de usuario para alice:
dn: uid=Alice,ou=users,dc=us,dc=oracle,dc=com
mail: alice@oracle.com
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
uid: Alice
cn: Alice
sn: Alice
El registro de usuario de LDAP tiene las siguientes características:
-
Identificador de Usuario
:- El módulo de aprovisionamiento de usuarios se ha configurado para utilizar
givenname
comouserID
- El módulo de aprovisionamiento de usuarios se ha configurado para utilizar
-
Atributos Adicionales:
-
El módulo Provisionamiento de Usuarios define los atributos que se han utilizado en la regla de asignación: el atributo de correo electrónico de la afirmación de SAML se ha asignado al correo. El atributo de correo se ha definido en
alice@oracle.com
. -
cn
ysn
son atributos obligatorios según el esquema LDAP utilizado en esta prueba y, si no se especifica explícitamente,userID
se utiliza para rellenar esos atributos
-
Caso de uso n.o 5
En este caso de uso, la configuración es tal que:
-
La regla de asignación se realiza mediante el correo de atributo de SAML al atributo de correo LDAP
-
Módulo de aprovisionamiento de usuarios configurado para
-
Utilice NameID como
userID
-
Defina los atributos
givenname
ysn
-
Para ello, 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, Plugins.
-
Seleccione FedUserProvisioningPlugin.
-
Defina el campo
KEY_USER_RECORD_ATTRIBUTE_LIST
en (lista separada por comas sin espacios):givenname
,sn
-
Defina el campo
KEY_USERID_ATTRIBUTE_NAME
enfed.nameidvalue
, que es el nombre del atributo para el valor NameID. -
Haga clic en Guardar
Descripción de la ilustración Access_mngt_nameID_Value.jpg
Después de SSO de federación, se crea el registro de usuario para alice:
dn: uid=alice,ou=users,dc=us,dc=oracle,dc=com
mail: alice@oracle.com
givenName: Alice
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
uid: alice
cn: alice
sn: alice
sn: Appleton
El registro de usuario de LDAP tiene las siguientes características:
-
Identificador de Usuario:
- El módulo de aprovisionamiento de usuarios se ha configurado para utilizar el valor NameID (
fed.nameidvalue
) comouserID
- El módulo de aprovisionamiento de usuarios se ha configurado para utilizar el valor NameID (
-
Atributos Adicionales:
-
El módulo Provisionamiento de Usuarios define los atributos que se han utilizado en la regla de asignación: el atributo de correo electrónico de la afirmación de SAML se ha asignado al correo. El atributo de correo se ha definido en alice@oracle.com.
-
El módulo de aprovisionamiento de usuarios ha recuperado los atributos
givenname
ysn
de la lista de atributos procesados y los ha definido en el registro de usuario LDAP. -
cn
es un atributo obligatorio según el esquema LDAP utilizado en esta prueba y, si no se especifica de forma explícita,userID
se utiliza para rellenar ese atributo
-
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.
JIT User Provisioning in OAM and SP
F61369-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.