Configuración de la suscripción y del inicio de sesión con un id. de Apple mediante Azure Active Directory B2C

Antes de comenzar, use el selector Elección de un tipo de directiva para elegir el tipo de directiva que va a configurar. Azure Active Directory B2C ofrece dos métodos para definir el modo en que los usuarios interactúan con las aplicaciones: por medio de flujos de usuario predefinidos o de directivas personalizadas totalmente configurables. Los pasos necesarios en este artículo son diferentes para cada método.

Nota:

En Azure Active Directory B2C, las directivas personalizadas se han diseñado principalmente para abordar escenarios complejos. Para la mayoría de los escenarios, se recomienda usar flujos de usuario integrados. Si no lo ha hecho, obtenga información sobre el paquete de inicio de directivas personalizadas en Introducción a las directivas personalizadas en Active Directory B2C.

Requisitos previos

Creación de una aplicación de id. de Apple

Para habilitar el inicio de sesión para los usuarios con un id. de Apple en Azure Active Directory B2C (Azure AD B2C), tiene que crear una aplicación en https://developer.apple.com. Para más información, vea Inicio de sesión con Apple. Si aún no tiene una cuenta de desarrollador de Apple, puede registrarse en el Programa Apple Developer.

  1. Inicie sesión en el portal de Apple Developer con sus credenciales de la cuenta.
  2. En el menú, seleccione Certificados, identificadores y perfiles y, a continuación, seleccione (+).
  3. En Register a New Identifier (Registrar un nuevo identificador), seleccione Identificadores de aplicaciones y, a continuación, seleccione Continuar.
  4. En Seleccionar un tipo, seleccione Aplicación y, a continuación, seleccione Continuar.
  5. Para Registrar un identificador de aplicación:
    1. Escriba una Descripción.
    2. Escriba el Id. de agrupación, como com.contoso.azure-ad-b2c.
    3. En Funcionalidades, seleccione Iniciar sesión con Apple en la lista de funcionalidades.
    4. Tome nota del Team ID (Id. de equipo) (prefijo de id. de aplicación) en este paso. Lo necesitará más adelante.
    5. Seleccione Continue (Continuar) y Register (Registrar).
  6. En el menú, seleccione Certificados, identificadores y perfiles y, a continuación, seleccione (+).
  7. En Register a New Identifier (Registrar un nuevo identificador), seleccione Services IDs (Identificadores de servicio) y, a continuación, seleccione Continuar.
  8. Para Registrar un identificador de servicios:
    1. Escriba una Descripción. La descripción se mostrará al usuario en la pantalla de consentimiento.
    2. Escriba el Identificador, como com.consoto.azure-ad-b2c-service. Anote el valor del Service ID (Id. del servicio). El identificador es el Client ID (Id. de cliente) para el flujo de OpenID Connect.
    3. Seleccione Continuar y Registrar.
  9. En Identificadores, seleccione el identificador que ha creado.
  10. Seleccione Iniciar sesión con Apple y, a continuación, seleccione Configurar.
    1. Seleccione Primary App ID (Identificador de aplicación principal) con el que quiere configurar el inicio de sesión con Apple.
    2. En Domains and Subdomains (Dominios y subdominios), escriba your-tenant-name.b2clogin.com. Especifique el nombre del inquilino en el campo de nombre. Si usa un dominio personalizado, escriba https://your-domain-name.
    3. En Return URLs (Direcciones URL de retorno), escriba https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp. Si usa un dominio personalizado, escriba https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp. Reemplace your-tenant-name por el nombre del inquilino, y your-domain-name por el dominio personalizado. La dirección URL de retorno tiene que estar en minúsculas.
    4. Seleccione Siguiente y después Listo.
    5. Cuando se cierre la ventana emergente, seleccione Continuar y, a continuación, seleccione Guardar.

Creación de un secreto de cliente de Apple

  1. En el menú del portal de Apple Developer, seleccione Claves y, a continuación, seleccione (+) .
  2. Para Registrar una nueva clave:
    1. Escriba un Nombre de clave.
    2. Seleccione Iniciar sesión con Apple y, a continuación, seleccione Configurar.
    3. Para Primary App ID (Identificador de aplicación principal), seleccione la aplicación que creó anteriormente y seleccione Guardar.
    4. Seleccione Configurar y, a continuación, seleccione Registrar para finalizar el proceso de registro de claves. Anote el valor de Key ID (Id. de clave). Esta clave es necesaria al configurar flujos de usuario.
  3. Para Download Your Key (Descargar su clave), seleccione Descargar para descargar un archivo .p8 que contenga la clave.

