Compartir a través de


Configuración de xID con Azure Active Directory B2C para la autenticación sin contraseña

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.

En este tutorial, aprenderá a integrar la autenticación de Azure Active Directory B2C (Azure AD B2C) con la solución de identificador digital xID. La aplicación xID proporciona a los usuarios autenticación segura y multifactor sin contraseña. La tarjeta Mi número, la tarjeta de identificación digital emitida por el gobierno japonés, comprueba las identidades de usuario autenticadas por xID. Para sus usuarios, las organizaciones pueden obtener información de identificación personal comprobada (contenido del cliente) a través de la API xID. Además, la aplicación xID genera una clave privada en un área segura en dispositivos móviles de usuario, lo que los convierte en dispositivos de firma digital.

Prerrequisitos

Descripción del escenario

En el diagrama siguiente se muestra la arquitectura.

Diagrama de la arquitectura xID.

  1. En la página de inicio de sesión de Azure AD B2C, el usuario inicia sesión o se registra.
  2. Azure AD B2C redirige al usuario al punto de conexión de la API de autorización de xID mediante una solicitud de OpenID Connect (OIDC). Un punto de conexión OIDC tiene información de punto de conexión. El proveedor de identidades xID (IdP) redirige al usuario a la página de inicio de sesión de autorización de xID. El usuario escribe la dirección de correo electrónico.
  3. xID IdP envía una notificación push al dispositivo móvil del usuario.
  4. El usuario abre la aplicación xID, comprueba la solicitud, escribe un PIN o usa biometría. La aplicación xID activa la clave privada y crea una firma electrónica.
  5. La aplicación xID envía la firma a xID IdP para su comprobación.
  6. Aparece una pantalla de consentimiento para proporcionar información personal al servicio.
  7. xID IdP devuelve el código de autorización de OAuth a Azure AD B2C.
  8. Azure AD B2C envía una solicitud de token mediante el código de autorización.
  9. xID IdP comprueba la solicitud de token. Si es válido, se devuelve el token de acceso de OAuth y el token de identificador con el identificador de usuario y la dirección de correo electrónico.
  10. Si se necesita contenido de cliente de usuario, Azure AD B2C llama a la API de datos de usuario xID.
  11. La API de datos de usuario xID devuelve contenido de cliente cifrado. Los usuarios descifran con una clave privada, creada al solicitar información de cliente xID.
  12. Al usuario se le concede o se le niega el acceso a la aplicación del cliente.

Instalación de xID

  1. Para solicitar documentos de API, rellene el formulario de solicitud. Vaya a Póngase en contacto con nosotros.
  2. En el mensaje, indique que usa Azure AD B2C.
  3. Un representante de ventas xID se pone en contacto con usted.
  4. Siga las instrucciones del documento de la API de xID.
  5. Solicite un cliente de api xID.
  6. El equipo técnico de xID le envía información de cliente en 3-4 días laborables.
  7. Proporcione un URI de redirección en el sitio con el siguiente patrón. Los usuarios vuelven a él después de la autenticación.

https://<your-b2c-domain>.b2clogin.com/<your-b2c-domain>.onmicrosoft.com/oauth2/authresp

Registro de una aplicación web en Azure AD B2C

Registre las aplicaciones en un inquilino que administre y, a continuación, puede interactuar con Azure AD B2C.

Más información: Tipos de aplicación que se pueden usar en Active Directory B2C

Para realizar pruebas, registre https://jwt.ms, una aplicación web de Microsoft con contenido de token descodificado, que no deje el explorador.

Registro de una aplicación web

Complete los pasos descritos en Tutorial: Registro de una aplicación web en el artículo de Azure Active Directory B2C .

Creación de una clave de directiva xID

Almacene el secreto de cliente de xID en el inquilino de Azure AD B2C. Para obtener las instrucciones siguientes, use el directorio con el inquilino de Azure AD B2C.

  1. Inicie sesión en Azure Portal.
  2. En la barra de herramientas del portal, seleccione Directorios y suscripciones.
  3. En la configuración del portal | Directorios y suscripciones página, en la lista Nombre del directorio, busque el directorio de Azure AD B2C.
  4. Seleccione Cambiar.
  5. En la esquina superior izquierda de Azure Portal, seleccione Todos los servicios.
  6. Busque y seleccione Azure AD B2C.
  7. En Información general, seleccione Identity Experience Framework.
  8. Seleccione Claves de directiva.
  9. Selecciona Agregar.
  10. En Opciones, seleccione Manual.
  11. Escriba un nombre para la clave de política. El prefijo B2C_1A_ se anexa al nombre de clave.
  12. En Secreto, escriba el secreto de cliente de xID.
  13. En Uso de claves, seleccione Firma.
  14. Selecciona Crear.

