Compartir a través de


Configuración del registro y el inicio de sesión con el proveedor de identidades SAML mediante Azure Active Directory B2C

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 muestra cómo habilitar el inicio de sesión con una cuenta de usuario del proveedor de identidades SAML, lo que permite a los usuarios iniciar sesión con sus identidades sociales o empresariales existentes, como ADFS y Salesforce.

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.

Información general sobre el escenario

Puede configurar Azure AD B2C para permitir que los usuarios inicien sesión en la aplicación con credenciales de proveedores de identidades (IdP) SAML corporativos o sociales externos. 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. En el diagrama siguiente:

  1. La aplicación inicia una solicitud de autorización a Azure AD B2C. La aplicación puede ser una aplicación OAuth 2.0 o OpenId Connect , o un proveedor de servicios SAML.
  2. En la página de inicio de sesión de Azure AD B2C, el usuario elige iniciar sesión con una cuenta de proveedor de identidades SAML (por ejemplo, Contoso). Azure AD B2C inicia una solicitud de autorización de SAML y lleva al usuario al proveedor de identidades de SAML para completar el inicio de sesión.
  3. El proveedor de identidades de SAML devuelve una respuesta SAML.
  4. Azure AD B2C valida el token SAML, extrae notificaciones, emite su propio token y lleva al usuario de vuelta a la aplicación.

Inicio de sesión con el flujo del proveedor de identidades de SAML

Prerrequisitos

Componentes de la solución

Los siguientes componentes son necesarios para este escenario:

  • Un proveedor de identidades SAML con la capacidad de recibir, descodificar y responder a solicitudes SAML de Azure AD B2C.
  • Un punto de conexión de metadatos de SAML disponible públicamente para el proveedor de identidades.
  • Un inquilino de Azure AD B2C.

Importante

Los puntos de conexión deben cumplir los requisitos de seguridad de Azure AD B2C. Las versiones anteriores de TLS y los cifrados están en desuso. Para obtener más información, consulte Requisitos de TLS y del conjunto de cifrado de Azure AD B2C.

Creación de una clave de directiva

Para establecer la confianza entre Azure AD B2C y el proveedor de identidades de SAML, debe proporcionar un certificado X509 válido con la clave privada. Azure AD B2C firma las solicitudes SAML mediante la clave privada del certificado. El proveedor de identidad valida la solicitud mediante la clave pública del certificado. Se puede acceder a la clave pública a través de los metadatos del perfil técnico. Como alternativa, puede cargar manualmente el archivo .cer en su proveedor de identidad SAML.

Un certificado autofirmado es aceptable para la mayoría de los escenarios. Para entornos de producción, se recomienda utilizar un certificado X509 emitido por una autoridad de certificación. Además, como se describe más adelante en este documento, para un entorno que no sea de producción, puede deshabilitar la firma SAML en ambos lados.

Obtención de un certificado

Si aún no tiene un certificado, puede usar un certificado autofirmado para este tutorial. Un certificado autofirmado es un certificado de seguridad que no está firmado por una entidad de certificación (CA) y no proporciona las garantías de seguridad de un certificado firmado por una CA.

En Windows, use el cmdlet New-SelfSignedCertificate en PowerShell para generar un certificado.

  1. Ejecute este comando de PowerShell para generar un certificado autofirmado. Modifique el argumento -Subject según corresponda para su aplicación y el nombre del inquilino de Azure AD B2C, por ejemplo contosowebapp.contoso.onmicrosoft.com. También puede ajustar la fecha de -NotAfter para especificar una expiración diferente para el certificado.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. En el equipo Windows, busque y seleccione Administrar certificados de usuario.

  3. En Certificados - Usuario actual, seleccione Personales>Certificados>yourappname.yourtenant.onmicrosoft.com.

  4. Seleccione el certificado y, a continuación, seleccione Action All Tasks Export (Exportar>todas las tareas>).

  5. Seleccione Siguiente>Sí, exporte la clave> privadaSiguiente.

  6. Acepte los valores predeterminados para Exportar formato de archivo y, a continuación, seleccione Siguiente.

  7. Habilite la opción Contraseña , escriba una contraseña para el certificado y, a continuación, seleccione Siguiente.

  8. Para especificar una ubicación para guardar el certificado, seleccione Examinar y vaya a un directorio de su elección.

  9. En la ventana Guardar como , escriba un nombre de archivo y, a continuación, seleccione Guardar.

  10. Seleccione Siguiente>finalizar.

Para que Azure AD B2C acepte la contraseña del archivo .pfx, debe estar cifrada con la opción TripleDES-SHA1 de la utilidad de exportación del almacén de certificados de Windows en lugar de con AES256-SHA256.

Carga del certificado