Configuración de Apple como proveedor de identidades

  1. Inicie sesión en Azure Portal como un administrador global del inquilino de Azure AD B2C.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar al inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. En Servicios de Azure, seleccione Azure AD B2C. O bien, use el cuadro de búsqueda para buscar y seleccionar Azure AD B2C.
  4. Seleccione Proveedores de identidades y luego Apple.
  5. En Name (Nombre), escriba Sign in with Apple (Iniciar sesión con Apple).
  6. Escriba el Apple developer ID (Team ID) [Id. de desarrollador de Apple (id. de equipo)].
  7. Escriba el Apple service ID (client ID) (Id. de servicio de Apple [id. de cliente]).
  8. Escriba el Apple key ID (Id. de clave de Apple) del paso Creación de un secreto de cliente de Apple.
  9. Seleccione y cargue los Apple certificate data (Datos del certificado de Apple).
  10. Seleccione Guardar.

Importante

  • El inicio de sesión con Apple requiere que el administrador renueve el secreto de cliente cada 6 meses.
  • El secreto de cliente de Apple se renovará automáticamente cuando expire. Si tiene que renovar manualmente el secreto, abra Azure AD B2C en Azure Portal, vaya a Proveedores de identidades>Apple y seleccione Renew secret (Renovar secreto).
  • Siga las instrucciones para ofrecer el botón Iniciar sesión con Apple.

Adición del proveedor de identidades de Apple a un flujo de usuario

Para permitir que los usuarios inicien sesión con un identificador de Apple, debe agregar el proveedor de identidades de Apple a un flujo de usuario. El inicio de sesión con Apple solo puede configurarse para la versión recomendada de flujos de usuario. Para agregar el proveedor de identidades de Apple a un flujo de usuario:

  1. En el inquilino de Azure AD B2C, seleccione Flujos de usuario.
  2. Seleccione un flujo de usuario para el que desee agregar el proveedor de identidades de Apple.
  3. En Proveedores de identidades sociales, seleccione Apple.
  4. Seleccione Guardar.
  5. Para probar la directiva, seleccione Ejecutar flujo de usuario.
  6. En Aplicación, seleccione la aplicación web denominada testapp1 que registró anteriormente. La dirección URL de respuesta debe mostrar https://jwt.ms.
  7. Seleccione el botón Ejecutar flujo de usuario.
  8. En la página de registro o de inicio de sesión, seleccione Apple para iniciar sesión con el identificador de Apple.

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.

Firma del secreto de cliente

Use el archivo .p8 que descargó anteriormente para firmar el secreto de cliente en un token JWT. Hay muchas bibliotecas que pueden crear y firmar el JWT por usted. Use la función de Azure que crea un token automáticamente.

  1. Cree una Función de Azure.

  2. En Desarrollador, seleccione Código y prueba.

  3. Copie el contenido del archivo run.csx y péguelo en el editor.

  4. Seleccione Guardar.

  5. Realice una solicitud HTTP POST y proporcione la siguiente información:

    • appleTeamId: identificador del equipo de Apple Developer.
    • appleServiceId: el identificador de servicio de Apple (identificador de cliente).
    • appleKeyId: identificador de clave de 10 dígitos almacenado en el encabezado JWT (necesario para Apple)
    • p8key: la clave de formato PEM. Para obtenerla, abra el archivo .p8 en un editor de texto y copie todo lo comprendido entre -----BEGIN PRIVATE KEY----- y -----END PRIVATE KEY----- sin saltos de línea.

El siguiente código JSON es un ejemplo de una llamada a la función de Azure:

{
    "appleTeamId": "ABC123DEFG",
    "appleServiceId": "com.yourcompany.app1",
    "appleKeyId": "URKEYID001",
    "p8key": "MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQg+s07NiAcuGEu8rxsJBG7ttupF6FRe3bXdHxEipuyK82gCgYIKoZIzj0DAQehRANCAAQnR1W/KbbaihTQayXH3tuAXA8Aei7u7Ij5OdRy6clOgBeRBPy1miObKYVx3ki1msjjG2uGqRbrc1LvjLHINWRD"
}

La función de Azure responde con un JWT de secreto de cliente con el formato correcto y firmado en una respuesta; por ejemplo:

{
    "token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjb20ueW91cmNvbXBhbnkuYXBwMSIsIm5iZiI6MTU2MDI2OTY3NSwiZXhwIjoxNTYwMzU2MDc1LCJpc3MiOiJBQkMxMjNERUZHIiwiYXVkIjoiaHR0cHM6Ly9hcHBsZWlkLmFwcGxlLmNvbSJ9.Dt9qA9NmJ_mk6tOqbsuTmfBrQLFqc9BnSVKR6A-bf9TcTft2XmhWaVODr7Q9w1PP3QOYShFXAnNql5OdNebB4g"
}

Creación de una clave de directiva

Debe almacenar el secreto de cliente que haya registrado previamente 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 al inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. En Servicios de Azure, seleccione Azure AD B2C. O bien, use el cuadro de búsqueda para buscar y seleccionar Azure AD B2C.
  4. En la página de introducción, seleccione Identity Experience Framework.
  5. Seleccione Claves de directiva y, luego, Agregar.
  6. En Opciones, elija Manual.
  7. Escriba un nombre para la clave de directiva. Por ejemplo, "AppleSecret". Se agrega el prefijo "B2C_1A_" automáticamente al nombre de la clave.
  8. En Secreto, escriba el valor de un token devuelto por la función de Azure (un token JWT).
  9. En Uso de claves, seleccione Firma.
  10. Seleccione Crear.

Importante

  • El inicio de sesión con Apple requiere que el administrador renueve el secreto de cliente cada 6 meses.
  • Tendrá que renovar manualmente el secreto de cliente de Apple, si expira, y almacenar el nuevo valor en la clave de la directiva.
  • Se recomienda establecer su propio recordatorio en 6 meses para generar un nuevo secreto de cliente.
  • Siga las instrucciones para ofrecer el botón Iniciar sesión con Apple.

Configuración de Apple como proveedor de identidades

Para permitir que los usuarios inicien sesión con una identificador de Apple, deberá definir la cuenta como un proveedor de notificaciones con el que Azure AD B2C pueda comunicarse mediante un punto de conexión. El punto de conexión proporciona un conjunto de notificaciones que Azure AD B2C usa para comprobar que un usuario concreto está autenticado.

Puede definir un identificador de Apple como proveedor de notificaciones; para ello, agréguelo al elemento ClaimsProvider en el archivo de extensión de la directiva.

  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>apple.com</Domain>
      <DisplayName>Apple</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Apple-OIDC">
          <DisplayName>Sign in with Apple</DisplayName>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
            <Item Key="ProviderName">apple</Item>
            <Item Key="authorization_endpoint">https://appleid.apple.com/auth/authorize</Item>
            <Item Key="AccessTokenEndpoint">https://appleid.apple.com/auth/token</Item>
            <Item Key="JWKS">https://appleid.apple.com/auth/keys</Item>
            <Item Key="issuer">https://appleid.apple.com</Item>
            <Item Key="scope">name email openid</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="response_types">code</Item>
            <Item Key="external_user_identity_claim_id">sub</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="ReadBodyClaimsOnIdpRedirect">user.name.firstName user.name.lastName user.email</Item>
            <Item Key="client_id">You Apple ID</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_AppleSecret"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="https://appleid.apple.com" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="user.name.firstName"/>
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="user.name.lastName"/>
            <OutputClaim ClaimTypeReferenceId="email" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. Establezca client_id en el identificador del servicio. Por ejemplo, com.consoto.azure-ad-b2c-service.

  5. Guarde el archivo.

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="AppleExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="AppleExchange" TechnicalProfileReferenceId="Apple-OIDC" />
  </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.

Prueba de la directiva personalizada

  1. Seleccione la directiva de usuarios de confianza, por ejemplo B2C_1A_signup_signin.
  2. En Aplicación, seleccione la aplicación web que registró anteriormente. La dirección URL de respuesta debe mostrar https://jwt.ms.
  3. Seleccione el botón Ejecutar ahora.
  4. En la página de registro o de inicio de sesión, seleccione Apple para iniciar sesión con el identificador de Apple.

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.

Personalización de la interfaz de usuario

Siga las instrucciones para ofrecer Iniciar sesión con Apple. Apple proporciona varios botones Inicio sesión con Apple que puede usar para permitir que los usuarios configuren una cuenta e inicien sesión. Si es necesario, cree un botón personalizado para ofrecer Iniciar sesión con Apple. Obtenga información sobre cómo mostrar un botón Iniciar sesión con Apple.

Para alinearse con las directrices de la interfaz de usuario de Apple: