Proveedores de sesiones de inicio de sesión único en Azure Active Directory B2C
En el artículo Configuración del comportamiento de la sesión en Azure Active Directory B2C, se describe la administración de sesiones para una directiva personalizada de Azure AD B2C. En este artículo se describe la configuración adicional del comportamiento del inicio de sesión único (SSO) de cualquier perfil técnico individual dentro de una directiva personalizada.
Por ejemplo, supongamos que configura la directiva para el inicio de sesión único en todo el inquilino, pero le gustaría realizar siempre el paso multifactor independientemente de que haya una sesión de SSO activa. Para lograr este comportamiento, puede configurar el proveedor de sesiones del perfil técnico multifactor.
Puede aplicar los proveedores de sesiones a dos flujos:
- Inicio de sesión nuevo
- Cuando el usuario inicia sesión por primera vez, no hay ninguna sesión. Los perfiles técnicos que usan un proveedor de sesiones se convierten en participantes de la sesión.
- El proveedor de sesiones puede escribir notificaciones en la cookie de sesión.
- Inicios de sesión posteriores
- Cuando el usuario tiene una sesión activa, las notificaciones que forman parte de la cookie de sesión se leen en la cesta de notificaciones.
- Las notificaciones que forman parte de la cookie de sesión no se pueden actualizar.
- El proveedor de sesiones puede emitir notificaciones adicionales en la cesta de notificaciones, lo que indica que este perfil técnico se ejecutó en condiciones de SSO.
- El perfil técnico se puede omitir.
En función del proveedor de administración de sesiones elegido para un perfil técnico determinado, el comportamiento de la sesión puede estar activo o suprimido. En la lista siguiente se presentan algunos de los muchos ejemplos posibles mediante proveedores de sesiones:
- Impida o exija las interrupciones de la interfaz de usuario durante los inicios de sesión (SSO) posteriores.
- Recuerde el proveedor de identidades elegido durante los inicios de sesión (SSO) posteriores.
- Reduzca el número de operaciones de lectura en el directorio durante los inicios de sesión (SSO) posteriores.
- Haga un seguimiento de las sesiones del proveedor de identidades sociales para realizar el cierre de sesión del proveedor de identidades.
- Haga un seguimiento de las aplicaciones de usuario de confianza conectadas para el inicio de sesión único.
Proveedores de sesión
Hay cinco proveedores de sesiones disponibles para administrar la manera en que un perfil técnico controla la sesión de SSO. Debe elegir el proveedor de sesiones más adecuado al configurar el perfil técnico.
En la tabla siguiente se muestra qué proveedor de sesiones se va a usar en función del tipo de perfil técnico que quiera administrar. Algunos proveedores de sesiones permiten leer y escribir notificaciones en la cookie de sesión.
Proveedor de sesión | Tipos de perfil técnico aplicables | Propósito | Escribir notificaciones | Leer notificaciones |
---|---|---|---|---|
DefaultSSOSessionProvider | Autoafirmado, Microsoft Entra ID, Autenticación multifactor de Microsoft Entra, Transformación de notificaciones | Omite la ejecución del perfil técnico. | Sí | Sí |
ExternalLoginSSOSessionProvider | Proveedor de identidades de OAuth1, proveedor de identidades de Oauth2, proveedor de identidades de OpenID Connect, proveedor de identidades de SAML | Acelera la página de selección del proveedor de identidades. Realizar un cierre de sesión único. | Sí | Sí |
OAuthSSOSessionProvider | Emisor de tokens JWT | Administra la sesión entre un usuario de confianza de OAuth2 u OpenID Connect y Azure AD B2C. Realiza el cierre de sesión único. | No | No |
SamlSSOSessionProvider | Emisor de tokens SAML | Administra la sesión entre un usuario de confianza de SAML y Azure AD B2C. Realiza el cierre de sesión único. | No | No |
NoopSSOSessionProvider | Any | Suprime todo perfil técnico para que no sea parte de la sesión. | No | No |
En el diagrama siguiente se muestran los tipos de sesión que usa Azure AD B2C.
Referencia a un proveedor de sesiones
Para usar un proveedor de sesiones en el perfil técnico:
Cree un perfil técnico de administración de sesiones adecuado. Tenga en cuenta que el paquete de inicio de Azure AD B2C incluye los perfiles técnicos más comunes de administración de sesiones. Si procede, puede hacer referencia a un perfil técnico de administración de sesiones existente.
En el siguiente fragmento de código XML se muestra el perfil técnico de administración de sesiones
SM-AAD
del paquete de inicio. La sesión proporcionada es de tipoDefaultSSOSessionProvider
.<TechnicalProfile Id="SM-AAD"> <DisplayName>Session Mananagement Provider</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <PersistedClaims> <PersistedClaim ClaimTypeReferenceId="objectId" /> <PersistedClaim ClaimTypeReferenceId="signInName" /> <PersistedClaim ClaimTypeReferenceId="authenticationSource" /> <PersistedClaim ClaimTypeReferenceId="identityProvider" /> <PersistedClaim ClaimTypeReferenceId="newUser" /> <PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" /> </PersistedClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true" /> </OutputClaims> </TechnicalProfile>
Haga referencia al perfil técnico de administración de sesiones dentro de su perfil técnico. Al hacerlo, controla el comportamiento de ese perfil técnico durante los inicios de sesión (SSO) posteriores.
Para hacer referencia a un perfil técnico de administración de sesiones desde el perfil técnico, agregue el elemento
UseTechnicalProfileForSessionManagement
. En el ejemplo siguiente se muestra el uso del perfil técnico de administración de sesionesSM-AAD
. CambieReferenceId
por el identificador del perfil técnico de administración de sesiones.<TechnicalProfile Id="{Technical-profile-ID}"> ... <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" /> </TechnicalProfile>
Importante
Cuando un perfil técnico no hace referencia a ningún proveedor de administración de sesiones, se aplica el proveedor de sesiones DefaultSSOSessionProvider, lo que puede provocar un comportamiento inesperado.
Nota
Durante el flujo de un token de actualización, no se invocan los proveedores de administración de sesiones. Todos los intentos de emitir un nuevo token de acceso son una copia de las notificaciones originales emitidas.
Administración de notificaciones de sesión
Los perfiles técnicos de administración de sesiones controlan qué notificaciones se pueden leer, escribir o generar durante la ejecución de directivas personalizadas.
Dentro del perfil técnico de administración de sesiones, use los elementos PersistedClaims
y OutputClaims
para administrar las notificaciones.
- Notificaciones persistentes: Notificaciones que se pueden escribir en la cookie de sesión.
- Para que una notificación se escriba en la cookie de sesión, debe formar parte de la cesta de notificaciones actual.
- Todas las notificaciones escritas vuelven automáticamente durante los inicios de sesión (SSO) posteriores. No es necesario especificar las notificaciones de salida.
- Notificaciones de salida: Notificaciones adicionales que se pueden generar en la cesta de notificaciones durante los inicios de sesión (SSO) posteriores. Puesto que las notificaciones de salida no se devuelven desde la sesión, debe establecer un valor predeterminado.
Los elementos de notificaciones persistentes y de salida se muestran en el siguiente fragmento de código XML:
<TechnicalProfile Id="SM-AAD">
<DisplayName>Session Management Provider</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<PersistedClaims>
<PersistedClaim ClaimTypeReferenceId="objectId" />
</PersistedClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
</OutputClaims>
</TechnicalProfile>
Los proveedores de administración de sesiones DefaultSSOSessionProvider
y ExternalLoginSSOSessionProvider
se pueden configurar para administrar notificaciones, de modo que durante:
- Inicio de sesión nuevo
- El elemento
PersistedClaims
escriba las notificaciones en la cookie de sesión. Las notificaciones persistentes no se puedan reescribir.
- El elemento
- Inicios de sesión posteriores
- Todas las notificaciones que se escriben en la cookie de sesión se mostrarán en la cesta de notificaciones, disponible para usar en el siguiente paso de orquestación.
- El elemento
OutputClaims
mostrará las notificaciones estáticas en la cesta de notificaciones. Use el atributoDefaultValue
para establecer el valor de la notificación de salida.
DefaultSSOSessionProvider
El proveedor de sesiones DefaultSSOSessionProvider
se puede configurar para administrar notificaciones durante los inicios de sesión (SSO) posteriores y permitir que se omitan los perfiles técnicos. DefaultSSOSessionProvider
debe usarse para conservar y emitir notificaciones que son necesarias para los pasos de orquestación posteriores que no se obtendrán de otro modo durante los inicios de sesión (SSO) posteriores. Por ejemplo, las notificaciones que se pueden obtener al leer el objeto de usuario desde el directorio.
El siguiente perfil técnico SM-AAD
es del tipo de proveedor de sesiones DefaultSSOSessionProvider
. El perfil técnico SM-AAD
se puede encontrar en el paquete de inicio de directivas personalizadas.
<TechnicalProfile Id="SM-AAD">
<DisplayName>Session Management Provider</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<PersistedClaims>
<PersistedClaim ClaimTypeReferenceId="objectId" />
<PersistedClaim ClaimTypeReferenceId="signInName" />
<PersistedClaim ClaimTypeReferenceId="authenticationSource" />
<PersistedClaim ClaimTypeReferenceId="identityProvider" />
<PersistedClaim ClaimTypeReferenceId="newUser" />
<PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" />
</PersistedClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
</OutputClaims>
</TechnicalProfile>
Por ejemplo, el perfil técnico de administración de sesiones SM-AAD
usa el proveedor de sesiones DefaultSSOSessionProvider
. Se comportará como se muestra a continuación cuando se aplique al perfil técnico SelfAsserted-LocalAccountSignin-Email
del paquete de inicio de directivas personalizadas:
- Inicio de sesión nuevo
signInName
Se escribirá en la cookie de sesión, porque el perfil técnico de administración de sesiones (SM-AAD) está configurado consignInName
para conservarse, y el perfil técnico que hace referencia a SM-AAD contiene un elementoOutputClaim
parasignInName
. Este comportamiento es aplicable a todas las notificaciones que cumplen este patrón.
- Inicios de sesión posteriores
- El perfil técnico se omite, y el usuario no verá la página de inicio de sesión.
- La cesta de notificaciones contendrá el valor
signInName
de la cookie de sesión, que se conservó en el inicio de sesión nuevo, y toda otra notificación que cumpliera el patrón para conservarse en la cookie de sesión. - El perfil técnico de administración de sesiones devuelve la notificación
objectIdFromSession
porque las notificacionesOutput
del proveedor de sesiones se procesan durante los inicios de sesión (SSO) posteriores. En este caso, la notificaciónobjectIdFromSession
que está presente en la cesta de notificaciones indica que las notificaciones del usuario vienen de la cookie de sesión debido al inicio de sesión único.
ExternalLoginSSOSessionProvider
El proveedor de sesiones ExternalLoginSSOSessionProvider
se usa para omitir la pantalla de "selección de proveedor de identidades" y cerrar la sesión de un proveedor de identidades federado. Normalmente se le hace referencia en un perfil técnico configurado para un proveedor de identidades federado, como Facebook o Microsoft Entra ID.
- Inicio de sesión nuevo
- El elemento
PersistedClaims
escriba las notificaciones en la cookie de sesión. Las notificaciones persistentes no se puedan reescribir.
- El elemento
- Inicios de sesión posteriores
- Todas las notificaciones que se escriben en la cookie de sesión se mostrarán en la cesta de notificaciones, disponible para usar en el siguiente paso de orquestación.
- El elemento
OutputClaims
mostrará las notificaciones estáticas en la cesta de notificaciones. Use el atributoDefaultValue
para establecer el valor de la notificación. - Cuando un perfil técnico, que hace referencia a un perfil técnico de administración de sesiones, contiene un elemento
OutputClaim
, que se ha conservado en la cookie de sesión, se omitirá este perfil técnico.
El siguiente perfil técnico SM-SocialLogin
es del tipo de proveedor de sesiones ExternalLoginSSOSessionProvider
. El perfil técnico SM-SocialLogin
se puede encontrar en el paquete de inicio de directivas personalizadas.
<TechnicalProfile Id="SM-SocialLogin">
<DisplayName>Session Management Provider</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.ExternalLoginSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<PersistedClaims>
<PersistedClaim ClaimTypeReferenceId="AlternativeSecurityId" />
</PersistedClaims>
</TechnicalProfile>
La notificación AlternativeSecurityId
se genera cuando un usuario inicia sesión con un proveedor de identidades externo. Representa el identificador único del usuario del proveedor de identidades externo. La notificación AlternativeSecurityId
se conserva de forma que, en los recorridos de inicio de sesión único, el perfil del usuario se pueda leer desde el directorio sin ninguna interacción con el proveedor de identidades federado.
Para configurar el proveedor de sesiones externo, agregue una referencia a SM-SocialLogin
desde los perfiles técnicos de Oauth1, OAuth2 u OpenID Connect. Por ejemplo, Facebook-OAUTH
usa el perfil técnico de administración de sesiones SM-SocialLogin
. Para obtener más información, consulte el paquete de inicio de directivas personalizadas.
<TechnicalProfile Id="Facebook-OAUTH">
...
<UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
</TechnicalProfile>
OAuthSSOSessionProvider
El proveedor de sesiones OAuthSSOSessionProvider
se usa para administrar las sesiones de Azure AD B2C entre el usuario de confianza de OAuth2 u OpenID Connect y Azure AD B2C. Azure AD B2C admite el cierre de sesión único, también conocido como SLO (single log-out). Cuando un usuario cierra sesión a través del punto de conexión de cierre de sesión de Azure AD B2C, Azure AD B2C borrará la cookie de sesión del usuario del explorador. Sin embargo, el usuario podría permanecer conectado a otras aplicaciones que usan Azure AD B2C para la autenticación.
Este tipo de proveedor de sesiones permite a Azure AD B2C hacer un seguimiento de todas las aplicaciones OAuth2 u OpenID Connect en las que el usuario ha iniciado sesión. Durante el cierre de sesión de una aplicación, Azure AD B2C intentará llamar a los puntos de conexión logout
de todas las demás aplicaciones conocidas que han iniciado sesión. Esta funcionalidad está integrada en el proveedor de sesiones. No hay notificaciones persistentes ni de salida disponibles para configurar. El siguiente perfil técnico SM-jwt-issuer
es del tipo de proveedor de sesiones OAuthSSOSessionProvider
.
<TechnicalProfile Id="SM-jwt-issuer">
<DisplayName>Session Management Provider</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.OAuthSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>
Se hace referencia al perfil técnico SM-jwt-issuer
desde el perfil técnico JwtIssuer
:
<TechnicalProfile Id="JwtIssuer">
...
<UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />
</TechnicalProfile>
SamlSSOSessionProvider
El proveedor de sesiones SamlSSOSessionProvider
se usa para administrar el comportamiento de la sesión con proveedores de identidades SAML federados o aplicaciones de usuario de confianza SAML y Azure AD B2C.
Administración de sesiones del proveedor de identidades SAML
Cuando se hace referencia a un proveedor de sesiones SamlSSOSessionProvider
desde una sesión del proveedor de identidades SAML, RegisterServiceProviders
se debe establecer en false
.
El siguiente perfil técnico SM-Saml-idp
es del tipo de proveedor de sesiones SamlSSOSessionProvider
:
<TechnicalProfile Id="SM-Saml-idp">
<DisplayName>Session Management Provider</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="RegisterServiceProviders">false</Item>
</Metadata>
</TechnicalProfile>
Para usar el perfil técnico de administración de sesiones SM-Saml-idp
, agregue una referencia al perfil técnico del proveedor de identidades SAML. Por ejemplo, el proveedor Contoso-SAML2
de identidades SAML de AD-FS usa el SM-Saml-idp
perfil técnico de administración de sesiones.
<TechnicalProfile Id="Contoso-SAML2">
...
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp" />
</TechnicalProfile>
Administración de sesiones del proveedor de servicios SAML
Al hacer referencia a un proveedor de sesiones SamlSSOSessionProvider
para administrar la sesión de un usuario de confianza SAML, RegisterServiceProviders
debe establecerse en true
. El cierre de sesión de SAML requiere que se completen SessionIndex
y NameID
.
El siguiente perfil técnico SM-Saml-issuer
es del tipo de proveedor de sesiones SamlSSOSessionProvider
:
<TechnicalProfile Id="SM-Saml-issuer">
<DisplayName>Session Management Provider</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</TechnicalProfile>
Para usar el perfil técnico de administración de sesiones SM-Saml-issuer
, agregue una referencia al perfil técnico del emisor de tokens SAML. Por ejemplo, el perfil técnico Saml2AssertionIssuer
usa el perfil técnico de administración de sesiones SM-Saml-issuer
.
<TechnicalProfile Id="Saml2AssertionIssuer">
...
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuer" />
</TechnicalProfile>
Metadatos
Atributo | Obligatorio | Descripción |
---|---|---|
IncludeSessionIndex | No | No se usa actualmente, se puede omitir. |
RegisterServiceProviders | No | Indica que el proveedor debe registrar todos los proveedores de servicios SAML que han emitido una aserción. Valores posibles: true (opción predeterminada) o false . |
NoopSSOSessionProvider
El proveedor de sesiones NoopSSOSessionProvider
se usa para suprimir el comportamiento de inicio de sesión único. Los perfiles técnicos que usan este tipo de proveedor de sesiones siempre se procesarán, incluso cuando el usuario tenga una sesión activa. Este tipo de proveedor de sesiones puede ser útil para forzar que determinados perfiles técnicos se ejecuten siempre, por ejemplo:
- Transformación de notificaciones: Para crear o transformar notificaciones que se usan más adelante para determinar qué pasos de orquestación se van a procesar u omitir.
- RESTful: Captura los datos actualizados de un servicio RESTful cada vez que se ejecuta la directiva. También puede llamar a Restful para registros y auditorías ampliados.
- Autoafirmado: Obliga al usuario a proporcionar datos cada vez que se ejecuta la directiva. Por ejemplo, comprobar correos electrónicos con códigos de acceso de un solo uso o pedir el consentimiento del usuario.
- PhoneFactor: Obliga al usuario a realizar la autenticación multifactor como parte de una “autenticación por pasos” incluso durante los inicios de sesión posteriores (SSO).
Este tipo de proveedor de sesiones no conserva las notificaciones a la cookie de sesión del usuario. El siguiente perfil técnico SM-Noop
es del tipo de proveedor de sesiones NoopSSOSessionProvider
. El perfil técnico SM-Noop
se puede encontrar en el paquete de inicio de directivas personalizadas.
<TechnicalProfile Id="SM-Noop">
<DisplayName>Noop Session Management Provider</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.NoopSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>
Para suprimir el comportamiento de inicio de sesión único de un perfil técnico, agregue una referencia a SM-Noop
en el perfil técnico. Por ejemplo, AAD-Common
usa el perfil técnico de administración de sesiones SM-Noop
. Para obtener más información, consulte el paquete de inicio de directivas personalizadas.
<TechnicalProfile Id="AAD-Common">
...
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
Pasos siguientes
Obtenga información sobre cómo configurar el comportamiento de la sesión.