Debe almacenar el certificado en el inquilino de Azure AD B2C.

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. Elija Todos los servicios en la esquina superior izquierda de Azure Portal y busque y seleccione Azure AD B2C.
  4. En la página Información general, seleccione Identity Experience Framework.
  5. Seleccione Claves de directiva y, a continuación, seleccione Agregar.
  6. En Opciones, elija Upload.
  7. Escriba un nombre para la clave de directiva. Por ejemplo: SAMLSigningCert. El prefijo B2C_1A_ se agrega automáticamente al nombre de la clave.
  8. Busque el archivo .pfx de certificado con la clave privada y selecciónelo.
  9. Haga clic en Crear.

Configurar el perfil técnico de SAML

Defina el proveedor de identidad SAML agregándolo al elemento ClaimsProviders en el archivo de extensión de la directiva. Los proveedores de notificaciones contienen un perfil técnico de SAML que determina los puntos de conexión y los protocolos necesarios para comunicarse con el proveedor de identidades de SAML. Para agregar un proveedor de notificaciones con un perfil técnico de SAML:

  1. Abra el archivo TrustFrameworkExtensions.xml.

  2. Busque el elemento ClaimsProviders. Si no existe, agréguelo debajo del elemento raíz.

  3. Agregue un nuevo elemento ClaimsProvider tal como se muestra a continuación:

    <ClaimsProvider>
      <Domain>Contoso.com</Domain>
      <DisplayName>Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-SAML2">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your SAML identity provider account</Description>
          <Protocol Name="SAML2"/>
          <Metadata>
            <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="assertionSubjectName" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="last_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="http://schemas.microsoft.com/identity/claims/displayname" />
            <OutputClaim ClaimTypeReferenceId="email"  />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Actualice los siguientes elementos XML con el valor pertinente:

Elemento XML Importancia
ClaimsProvider\Domain Nombre de dominio que se usa para el inicio de sesión directo. Escriba el nombre de dominio que desea usar en el inicio de sesión directo. Por ejemplo, Contoso.com.
TechnicalProfile\DisplayName Este valor se mostrará en el botón de inicio de sesión en la pantalla de inicio de sesión. Por ejemplo, Contoso.
Metadatos\PartnerEntity URL de los metadatos del proveedor de identidad SAML. O bien, puede copiar los metadatos del proveedor de identidad y agregarlos dentro del elemento <![CDATA[Your IDP metadata]]>CDATA .

Mapear las reclamaciones

El elemento OutputClaims contiene una lista de notificaciones devueltas por el proveedor de identidades de SAML. Asigne el nombre de la notificación definida en la directiva al nombre de aserción definido en el proveedor de identidades. Consulte el proveedor de identidades para obtener la lista de notificaciones (aserciones). Para obtener más información, consulte mapeo de reclamaciones.

En el ejemplo anterior, Contoso-SAML2 incluye las afirmaciones devueltas por un proveedor de identidades SAML:

  • La afirmación assertionSubjectName se mapea a la afirmación issuerUserId.
  • El atributo first_name se asigna al atributo givenName .
  • La reclamación last_name se asigna a la reclamación apellido.
  • La notificación http://schemas.microsoft.com/identity/claims/displayname se asigna a la notificación displayName.
  • La notificación email sin asignación de nombre.

El perfil técnico también muestra la notificaciones no proporcionadas por el proveedor de identidades:

  • La notificación identityProvider que contiene el nombre del proveedor de identidades.
  • La notificación authenticationSource con un valor predeterminado de socialIdpAuthentication.

Agregar el perfil técnico de la sesión SAML

Si aún no tiene el perfil técnico de sesión SM-Saml-idp SAML, agregue uno a su política de extensiones. Busque la <ClaimsProviders> sección y agregue el siguiente fragmento de código XML. Si la directiva ya contiene el perfil técnico SM-Saml-idp, vaya al paso siguiente. Para más información, consulte la gestión de sesiones de autenticación única.

<ClaimsProvider>
  <DisplayName>Session Management</DisplayName>
  <TechnicalProfiles>
    <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="IncludeSessionIndex">false</Item>
        <Item Key="RegisterServiceProviders">false</Item>
      </Metadata>
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Adición de un recorrido del usuario

En este momento, el proveedor de identidades ya se ha configurado, pero no está disponible en ninguna de las pantallas de inicio de sesión. Si no tiene su propio recorrido del usuario personalizado, cree un duplicado de un recorrido del usuario de la plantilla existente; de lo contrario, continúe con el paso siguiente.

  1. Abra el archivo TrustFrameworkBase.xml del paquete de inicio.
  2. Busque y copie todo el contenido del elemento UserJourney que incluye Id="SignUpOrSignIn".
  3. Abra el archivo TrustFrameworkExtensions.xml y busque el elemento UserJourneys. Si el elemento no existe, agréguelo.
  4. Pegue todo el contenido del elemento UserJourney que ha copiado como elemento secundario del elemento UserJourneys.
  5. Cambie el identificador del recorrido del usuario. Por ejemplo: Id="CustomSignUpSignIn".

Adición del proveedor de identidades a un recorrido del usuario