Nota:

En Azure AD B2C, las directivas personalizadas son para escenarios complejos.

Consulte la introducción a los flujos de usuario y las directivas personalizadas.

Configuración de xID como proveedor de identidades

Para que los usuarios inicien sesión usando xID, convierta xID en un proveedor de declaraciones con el que Azure AD B2C se comunica a través de un punto de conexión. El punto de conexión proporciona notificaciones que Azure AD B2C usa para comprobar que los usuarios se autentican con identidad digital en su dispositivo.

Añadir xID como proveedor de reclamaciones

Obtenga los paquetes de inicio de directivas personalizados de GitHub y, a continuación, actualice los archivos XML en el paquete de inicio SocialAccounts con el nombre del inquilino de Azure AD B2C.

  1. Descargue el archivo ZIP active-directory-b2c-policy-starterpack-main o clone el repositorio. Consulte Azure-Samples/active-directory-b2c-custom-policy-starterpack.

  2. En los archivos del directorio SocialAccounts , reemplace la cadena yourtenant por el nombre del inquilino de Azure AD B2C. Por ejemplo, yourtenant.onmicrosoft.com se convierte en contoso.onmicrosoft.com.

  3. Abra CuentasSociales/TrustFrameworkExtensions.xml.

  4. Busque el elemento ClaimsProviders. Si no hay ninguna, agréguela bajo el elemento raíz.

  5. Agregue un nuevo ClaimsProvider similar al ejemplo siguiente:

    
     <ClaimsProvider>
       <Domain>X-ID</Domain>
       <DisplayName>X-ID</DisplayName>
       <TechnicalProfiles>
         <TechnicalProfile Id="X-ID-OIDC">
           <DisplayName>X-ID</DisplayName>
           <Description>Login with your X-ID account</Description>
           <Protocol Name="OpenIdConnect" />
           <Metadata>
             <Item Key="METADATA">https://oidc-uat.x-id.io/.well-known/openid-configuration</Item>
             <!-- Update the Client ID below to the X-ID Application ID -->
             <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item>
             <Item Key="response_types">code</Item>
             <Item Key="scope">openid verification</Item>
             <Item Key="response_mode">query</Item>
             <Item Key="HttpBinding">POST</Item>
             <Item Key="UsePolicyInRedirectUri">false</Item>
             <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
             <Item Key="token_endpoint_auth_method">client_secret_basic</Item>
             <Item Key="ClaimsEndpoint">https://oidc-uat.x-id.io/userinfo</Item>
             <Item Key="ValidTokenIssuerPrefixes">https://oidc-uat.x-id.io/</Item>
           </Metadata>
           <CryptographicKeys>
             <Key Id="client_secret" StorageReferenceId="B2C_1A_XIDSecAppSecret" />
           </CryptographicKeys>
           <OutputClaims>
             <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
             <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid" />
             <OutputClaim ClaimTypeReferenceId="email" />
             <OutputClaim ClaimTypeReferenceId="sid" />
             <OutputClaim ClaimTypeReferenceId="userdataid" />
             <OutputClaim ClaimTypeReferenceId="XID_verified" />
             <OutputClaim ClaimTypeReferenceId="email_verified" />
             <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
             <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" DefaultValue="https://oidc-uat.x-id.io/" />
             <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
           </OutputClaims>
           <OutputClaimsTransformations>
             <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
             <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
             <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
             <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
           </OutputClaimsTransformations>
           <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
         </TechnicalProfile>
    
       <TechnicalProfile Id="X-ID-Userdata">
         <DisplayName>Userdata (Personal Information)</DisplayName>
         <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
         <Metadata>
           <Item Key="ServiceUrl">https://api-uat.x-id.io/v4/verification/userdata</Item>
           <Item Key="SendClaimsIn">Header</Item>
           <Item Key="AuthenticationType">Bearer</Item>
           <Item Key="UseClaimAsBearerToken">identityProviderAccessToken</Item>
           <!-- <Item Key="AllowInsecureAuthInProduction">true</Item> -->
           <Item Key="DebugMode">true</Item>
           <Item Key="DefaultUserMessageIfRequestFailed">Can't process your request right now, please try again later.</Item>
         </Metadata>
         <InputClaims>
           <!-- Claims sent to your REST API -->
           <InputClaim ClaimTypeReferenceId="identityProviderAccessToken" />
         </InputClaims>
         <OutputClaims>
           <!-- Claims parsed from your REST API -->
           <OutputClaim ClaimTypeReferenceId="last_name" />
           <OutputClaim ClaimTypeReferenceId="first_name" />
           <OutputClaim ClaimTypeReferenceId="previous_name" />
           <OutputClaim ClaimTypeReferenceId="year" />
           <OutputClaim ClaimTypeReferenceId="month" />
           <OutputClaim ClaimTypeReferenceId="date" />
           <OutputClaim ClaimTypeReferenceId="prefecture" />
           <OutputClaim ClaimTypeReferenceId="city" />
           <OutputClaim ClaimTypeReferenceId="address" />
           <OutputClaim ClaimTypeReferenceId="sub_char_common_name" />
           <OutputClaim ClaimTypeReferenceId="sub_char_previous_name" />
           <OutputClaim ClaimTypeReferenceId="sub_char_address" />
           <OutputClaim ClaimTypeReferenceId="gender" />
           <OutputClaim ClaimTypeReferenceId="verified_at" />
         </OutputClaims>
         <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
       </TechnicalProfile>
     </TechnicalProfiles>
     </ClaimsProvider>
    
    
  6. Establezca client_id con el identificador de aplicación xID.

  7. Haga clic en Guardar.

