Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
A partir del 1 de mayo de 2025, Azure AD B2C ya no estará disponible para ser adquirido por nuevos clientes. Obtenga más información en nuestras preguntas más frecuentes.
Azure Active Directory B2C (Azure AD B2C) admite la federación con proveedores de identidades SAML 2.0. En este artículo se describe cómo analizar las aserciones de seguridad y las opciones de configuración que están disponibles al habilitar el inicio de sesión con un proveedor de identidades de SAML.
Antes de empezar, use el selector Elegir un tipo de directiva en la parte superior de esta página para elegir el tipo de directiva que está configurando. Azure Active Directory B2C ofrece dos métodos para definir cómo interactúan los usuarios con las aplicaciones: a través de flujos de usuario predefinidos o mediante directivas personalizadas totalmente configurables. Los pasos necesarios en este artículo son diferentes para cada método.
Esta característica está disponible solo para directivas personalizadas. Para conocer los pasos de configuración, seleccione Directiva personalizada en el selector anterior.
Asignación de notificaciones
El elemento OutputClaims contiene una lista de notificaciones devueltas por el proveedor de identidades de SAML. Debe relacionar el nombre de la reclamación definido en su política con el nombre definido por el proveedor de identidades. Consulte el proveedor de identidades para obtener la lista de notificaciones (aserciones). También puede comprobar el contenido de la respuesta SAML que devuelve el proveedor de identidades. Para obtener más información, vea Depurar los mensajes SAML. Para agregar una notificación, defina primero una notificación y agregue la notificación a la colección de notificaciones de salida.
También puede incluir notificaciones no especificadas por el proveedor de identidades, siempre que establezca el atributo DefaultValue
. El valor predeterminado puede ser estático o dinámico mediante notificaciones de contexto.
El elemento de notificación de entrada contiene los atributos siguientes:
- ClaimTypeReferenceId es la referencia a un tipo de notificación.
- PartnerClaimType es el nombre de la propiedad que aparece en la aserción de SAML.
- DefaultValue es un valor predeterminado predefinido. Si la reclamación está vacía, se usa el valor predeterminado. También puede usar solucionadores de notificaciones con un valor contextual, como el identificador de correlación o la dirección IP del usuario.
Nombre de sujeto
Para leer la aserción SAML NamedId en Subject como si fuera una notificación normalizada, establezca la notificación PartnerClaimType en el valor del atributo SPNameQualifier
. Si el atributo SPNameQualifier
no aparece, establezca la notificación PartnerClaimType en el valor del atributo NameQualifier
.
Aserción de SAML:
<saml:Subject>
<saml:NameID SPNameQualifier="http://your-idp.com/unique-identifier" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">david@contoso.com</saml:NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<SubjectConfirmationData InResponseTo="_cd37c3f2-6875-4308-a9db-ce2cf187f4d1" NotOnOrAfter="2020-02-15T16:23:23.137Z" Recipient="https://<your-tenant>.b2clogin.com/<your-tenant>.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" />
</SubjectConfirmation>
</saml:SubjectConfirmation>
</saml:Subject>
Notificación de salida:
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="http://your-idp.com/unique-identifier" />
Si los atributos SPNameQualifier
o NameQualifier
no se encuentran en la aserción SAML, establezca la notificación PartnerClaimType en assertionSubjectName
. Asegúrese de que NameId es el primer valor de XML de aserción. Al definir más de una aserción, Azure AD B2C elige el valor del sujeto de la última aserción.
Configuración de enlaces de protocolo SAML
Las solicitudes SAML se envían al proveedor de identidades tal como se especifica en el elemento de metadatos del proveedor de identidades SingleSignOnService
. La mayoría de las solicitudes de autorización de los proveedores de identidades se llevan directamente en la cadena de consulta URL de una solicitud HTTP GET (ya que los mensajes son relativamente cortos). Consulte la documentación del proveedor de identidades para configurar los enlaces para ambas solicitudes SAML.
El siguiente XML es un ejemplo de un servicio de inicio de sesión único de metadatos de Microsoft Entra con dos enlaces. La HTTP-Redirect
tiene prioridad sobre la HTTP-POST
ya que aparece primero en los metadatos del proveedor de identidades de SAML.
<IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
...
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/saml2"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/saml2"/>
</IDPSSODescriptor>
Servicio de consumidor de aserciones
El Servicio de consumidor de aserciones (o ACS) es el lugar donde Azure AD B2C envía y recibe las respuestas SAML del proveedor de identidades. Las respuestas SAML se transmiten a Azure AD B2C a través del enlace HTTP POST. La ubicación de ACS apunta a la directiva base del usuario de confianza. Por ejemplo, si la directiva dependiente es B2C_1A_signup_signin, ACS es la directiva base de B2C_1A_signup_signin, como B2C_1A_TrustFrameworkBase.
El siguiente es un ejemplo XML de un elemento de servicio del consumidor de aserción de metadatos de la directiva de Azure AD B2C.
<SPSSODescriptor AuthnRequestsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
...
<AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://your-tenant.b2clogin.com/your-tenant/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" index="0" isDefault="true"/>
</SPSSODescriptor>
Configuración de la firma de solicitud SAML
Azure AD B2C firma todas las solicitudes de autenticación salientes mediante la clave criptográfica SamlMessageSigning . Para deshabilitar la firma de solicitud SAML, establezca WantsSignedRequests en false
. Si los metadatos se establecen en false
, los parámetros SigAlg y Signature (cadena de consulta o parámetro de envío) se omiten de la solicitud.
Estos metadatos también controlan el atributo AuthnRequestsSigned , que se incluye con los metadatos del perfil técnico de Azure AD B2C que se comparte con el proveedor de identidades. Azure AD B2C no firma la solicitud si el valor de WantsSignedRequests en los metadatos del perfil técnico está configurado como false
y los metadatos del proveedor de identidades WantAuthnRequestsSigned se establecen como false
o no se especifican.
En el ejemplo siguiente se quita la firma de la solicitud SAML.
<Metadata>
...
<Item Key="WantsSignedRequests">false</Item>
</Metadata>
Algoritmo de firma
Azure AD B2C usa Sha1
para firmar la solicitud SAML. Use los metadatos xmlSignatureAlgorithm para configurar el algoritmo que se va a usar. Los valores posibles son Sha256
, Sha384
, Sha512
o Sha1
(valor predeterminado). Estos metadatos controlan el valor del parámetro SigAlg (cadena de consulta o parámetro post) en la solicitud SAML. Asegúrese de configurar el algoritmo de firma en ambos lados con el mismo valor. Use solo el algoritmo que admite el certificado.
Incluir información clave
Cuando el proveedor de identidades indica que el enlace de Azure AD B2C está establecido en HTTP-POST
, Azure AD B2C incluye la firma y el algoritmo en el cuerpo de la solicitud SAML. También puede configurar Microsoft Entra ID para incluir la clave pública del certificado cuando la vinculación se establezca en HTTP-POST
. Use los metadatos de IncludeKeyInfo para true
o false
. En el ejemplo siguiente, el identificador de Entra de Microsoft no incluye la clave pública del certificado.
<Metadata>
...
<Item Key="IncludeKeyInfo">false</Item>
</Metadata>
Configurar el identificador de nombre de la solicitud SAML
El elemento de solicitud <NameID>
de autorización de SAML indica el formato de identificador de nombre de SAML. En esta sección se describe la configuración predeterminada y cómo personalizar el elemento name ID.
Nombre de usuario preferido
Durante el proceso de inicio de sesión del usuario, una aplicación del tercero confiable puede dirigirse a un usuario específico. Azure AD B2C permite enviar un nombre de usuario preferido al proveedor de identidades de SAML. El elemento InputClaims se usa para enviar un NameId dentro del asunto de la solicitud de autorización de SAML.
Para incluir el identificador de nombre del firmante dentro de la solicitud de autorización, agregue el siguiente <InputClaims>
elemento inmediatamente después de <CryptographicKeys>
.
PartnerClaimType debe establecerse en subject
.
<InputClaims>
<InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="subject" />
</InputClaims>
En este ejemplo, Azure AD B2C envía el valor de la reclamación signInName con NameId dentro del Sujeto de la solicitud de autorización SAML.
<samlp:AuthnRequest ... >
...
<saml:Subject>
<saml:NameID>sam@contoso.com</saml:NameID>
</saml:Subject>
</samlp:AuthnRequest>
Puede usar notificaciones de contexto, como {OIDC:LoginHint}
para rellenar el valor de la notificación.
<Metadata>
...
<Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
</Metadata>
...
<InputClaims>
<InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="subject" DefaultValue="{OIDC:LoginHint}" AlwaysUseDefaultValue="true" />
</InputClaims>
Formato de la directiva de ID. de nombre
De forma predeterminada, la solicitud de autorización de SAML especifica la urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
directiva. Este identificador de nombre indica que se puede usar cualquier tipo de identificador admitido por el proveedor de identidades para el sujeto solicitado.
Para cambiar este comportamiento, consulte la documentación del proveedor de identidades para obtener instrucciones sobre qué directivas de identificador de nombre se admiten. A continuación, agregue los metadatos NameIdPolicyFormat
en el formato de directiva correspondiente. Por ejemplo:
<Metadata>
...
<Item Key="NameIdPolicyFormat">urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</Item>
</Metadata>
La siguiente solicitud de autorización de SAML contiene la directiva de identificador de nombre.
<samlp:AuthnRequest ... >
...
<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" />
</samlp:AuthnRequest>
Permitir la creación de cuentas
Si especifica el formato de directiva de identificador de nombre, también puede especificar la propiedad AllowCreate
de NameIDPolicy para indicar si se permite al proveedor de identidades crear una nueva cuenta durante el flujo de inicio de sesión. Consulte la documentación del proveedor de identidades para obtener instrucciones.
Azure AD B2C omite la AllowCreate
propiedad de forma predeterminada. Puede cambiar este comportamiento mediante los NameIdPolicyAllowCreate
metadatos. El valor de estos metadatos es true
o false
.
En el ejemplo siguiente se muestra cómo establecer AllowCreate
la propiedad de NameIDPolicy
en true
.
<Metadata>
...
<Item Key="NameIdPolicyFormat">urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</Item>
<Item Key="NameIdPolicyAllowCreate">true</Item>
</Metadata>
En el ejemplo siguiente se muestra una solicitud de autorización con AllowCreate del elemento NameIDPolicy en la solicitud de autorización.
<samlp:AuthnRequest ... >
...
<samlp:NameIDPolicy
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
AllowCreate="true" />
</samlp:AuthnRequest>
Forzar autenticación
Puede forzar que el IDP externo de SAML solicite al usuario autenticarse al incluir la propiedad ForceAuthN
en la solicitud de autenticación SAML. Su proveedor de identidades también debe admitir esta propiedad.
La ForceAuthN
propiedad es un valor booleano true
o false
. De forma predeterminada, Azure AD B2C establece el valor ForceAuthN en false
. Si la sesión se restablece (por ejemplo, mediante el prompt=login
en OIDC), entonces el valor de ForceAuthN
se establece en true
. Si se establece el elemento de metadatos ForceAuthN
en true
, se impone el valor al IDP externo para todas las solicitudes.
En el siguiente ejemplo se muestra la propiedad ForceAuthN
establecida en true
:
<Metadata>
...
<Item Key="ForceAuthN">true</Item>
...
</Metadata>
En el ejemplo siguiente se muestra la ForceAuthN
propiedad en una solicitud de autorización:
<samlp:AuthnRequest AssertionConsumerServiceURL="https://..." ...
ForceAuthN="true">
...
</samlp:AuthnRequest>
Nombre del proveedor
Opcionalmente, puede incluir el ProviderName
atributo en la solicitud de autorización de SAML. Establezca el elemento de metadatos ProviderName
para incluir el nombre del proveedor de todas las solicitudes al IDP de SAML externo. En el siguiente ejemplo se muestra la propiedad ProviderName
establecida en Contoso app
:
<Metadata>
...
<Item Key="ProviderName">Contoso app</Item>
...
</Metadata>
En el ejemplo siguiente se muestra la ProviderName
propiedad en una solicitud de autorización:
<samlp:AuthnRequest AssertionConsumerServiceURL="https://..." ...
ProviderName="Contoso app">
...
</samlp:AuthnRequest>
Incluir referencias de clase de contexto de autenticación
Una solicitud de autorización SAML puede contener un elemento AuthnContext , que especifica el contexto de una solicitud de autorización. El elemento puede contener una referencia de clase de contexto de autenticación, que indica al proveedor de identidades SAML qué mecanismo de autenticación presentar al usuario.
Para configurar las referencias a la clase de contexto de autenticación, agregue metadatos de IncludeAuthnContextClassReferences. En el valor, especifique una o varias referencias de URI que identifiquen clases de contexto de autenticación. Especifique varios URI como una lista delimitada por comas. Consulte la documentación del proveedor de identidades para obtener instrucciones sobre los URI de AuthnContextClassRef compatibles.
En el ejemplo siguiente se permite a los usuarios iniciar sesión con el nombre de usuario y la contraseña, e iniciar sesión con el nombre de usuario y la contraseña a través de una sesión protegida (SSL/TLS).
<Metadata>
...
<Item Key="IncludeAuthnContextClassReferences">urn:oasis:names:tc:SAML:2.0:ac:classes:Password,urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</Item>
</Metadata>
La siguiente solicitud de autorización de SAML contiene las referencias de clase de contexto de autenticación.
<samlp:AuthnRequest ... >
...
<samlp:RequestedAuthnContext>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
</samlp:AuthnRequest>
Incluir datos personalizados en la solicitud de autorización
Opcionalmente, puede incluir elementos de extensión de mensajes de protocolo acordados por Azure AD B2C y su proveedor de identidades. La extensión se presenta en formato XML. Los elementos de extensión se incluyen agregando datos XML dentro del elemento CDATA <![CDATA[Your Custom XML]]>
. Consulte la documentación del proveedor de identidades para ver si se admite el elemento de extensiones.
En el ejemplo siguiente se muestra el uso de datos de extensión:
<Metadata>
...
<Item Key="AuthenticationRequestExtensions"><![CDATA[
<ext:MyCustom xmlns:ext="urn:ext:custom">
<ext:AssuranceLevel>1</ext:AssuranceLevel>
<ext:AssuranceDescription>Identity verified to level 1.</ext:AssuranceDescription>
</ext:MyCustom>]]></Item>
</Metadata>
Nota:
De acuerdo con la especificación SAML, los datos de extensión deben ser un XML de espacio de nombres (por ejemplo, "urn:ext:custom" que se muestra en el ejemplo) y no uno de los espacios de nombres específicos de SAML.
Con la extensión de mensaje del protocolo SAML, la respuesta de SAML es similar al ejemplo siguiente:
<samlp:AuthnRequest ... >
...
<samlp:Extensions>
<ext:MyCustom xmlns:ext="urn:ext:custom">
<ext:AssuranceLevel>1</ext:AssuranceLevel>
<ext:AssuranceDescription>Identity verified to level 1.</ext:AssuranceDescription>
</ext:MyCustom>
</samlp:Extensions>
</samlp:AuthnRequest>
Requerir respuestas SAML firmadas
Azure AD B2C requiere que se firmen todas las aserciones entrantes. Puede quitar este requisito estableciendo WantsSignedAssertions en false
. El proveedor de identidades no debe firmar las aserciones en este caso, pero aunque lo haga, Azure AD B2C no valida la firma.
Los metadatos de WantSignedAssertions controlan la marca de metadatos SAML WantAssertionsSigned, que se incluye en los metadatos del perfil técnico de Azure AD B2C que se comparte con el proveedor de identidades.
<SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
Si deshabilita la validación de aserciones, es posible que también desee deshabilitar la validación de la firma del mensaje de respuesta. Establecer los metadatos ResponsesSigned en false
. El proveedor de identidades no debe firmar el mensaje de respuesta SAML en este caso, pero aunque lo haga, Azure AD B2C no valida la firma.
En el ejemplo siguiente se quita tanto el mensaje como la firma de aserción:
<Metadata>
...
<Item Key="WantsSignedAssertions">false</Item>
<Item Key="ResponsesSigned">false</Item>
</Metadata>
Requerir respuestas SAML cifradas
Para requerir el cifrado de todas las aserciones entrantes, establezca los metadatos de WantsEncryptedAssertions. Cuando se requiere cifrado, el proveedor de identidades usa una clave pública de un certificado de cifrado en un perfil técnico de Azure AD B2C. Azure AD B2C descifra la aserción de respuesta mediante la parte privada del certificado de cifrado.
Si habilita el cifrado de aserciones, es posible que también tenga que deshabilitar la validación de la firma de respuesta (para obtener más información, consulte Requerir respuestas SAML firmadas.
Cuando los metadatos WantsEncryptedAssertions se establecen en true
, los metadatos del perfil técnico de Azure AD B2C incluyen la sección cifrado. El proveedor de identidades lee los metadatos y cifra la aserción de respuesta de SAML con la clave pública que se proporciona en los metadatos del perfil técnico de Azure AD B2C.
En el ejemplo siguiente se muestra la sección Descriptor de clave de los metadatos de SAML usados para el cifrado:
<SPSSODescriptor AuthnRequestsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<KeyDescriptor use="encryption">
<KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>valid certificate</X509Certificate>
</X509Data>
</KeyInfo>
</KeyDescriptor>
...
</SPSSODescriptor>
Para cifrar la aserción de respuesta de SAML:
Cree una clave de directiva con un identificador único. Por ejemplo:
B2C_1A_SAMLEncryptionCert
.En la colección CryptographicKeys de perfil técnico de SAML. Asigne el nombre de la clave de directiva que creó en el primer paso a StorageReferenceId. El
SamlAssertionDecryption
identificador indica el uso de la clave criptográfica para cifrar y descifrar la aserción de la respuesta SAML.<CryptographicKeys> ... <Key Id="SamlAssertionDecryption" StorageReferenceId="B2C_1A_SAMLEncryptionCert"/> </CryptographicKeys>
Establezca los metadatos del perfil técnico WantsEncryptedAssertions en
true
.<Metadata> ... <Item Key="WantsEncryptedAssertions">true</Item> </Metadata>
Actualice el proveedor de identidades con los nuevos metadatos del perfil técnico de Azure AD B2C. Debería ver keyDescriptor con la propiedad use establecida en
encryption
que contiene la clave pública del certificado.
Permitir el uso de declaraciones de contexto
En la colección de notificaciones de entrada y salida, puede incluir las notificaciones que el proveedor de identidades no devuelve, siempre y cuando establezca el atributo DefaultValue
. También puede usar notificaciones de contexto para incluirse en el perfil técnico. Para usar una reclamación de contexto:
Agregue un tipo de demanda al elemento ClaimsSchema en BuildingBlocks.
Agregue una notificación de salida a la colección de entrada o de salida. En el ejemplo siguiente, la primera reclamación establece el valor del proveedor de identidades. La segunda reclamación utiliza la dirección IP del usuario context claims.
<OutputClaims> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="IpAddress" DefaultValue="{Context:IPAddress}" AlwaysUseDefaultValue="true" /> </OutputClaims>
Deshabilitar cierre de sesión único
En una solicitud de cierre de sesión de aplicación, Azure AD B2C intenta cerrar la sesión del proveedor de identidades de SAML. Para más información, consulte Cierre de sesión de Azure AD B2C. Para deshabilitar el comportamiento de cierre de sesión único, establezca el metadato SingleLogoutEnabled en false
.
<Metadata>
...
<Item Key="SingleLogoutEnabled">false</Item>
</Metadata>
Depurar protocolo SAML
Para ayudar a configurar y depurar la federación con un proveedor de identidades SAML, puede usar una extensión del navegador para el protocolo SAML, como la extensión SAML DevTools para Chrome, SAML-tracer para Firefox, o las herramientas de desarrollo en Microsoft Edge o Internet Explorer.
Con estas herramientas, puede comprobar la integración entre Azure AD B2C y el proveedor de identidades de SAML. Por ejemplo:
- Compruebe si la solicitud SAML contiene una firma y determine qué algoritmo se usa para iniciar sesión en la solicitud de autorización.
- Obtiene las notificaciones (aserciones) en la sección
AttributeStatement
. - Compruebe si el proveedor de identidades devuelve un mensaje de error.
- Compruebe si la sección de aserción está cifrada.
Ejemplos de solicitud y respuesta de SAML
El Lenguaje de marcado de aserción de seguridad (SAML) es un estándar abierto para intercambiar datos de autenticación y autorización entre un proveedor de identidades y un proveedor de servicios. Cuando Azure AD B2C se federa con un proveedor de identidades de SAML, actúa como proveedor de servicios que inicia una solicitud SAML al proveedor de identidades de SAML y espera una respuesta DE SAML.
Una respuesta SAML correcta contiene aserciones de seguridad que son declaraciones realizadas por los proveedores de identidad SAML externos. Azure AD B2C analiza y asigna las aserciones a notificaciones.
Solicitud de autorización
Para solicitar una autenticación de usuario, Azure AD B2C envía un AuthnRequest
elemento al proveedor de identidades SAML externo. Un ejemplo de SAML 2.0 AuthnRequest
podría parecerse al ejemplo siguiente:
<samlp:AuthnRequest
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_11111111-0000-0000-0000-000000000000"
Version="2.0"
IssueInstant="2023-03-20T07:10:00.0000000Z"
Destination="https://fabrikam.com/saml2"
ForceAuthn="false"
IsPassive="false"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer"
ProviderName="https://fabrikam.com"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:Issuer
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase
</saml:Issuer>
</samlp:AuthnRequest>
Respuesta
Cuando un inicio de sesión solicitado se completa correctamente, el proveedor de identidades externo de SAML envía una respuesta al punto de conexión del servicio consumidor de aserciones de Azure AD B2C. Una respuesta a un intento de inicio de sesión correcto es similar al ejemplo siguiente:
<samlp:Response
ID="_98765432-0000-0000-0000-000000000000"
Version="2.0"
IssueInstant="2023-03-20T07:11:30.0000000Z"
Destination="https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer"
InResponseTo="_11111111-0000-0000-0000-000000000000"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer
xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://fabrikam.com/
</Issuer>
<samlp:Status>
<samlp:StatusCode
Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<Assertion
ID="_55555555-0000-0000-0000-000000000000"
IssueInstant="2023-03-20T07:40:45.505Z"
Version="2.0"
xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<Issuer>https://fabrikam.com/</Issuer>
<Signature
xmlns="http://www.w3.org/2000/09/xmldsig#">
...
</Signature>
<Subject>
<NameID
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">ABCDEFG
</NameID>
...
</Subject>
<AttributeStatement>
<Attribute Name="uid">
<AttributeValue>12345</AttributeValue>
</Attribute>
<Attribute Name="displayname">
<AttributeValue>David</AttributeValue>
</Attribute>
<Attribute Name="email">
<AttributeValue>david@contoso.com</AttributeValue>
</Attribute>
....
</AttributeStatement>
<AuthnStatement
AuthnInstant="2023-03-20T07:40:45.505Z"
SessionIndex="_55555555-0000-0000-0000-000000000000">
<AuthnContext>
<AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
</AuthnContext>
</AuthnStatement>
</Assertion>
</samlp:Response>
Solicitud de cierre de sesión
En una solicitud de cierre de sesión de aplicación, Azure AD B2C intenta cerrar la sesión del proveedor de identidades de SAML. Azure AD B2C envía un LogoutRequest
mensaje al IDP externo para indicar que se ha terminado una sesión. En el fragmento siguiente se muestra un elemento de ejemplo LogoutRequest
.
El valor del elemento NameID
coincide con el NameID
del usuario que cierra sesión. El elemento SessionIndex
coincide con el atributo SessionIndex
de AuthnStatement
en la respuesta SAML de inicio de sesión.
<samlp:LogoutRequest
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
ID="_22222222-0000-0000-0000-000000000000"
Version="2.0"
IssueInstant="2023-03-20T08:21:07.3679354Z"
Destination="https://fabrikam.com/saml2/logout"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:Issuer
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase
</saml:Issuer>
<saml:NameID>ABCDEFG</saml:NameID>
<samlp:SessionIndex>_55555555-0000-0000-0000-000000000000</samlp:SessionIndex>
</samlp:LogoutRequest>
Pasos siguientes
- Aprenda a diagnosticar problemas con las directivas personalizadas mediante Application Insights.