Configuración del aprovisionamiento de JIT de SAML
El aprovisionamiento just in time (JIT) de SAML automatiza la creación de cuentas de usuario cuando el usuario intenta realizar el SSO por primera vez y el usuario aún no existe en el dominio de identidad. Además de la creación automática de usuarios, el aprovisionamiento de JIT de SAML permite otorgar y revocar afiliaciones de grupos como parte del aprovisionamiento. El aprovisionamiento de JIT de SAML se puede configurar para actualizar los usuarios aprovisionados de modo que los atributos de usuarios en el almacén del proveedor de servicio (SP) se puedan mantener sincronizados con los atributos del almacén de usuarios del Proveedor de identidad (IdP).
Al configurar el aprovisionamiento de JIT de SAML, defina cómo se utilizarán los datos de usuario enviados por el IdP de SAML para crear y/o actualizar usuarios en el dominio de identidad. En primer lugar, cree y configure un SAML IdP para SSO federado y, a continuación, active y configure las opciones de aprovisionamiento de JIT de SAML para ese IdP.
El aprovisionamiento de JIT para SAML solo se puede configurar mediante el punto final /admin/v1/IdentityProviders de API REST.
Propiedad IdentityProvider |
Descripción | Ejemplo de JSON |
|---|---|---|
jitUserProvEnabled |
Propiedad booleana para activar/desactivar la función de aprovisionamiento de JIT de SAML para esta IdP. Si esta propiedad estrue, al menos uno de los valores jitUserProvCreateUserEnabled o jitUserProvAttributeUpdateEnabled también debe ser true. |
|
jitUserProvCreateUserEnabled |
Propiedad booleana que indica si se debe crear un usuario, en función de la afirmación entrante, si el usuario aún no existe. Por defecto, los usuarios creados mediante el aprovisionamiento de JIT de SAML son usuarios "federados". Los usuarios federados no tienen credenciales para conectarse directamente al dominio de identidad, sino que deben ser autenticados por el proveedor de identidad externo. El estado federado de un usuario se puede cambiar mediante la consola de administración y mediante la actualización del atributo |
|
jitUserProvAttributeUpdateEnabled |
Propiedad booleana que indica si los atributos del usuario se deben actualizar, en función de la afirmación entrante, si el usuario ya existe. |
|
jitUserProvAttributes |
Se trata de una referencia a un objeto Consulte a continuación los detalles del uso de |
|
jitUserProvGroupAssertionAttributeEnabled |
Propiedad booleana que indica si las afiliaciones a grupos se deben asignar al usuario en función de una lista de nombres de grupo recibidos de IdP en un atributo SAML. Si esta propiedad es |
|
jitUserProvGroupMappingMode |
Propiedad de cadena que controla cómo se asignan los grupos en IdP a los del dominio de identidad. El valor debe ser uno de los siguientes: explicit: los grupos IdP se asignan explícitamente a los grupos del dominio de identidad mediante la propiedad de configuración implícito: los nombres de grupo de la afirmación de SAML deben coincidir con los nombres de grupo del dominio de identidad. El valor predeterminado es explicit si no se especifica ningún valor. |
|
jitUserProvGroupMappings |
Matriz de asignaciones entre grupos en la afirmación IdP y grupos en el dominio de identidad. Cada objeto de la matriz representa una asignación entre un grupo IdP y un grupo de dominios de identidad.
El número máximo de asignaciones de grupo por IdP es 250. Nota: Al utilizar el aprovisionamiento Just-In-Time (JIT) de SAML con la asignación de grupos para asignar o eliminar permisos de grupo para un usuario, tenga en cuenta que los cambios en la pertenencia al grupo pueden no reflejarse inmediatamente. Esto se debe a la consistencia eventual, especialmente al acceder a funciones que se basan en el plano de datos de identidad, como la consola de OCI. Como resultado, puede haber un retraso antes de que las asignaciones o eliminaciones de usuarios se propaguen por completo a los grupos relevantes. Los tiempos de propagación pueden ser más largos para escenarios entre regiones. |
|
jitUserProvGroupSAMLAttributeName |
Nombre del atributo de afirmación de SAML que contendrá los grupos que se asignarán al usuario, si la propiedad El atributo de afirmación puede incluir:
|
|
jitUserProvGroupStaticListEnabled |
Propiedad booleana que indica si las afiliaciones a grupos se deben asignar al usuario en función de una lista estática de nombres de grupos. Si esta propiedad es |
|
jitUserProvAssignedGroups |
Matriz de grupos que se asignarán al usuario, además de los valores recibidos en la afirmación de SAML, si la propiedad Nota: Los valores definidos en esta matriz son ID de grupo (no nombres de grupo). |
|
jitUserProvGroupAssignmentMethod |
Propiedad String que controla cómo se asignarán las afiliaciones a grupos al usuario en el dominio de identidad. El valor debe ser uno de los siguientes:
|
|
jitUserProvIgnoreErrorOnAbsentGroups |
Propiedad booleana que determina la acción que se debe realizar cuando el atributo de afirmación entrante especifica un grupo que no existe o un grupo para el que no existe una asignación de grupo en el dominio de identidad. Si esta propiedad es verdadera, el grupo que falta se ignora y se crea el usuario. Si esta propiedad es false y se especifica un grupo inexistente, la creación del usuario fallará. El valor predeterminado es true para el modo explicit y false para el modo implicit especificado mediante |
|
Configuración de la asignación jitUserProvAttributes
Después de crear IdentityProvider y de configurar los atributos de aprovisionamiento de JIT de SAML según sea necesario, se debe actualizar el recurso jitUserProvAttributes para agregar las asignaciones de atributos de entrada. El recurso MappedAttributes, al que hace referencia jitUserProvAttributes, se crea y suprime automáticamente con el recurso IdentityProvider y esta propiedad se marca como inmutable. Las asignaciones de atributos de aprovisionamiento de JIT de SAML se configuran mediante la actualización del objeto MappedAttributes existente, no mediante su sustitución.
MappedAttributes que utiliza el aprovisionamiento de JIT de SAML.Propiedad MappedAttributes |
Descripción | Ejemplos de JSON |
|---|---|---|
attributeMappings |
Lista de asignaciones entre los atributos de afirmación de SAML y los atributos de usuario del dominio de identidad. Cada asignación consta de:
Nota: Los nombres de atributo de afirmación de SAML son sensibles a mayúsculas/minúsculas. |
|
refResourceType |
Nombre del recurso que está utilizando/tiene una referencia a este atributo asignado (siempre |
|
idcsResourceType |
Tipo del recurso de dominio de identidad al que estamos asignando (siempre |
|
direction |
Dirección de la asignación, con respecto al recurso de dominio de identidad en cuestión (siempre |
|
refResourceID |
ID del recurso |
|
Para actualizar las asignaciones de atributos, primero debe identificar el recurso MappedAttributes correcto para IdP. Para ello, se puede recuperar el recurso IdentityProvider y consultar el atributo $ref de la propiedad jitUserProvAttributes.
Por ejemplo, puede tener un recurso MappedAttributes, como https://<domainURL>/admin/v1/MappedAttributes/6533d475754845a8b0e971c48b87edda, que, a continuación, debería aplicar PATCH para actualizar su propiedad attributeMappings.
Carga útil de PATCH de muestra para MappedAttributes
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
], "Operations": [
{
"op": "replace",
"path": "attributeMappings",
"value": [
{
"managedObjectAttributeName": "$(assertion.mail)",
"idcsAttributeName": "userName"
},
{
"managedObjectAttributeName": "$(assertion.firstname)",
"idcsAttributeName": "name.givenName"
},
{
"managedObjectAttributeName": "$(assertion.lastname)",
"idcsAttributeName": "name.familyName"
},
{
"managedObjectAttributeName": "$(assertion.mail)",
"idcsAttributeName": "emails[primary eq true and type eq \"work\"].value"
}
]
}
]
}
Uso y Comportamiento de Tiempo de Ejecución de Asignación de Atributos de Provisionamiento de JIT de SAML
Si los valores para userName, name.givenName y name.familyName no están presentes, se produce un error en tiempo de ejecución, ya que esos atributos se marcan como necesarios en el esquema User. Lo mismo ocurre con la dirección de correo electrónico principal, a menos que el inquilino se haya configurado para que sea opcional.
En tiempo de ejecución, si algún valor de atributo de afirmación no se puede convertir en un tipo de datos que se puede asignar al atributo de usuario al que está asignado, se producirá un error y SSO fallará.
Si se configuran varias asignaciones de atributos con el mismo atributo de usuario de dominios de identidad, se evalúan y ejecutan en orden de posición y solo se retiene el resultado de la última asignación.
Un atributo de afirmación entrante que no contenga valores provocará la eliminación del valor del atributo de usuario de los dominios de identidad asignados correspondientes, si jitUserProvAttributeUpdateEnabled es true.
${assertion.fed.issuerid)$(assertion.fed.nameidvalue)
- Atributos confidenciales: es decir, atributos marcados como
"idcsSensitive: hash"o"idcsSensitive: encrypt"en el esquema - Atributos que están marcados como
"idcsInternal: true"en el esquema - Atributos que son readOnly
- Todos los atributos que la sincronización de usuario no permite
Cuando se crea un usuario mediante el aprovisionamiento de JIT de SAML, se definirán los siguientes atributos. Estos atributos no se pueden configurar:
bypassNotification : true: por ejemplo, no se enviará un correo electrónico de activación de cuenta al usuario recién creado.syncedFromApp: referencia al recurso de proveedor de identidad correspondiente al emisor de la afirmación de SAML entrante.
isFederatedUser se define en true por defecto. Este comportamiento se puede cambiar definiendo el atributo isFederatedUser en false en la configuración de attributeMappings de aprovisionamiento de JIT de SAML.Este comportamiento por defecto (
isFederatedUser = true) se aplica solo a la creación de usuarios, no a la actualización de usuarios; la configuración attributeMappings se aplica tanto a la creación de usuarios como a la actualización de usuarios.Preguntas frecuentes
P: ¿Es obligatorio que los grupos estén presentes en los dominios de identidad para actualizar la pertenencia al grupo durante el aprovisionamiento de JIT de SAML?
Respuesta: sí. Los grupos se deben sincronizar o crear manualmente en los dominios de identidad antes de actualizar la pertenencia al grupo. El aprovisionamiento de JIT de SAML no creará grupos sobre la marcha.
P: ¿Puedo asignar un literal en la asignación de atributos? Por ejemplo, ¿desea asignar isFederatedUser = true durante la creación del usuario?
Respuesta: sí.
P: ¿Soportamos atributos de varios valores en la asignación de atributos? En caso afirmativo, ¿se aplica un parche a la carga útil o se realiza una sustitución?
Respuesta: sí. Todos los valores del atributo de usuario del dominio de identidad se sustituyen por el resultado neto de la asignación de atributos de aprovisionamiento de JIT de SAML.
P: Si se elimina un usuario de un grupo en IdP, ¿cómo lo gestionamos? ¿Qué ocurre si ese grupo se asigna manualmente en los dominios de identidad? ¿Podemos configurar el comportamiento de sustitución frente a parche?
R: La asignación de grupo mediante la actualización de aprovisionamiento de JIT de SAML se puede configurar para que tenga un comportamiento de fusión o sobrescritura, para las asignaciones de grupo del usuario en general. Por ejemplo, si la actualización está configurada para sobrescribir, cualquier asignación de grupo manual que no aparezca en la afirmación IdP se eliminará.
P: ¿Podemos configurar el aprovisionamiento de JIT de SAML para que se produzca solo durante la creación del usuario, pero no para actualizar el usuario más tarde?
Respuesta: sí. Si jitUserProvCreateUserEnabled es verdadero y jitUserProvAttributeUpdateEnabled es falso, el aprovisionamiento de JIT de SAML creará usuarios si faltan, pero no los actualizará en los inicios de sesión posteriores.