Adición de un recorrido del usuario

Agregue un proveedor de identidades a las páginas de inicio de sesión.

  1. Si tiene un recorrido de usuario personalizado, vaya a Agregar el proveedor de identidades a un recorrido del usuario. De lo contrario, cree un duplicado de un recorrido de usuario de plantilla:
  2. En el paquete de inicio, abra el TrustFrameworkBase.xml.
  3. Busque y copie el contenido del elemento UserJourneys que incluye ID=SignUpOrSignIn.
  4. Abra el TrustFrameworkExtensions.xml y busque el elemento UserJourneys. Si no hay ninguna, agregue una.
  5. Pegue el contenido del elemento UserJourney como elemento secundario del elemento UserJourneys.
  6. Cambie el nombre del identificador de recorrido del usuario. Por ejemplo: ID=CustomSignUpSignIn

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

Agregue el nuevo proveedor de identidades al recorrido del usuario.

  1. Busque el elemento del paso de orquestación con Type=CombinedSignInAndSignUp, o Type=ClaimsProviderSelection en el recorrido del usuario. Normalmente es el primer paso de orquestación. El elemento ClaimsProviderSelections tiene una lista de proveedores de identidades para iniciar sesión. El orden de los elementos controla el orden de los botones de inicio de sesión.
  2. Agregue un elemento XML ClaimsProviderSelection.
  3. Establezca el valor de TargetClaimsExchangeId en un nombre descriptivo.
  4. Agregue un elemento ClaimsExchange .
  5. Establezca el id. en el valor del id. de intercambio de notificaciones de destino. Este cambio vincula el botón xID a la acción X-IDExchange.
  6. Actualice el valor technicalProfileReferenceId al identificador de perfil técnico que creó (X-ID-OIDC).
  7. Agregue un paso de orquestación para llamar al punto de conexión UserInfo de xID para devolver notificaciones acerca del usuario autenticado X-ID-Userdata.