Ahora que tiene un recorrido del usuario, agregue el nuevo proveedor de identidades al recorrido del usuario. En primer lugar, agregue un botón de inicio de sesión y, después, vincule el botón a una acción. La acción es el perfil técnico que creó anteriormente.

  1. Busque el elemento del paso de orquestación que incluye Type="CombinedSignInAndSignUp" o Type="ClaimsProviderSelection"en el recorrido del usuario. Normalmente es el primer paso de orquestación. El elemento ClaimsProviderSelections contiene una lista de proveedores de identidades con los que un usuario puede iniciar sesión. El orden de los elementos controla el orden de los botones de inicio de sesión que se presentan al usuario. Agregue un elemento XML ClaimsProviderSelection. Establezca el valor de TargetClaimsExchangeId en un nombre descriptivo.

  2. En el paso de orquestación siguiente, agregue un elemento ClaimsExchange. Establezca el Id en el valor del identificador de intercambio de notificaciones de destino. Actualice el valor de TechnicalProfileReferenceId al del identificador del perfil técnico que creó anteriormente.

En el siguiente código XML se muestran los dos primeros pasos de orquestación de un recorrido del usuario con el proveedor de identidades:

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-SAML2" />
  </ClaimsExchanges>
</OrchestrationStep>

Configuración de la directiva de usuario de confianza

La directiva de usuario de confianza, por ejemplo SignUpSignIn.xml, especifica el recorrido del usuario que ejecutará Azure AD B2C. Busque el elemento DefaultUserJourney en el usuario de confianza. Actualice ReferenceId para que coincida con el identificador del recorrido del usuario, en el que agregó el proveedor de identidades.

En el ejemplo siguiente, para el recorrido de usuario CustomSignUpSignIn, el ReferenceId está establecido en CustomSignUpSignIn:

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

Carga de la directiva personalizada

  1. Inicie sesión en Azure Portal.
  2. Seleccione el icono Directorio y suscripción en la barra de herramientas del portal y, luego, elija el directorio que contiene el inquilino de Azure AD B2C.
  3. En Azure Portal, busque y seleccione Azure AD B2C.
  4. En Directivas, seleccione Identity Experience Framework.
  5. Seleccione Cargar directiva personalizada y, a continuación, cargue los dos archivos de directivas que ha cambiado, en el siguiente orden: la directiva de extensiones, por ejemplo TrustFrameworkExtensions.xml, luego la directiva de usuarios de confianza, como SignUpSignIn.xml.

Configuración del proveedor de identidades de SAML

Una vez configurada la directiva, debe configurar el proveedor de identidades de SAML con los metadatos de SAML de Azure AD B2C. Los metadatos SAML son información que se utiliza en el protocolo SAML para exponer la configuración de su política, el proveedor de servicios. Define la ubicación de los servicios, como el inicio y cierre de sesión, los certificados, el método de inicio de sesión, etc.

Cada proveedor de identidad SAML tiene diferentes pasos para configurar un proveedor de servicios. Algunos proveedores de identidades de SAML solicitan los metadatos de Azure AD B2C, mientras que otros requieren que revise el archivo de metadatos manualmente y proporcione la información. Consulte la documentación del proveedor de identidades para obtener instrucciones.

En el ejemplo siguiente se muestra una dirección URL para los metadatos SAML de un perfil técnico de Azure AD B2C:

https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<your-policy>/samlp/metadata?idptp=<your-technical-profile>

Al usar un dominio personalizado, use el siguiente formato:

https://your-domain-name/<your-tenant-name>.onmicrosoft.com/<your-policy>/samlp/metadata?idptp=<your-technical-profile>

Reemplace los siguientes valores:

  • your-tenant-name con el nombre del inquilino, como your-tenant.onmicrosoft.com.
  • your-domain-name con tu nombre de dominio personalizado, como login.contoso.com.
  • your-policy con el nombre de su póliza. Por ejemplo, B2C_1A_signup_signin_adfs.
  • your-technical-profile con el nombre del perfil técnico de su proveedor de identidad SAML. Por ejemplo, Contoso-SAML2.

Abra un navegador y navegue hasta la URL. Asegúrese de escribir la dirección URL correcta y de que tiene acceso al archivo de metadatos XML.

Prueba de la directiva personalizada

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. En Azure Portal, busque y seleccione Azure AD B2C.
  4. En Directivas, seleccione Marco de experiencia de identidad
  5. Seleccione la directiva de usuarios de confianza, por ejemplo B2C_1A_signup_signin.
  6. En Aplicación, seleccione la aplicación web que registró anteriormente. La dirección URL de respuesta debe mostrar https://jwt.ms.
  7. Seleccione el botón Ejecutar ahora.
  8. En la página de registro o inicio de sesión, seleccione Contoso para iniciar sesión con la cuenta de Contoso.

Si el proceso de inicio de sesión se completa correctamente, el explorador se redirige a https://jwt.ms, que muestra el contenido del token devuelto por Azure AD B2C.

Pasos siguientes