El siguiente XML muestra la orquestación del recorrido del usuario con el proveedor de identidades xID.


 <UserJourney Id="CombinedSignInAndSignUp">
   <OrchestrationSteps>

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

     <OrchestrationStep Order="2" Type="ClaimsExchange">
       <ClaimsExchanges>
         <ClaimsExchange Id="X-IDExchange" TechnicalProfileReferenceId="X-ID-OIDC" />
       </ClaimsExchanges>
     </OrchestrationStep>

     <OrchestrationStep Order="3" Type="ClaimsExchange">
       <ClaimsExchanges>
         <ClaimsExchange Id="X-ID-Userdata" TechnicalProfileReferenceId="X-ID-Userdata" />
       </ClaimsExchanges>
     </OrchestrationStep>

     <!-- For social IDP authentication, attempt to find the user account in the directory. -->
     <OrchestrationStep Order="4" Type="ClaimsExchange">
       <ClaimsExchanges>
         <ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="AAD-UserReadUsingAlternativeSecurityId-NoError" />
       </ClaimsExchanges>
     </OrchestrationStep>

     <!-- Show self-asserted page only if the directory does not have the user account already (i.e. we do not have an objectId).  -->
     <OrchestrationStep Order="5" Type="ClaimsExchange">
       <Preconditions>
         <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
           <Value>objectId</Value>
           <Action>SkipThisOrchestrationStep</Action>
         </Precondition>
       </Preconditions>
       <ClaimsExchanges>
         <ClaimsExchange Id="SelfAsserted-Social" TechnicalProfileReferenceId="SelfAsserted-Social" />
       </ClaimsExchanges>
     </OrchestrationStep>

     <!-- The previous step (SelfAsserted-Social) could have been skipped if there were no attributes to collect 
          from the user. So, in that case, create the user in the directory if one does not already exist 
          (verified using objectId which would be set from the last step if account was created in the directory. -->
     <OrchestrationStep Order="6" Type="ClaimsExchange">
       <Preconditions>
         <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
           <Value>objectId</Value>
           <Action>SkipThisOrchestrationStep</Action>
         </Precondition>
       </Preconditions>
       <ClaimsExchanges>
         <ClaimsExchange Id="AADUserWrite" TechnicalProfileReferenceId="AAD-UserWriteUsingAlternativeSecurityId" />
       </ClaimsExchanges>
     </OrchestrationStep>

     <OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />

   </OrchestrationSteps>
   <ClientDefinition ReferenceId="DefaultWeb" />
 </UserJourney>

Hay notificaciones de identidad que xID admite referencias como parte de la directiva. El esquema de notificaciones es donde se declaran las notificaciones. El elemento ClaimsSchema tiene una lista de elementos ClaimType. El elemento ClaimType contiene el atributo ID, que es el nombre de la notificación.

  1. Abra el TrustFrameworksExtension.xml.
  2. Busque el elemento BuildingBlocks .
  3. Agregue el siguiente elemento ClaimType en el elemento ClaimsSchema de la directiva de TrustFrameworksExtension.xml
 <BuildingBlocks>
    <ClaimsSchema>
      <!-- xID -->
      <ClaimType Id="sid">
        <DisplayName>sid</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="userdataid">
        <DisplayName>userdataid</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="xid_verified">
        <DisplayName>xid_verified</DisplayName>
        <DataType>boolean</DataType>
      </ClaimType>
      <ClaimType Id="email_verified">
        <DisplayName>email_verified</DisplayName>
        <DataType>boolean</DataType>
      </ClaimType>
      <ClaimType Id="identityProviderAccessToken">
        <DisplayName>Identity Provider Access Token</DisplayName>
        <DataType>string</DataType>
        <AdminHelpText>Stores the access token of the identity provider.</AdminHelpText>
      </ClaimType>
      <ClaimType Id="last_name">
        <DisplayName>last_name</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="first_name">
        <DisplayName>first_name</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="previous_name">
        <DisplayName>previous_name</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="year">
        <DisplayName>year</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="month">
        <DisplayName>month</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="date">
        <DisplayName>date</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="prefecture">
        <DisplayName>prefecture</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="city">
        <DisplayName>city</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="address">
        <DisplayName>address</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="sub_char_common_name">
        <DisplayName>sub_char_common_name</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="sub_char_previous_name">
        <DisplayName>sub_char_previous_name</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="sub_char_address">
        <DisplayName>sub_char_address</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <ClaimType Id="verified_at">
        <DisplayName>verified_at</DisplayName>
        <DataType>int</DataType>
      </ClaimType>
      <ClaimType Id="gender">
        <DisplayName>Gender</DisplayName>
        <DataType>string</DataType>
        <DefaultPartnerClaimTypes>
          <Protocol Name="OpenIdConnect" PartnerClaimType="gender" />
        </DefaultPartnerClaimTypes>
        <AdminHelpText>The user's gender.</AdminHelpText>
        <UserHelpText>Your gender.</UserHelpText>
        <UserInputType>TextBox</UserInputType>
      </ClaimType>
      <ClaimType Id="correlationId">
        <DisplayName>correlation ID</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      <!-- xID -->
    </ClaimsSchema>
  </BuildingBlocks>

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 ejecuta Azure AD B2C.

  1. En el usuario de confianza, busque el elemento DefaultUserJourney.
  2. Actualice ReferenceId para que coincida con el identificador del recorrido del usuario que agregó al proveedor de identidades.

En el ejemplo siguiente, para el recorrido del usuario xID, referenceId se establece en CombinedSignInAndSignUp.

   <RelyingParty>
        <DefaultUserJourney ReferenceId="CombinedSignInAndSignUp" />
        <TechnicalProfile Id="PolicyProfile">
          <DisplayName>PolicyProfile</DisplayName>
          <Protocol Name="OpenIdConnect" />
          <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
          <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
          <OutputClaim ClaimTypeReferenceId="correlationId" DefaultValue="{Context:CorrelationId}" />
          <OutputClaim ClaimTypeReferenceId="issuerUserId" />
          <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
          <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="last_name" />
          <OutputClaim ClaimTypeReferenceId="previous_name" />
          <OutputClaim ClaimTypeReferenceId="year" />
          <OutputClaim ClaimTypeReferenceId="month" />
          <OutputClaim ClaimTypeReferenceId="date" />
          <OutputClaim ClaimTypeReferenceId="prefecture" />
          <OutputClaim ClaimTypeReferenceId="city" />
          <OutputClaim ClaimTypeReferenceId="address" />
          <OutputClaim ClaimTypeReferenceId="sub_char_common_name" />
          <OutputClaim ClaimTypeReferenceId="sub_char_previous_name" />
          <OutputClaim ClaimTypeReferenceId="sub_char_address" />
          <OutputClaim ClaimTypeReferenceId="gender" />
          <OutputClaim ClaimTypeReferenceId="verified_at" />
          <OutputClaim ClaimTypeReferenceId="email" />
          <OutputClaim ClaimTypeReferenceId="sid" />
          <OutputClaim ClaimTypeReferenceId="userdataid" />
          <OutputClaim ClaimTypeReferenceId="xid_verified" />
          <OutputClaim ClaimTypeReferenceId="email_verified" />
          </OutputClaims>
          <SubjectNamingInfo ClaimType="sub" />
        </TechnicalProfile>
      </RelyingParty>

Carga de la directiva personalizada

Para obtener las instrucciones siguientes, use el directorio con el inquilino de Azure AD B2C.

  1. Inicie sesión en Azure Portal.
  2. En la barra de herramientas del portal, seleccione directorios y suscripciones.
  3. En la configuración del portal | Página Directorios y suscripciones , en la lista Nombre del directorio . localice el directorio de Azure AD B2C.
  4. Seleccione Cambiar.
  5. En Azure Portal, busque Azure AD B2C y selecciónelo.
  6. En Directivas, seleccione Identity Experience Framework.
  7. Seleccione Cargar directiva personalizada.
  8. Cargue los archivos en el orden siguiente:
  • Archivo de directiva base: TrustFrameworkBase.xml
  • Directiva de extensión: TrustFrameworkExtensions.xml
  • Directiva de usuario de confianza: SignUpSignIn.xml

Prueba la política personalizada

  1. En la entidad de Azure AD B2C, y dentro de Directivas, seleccione Marco de experiencia de identidad.
  2. En Directivas personalizadas, seleccione CustomSignUpSignIn.
  3. En Aplicación, seleccione la aplicación web que registró. La dirección URL de respuesta es https://jwt.ms.
  4. Seleccione Ejecutar ahora.
  5. El explorador redirige a la página de inicio de sesión de xID.
  6. El explorador redirige a https://jwt.ms. Aparecerá el contenido del token devuelto por Azure AD B2C.

Pasos siguientes