Configuración de tokens en Azure Active Directory B2COverview of tokens in Azure Active Directory B2C

Nota

En Azure Active Directory B2C, las directivas personalizadas se han diseñado principalmente para abordar escenarios complejos.In Azure Active Directory B2C, custom policies are designed primarily to address complex scenarios. Para la mayoría de los escenarios, se recomienda usar flujos de usuario integrados.For most scenarios, we recommend that you use built-in user flows.

Azure Active Directory B2C (Azure AD B2C) emite varios tipos de tokens de seguridad a medida que procesa cada flujo de autenticación.Azure Active Directory B2C (Azure AD B2C) emits several types of security tokens as it processes each authentication flow. Este documento describe el formato, las características de seguridad y el contenido de cada tipo de token.This document describes the format, security characteristics, and contents of each type of token.

Tipos de tokenToken types

Azure AD B2C admite los protocolos OAuth 2.0 y OpenID Connect, que utilizan tokens para la autenticación y el acceso seguro a los recursos.Azure AD B2C supports the OAuth 2.0 and OpenID Connect protocols, which makes use of tokens for authentication and secure access to resources. Todos los tokens usados en Azure AD B2C son tokens web JSON (JWT), que contienen aserciones de información sobre el portador y el asunto del token.All tokens used in Azure AD B2C are JSON web tokens (JWTs) that contain assertions of information about the bearer and the subject of the token.

Los tokens siguientes se utilizan en la comunicación con Azure AD B2C:The following tokens are used in communication with Azure AD B2C:

  • Token de identificador: JWT que contiene las notificaciones que puede usar para identificar usuarios en la aplicación.ID token - A JWT that contains claims that you can use to identify users in your application. Este token se envía de forma segura en las solicitudes HTTP para la comunicación entre dos componentes de la misma aplicación o el mismo servicio.This token is securely sent in HTTP requests for communication between two components of the same application or service. Puede usar las notificaciones en un token de identificador como considere oportuno.You can use the claims in an ID token as you see fit. Se suelen usar para mostrar información sobre la cuenta o para tomar decisiones sobre el control de acceso en una aplicación.They are commonly used to display account information or to make access control decisions in an application. Los tokens de identificador están firmados, pero no cifrados.ID tokens are signed, but they are not encrypted. Cuando una aplicación o API recibe un token de identificador, debe validar la firma para demostrar que es auténtico.When your application or API receives an ID token, it must validate the signature to prove that the token is authentic. La aplicación o la API también deben validar algunas notificaciones del token para demostrar que es válido.Your application or API must also validate a few claims in the token to prove that it's valid. En función de los requisitos del escenario, las notificaciones validadas por una aplicación pueden variar, pero la aplicación debe realizar algunas validaciones de notificación comunes en todos los escenarios.Depending on the scenario requirements, the claims validated by an application can vary, but your application must perform some common claim validations in every scenario.
  • Token de acceso: JWT que contiene notificaciones que puede usar para identificar los permisos concedidos a las API.Access token - A JWT that contains claims that you can use to identify the granted permissions to your APIs. Los tokens de acceso están firmados, pero no cifrados.Access tokens are signed, but they aren't encrypted. Los tokens de acceso se utilizan para proporcionar acceso a las API y los servidores de recursos.Access tokens are used to provide access to APIs and resource servers. Cuando una API recibe un token de acceso, debe validar la firma para demostrar que es auténtico.When your API receives an access token, it must validate the signature to prove that the token is authentic. La API también debe validar algunas notificaciones del token para demostrar que es válido.Your API must also validate a few claims in the token to prove that it is valid. En función de los requisitos del escenario, las notificaciones validadas por una aplicación pueden variar, pero la aplicación debe realizar algunas validaciones de notificación comunes en todos los escenarios.Depending on the scenario requirements, the claims validated by an application can vary, but your application must perform some common claim validations in every scenario.
  • Token de actualización: los tokens de actualización se utilizan para adquirir nuevos tokens de identificador y tokens de acceso en un flujo de OAuth 2.0.Refresh token - Refresh tokens are used to acquire new ID tokens and access tokens in an OAuth 2.0 flow. Permite a la aplicación obtener acceso a largo plazo a los recursos en nombre de los usuarios sin necesidad de interacción con los usuarios.They provide your application with long-term access to resources on behalf of users without requiring interaction with those users. Los tokens de actualización son totalmente opacos para su aplicación.Refresh tokens are opaque to your application. Los emite Azure AD B2C y solo Azure AD B2C los puede inspeccionar e interpretar.They are issued by Azure AD B2C and can be inspected and interpreted only by Azure AD B2C. Son de larga duración, pero la aplicación no se debe escribir esperando que un token de actualización dure un período de tiempo especificado.They are long-lived, but your application shouldn't be written with the expectation that a refresh token will last for a specific period of time. Los tokens de actualización pueden invalidarse en cualquier momento por varios motivos.Refresh tokens can be invalidated at any moment for a variety of reasons. La única forma de que su aplicación sepa si un token de actualización es válido es intentar canjearlo mediante una solicitud de token a Azure AD B2C.The only way for your application to know if a refresh token is valid is to attempt to redeem it by making a token request to Azure AD B2C. Al canjear un token de actualización por un nuevo token de acceso, recibe un nuevo token de actualización en la respuesta del token.When you redeem a refresh token for a new token, you receive a new refresh token in the token response. Guarde el nuevo token de actualización.Save the new refresh token. Reemplaza al token de actualización que usó anteriormente en la solicitud.It replaces the refresh token that you previously used in the request. Esta acción ayuda a garantizar que los tokens de actualización sigan siendo válidos mientras sea posible.This action helps guarantee that your refresh tokens remain valid for as long as possible.

Puntos de conexiónEndpoints

Una aplicación registrada recibe los tokens y se comunica con Azure AD B2C mediante el envío de solicitudes a estos puntos de conexión:A registered application receives tokens and communicates with Azure AD B2C by sending requests to these endpoints:

  • https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/oauth2/v2.0/authorize
  • https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/oauth2/v2.0/token

Los tokens de seguridad que la aplicación recibe de Azure AD B2C pueden proceder de los puntos de conexión /authorize o /token.Security tokens that your application receives from Azure AD B2C can come from the /authorize or /token endpoints. Cuando los tokens de identificador se adquieren en el punto de conexión /authorize, el procedimiento se realiza con el flujo implícito, que se usa a menudo para los usuarios que inician sesión en aplicaciones web basadas en JavaScript.When ID tokens are acquired from the /authorize endpoint, it's done using the implicit flow, which is often used for users signing in to JavaScript-based web applications. Cuando se adquieren los tokens de identificador en el punto de conexión /token, el procedimiento se realiza utilizando el flujo de código de autorización, que mantiene el token oculto al explorador.When ID tokens are acquired from the /token endpoint, it's done using the authorization code flow, which keeps the token hidden from the browser.

NotificacionesClaims

Con Azure AD B2C, tendrá un control preciso sobre el contenido de los tokens.When you use Azure AD B2C, you have fine-grained control over the content of your tokens. Se pueden configurar flujos de usuario y directivas personalizadas para enviar determinados conjuntos de datos de usuario en las notificaciones que son necesarios para la aplicación.You can configure user flows and custom policies to send certain sets of user data in claims that are required for your application. Dichas notificaciones pueden incluir propiedades estándar, tales como displayName y emailAddress.These claims can include standard properties such as displayName and emailAddress. Las aplicaciones pueden usar estas notificaciones para autenticar usuarios y solicitudes de manera segura.Your applications can use these claims to securely authenticate users and requests.

Las notificaciones de tokens de identificador no se devuelven en ningún orden concreto.The claims in ID tokens are not returned in any particular order. Se pueden agregar nuevas notificaciones en tokens de identificador en cualquier momento.New claims can be introduced in ID tokens at any time. No se debe interrumpir la aplicación cuando se agreguen nuevas notificaciones.Your application shouldn't break as new claims are introduced. También puede incluir atributos de usuario personalizados en sus notificaciones.You can also include custom user attributes in your claims.

En la tabla siguiente se enumeran las notificaciones que puede esperar de los tokens de identificador y los tokens de acceso que emite Azure AD B2C.The following table lists the claims that you can expect in ID tokens and access tokens issued by Azure AD B2C.

NOMBREName NotificaciónClaim Valor de ejemploExample value DESCRIPCIÓNDescription
PúblicoAudience aud 90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 Identifica al destinatario previsto del token.Identifies the intended recipient of the token. Para Azure AD B2C, la audiencia es el identificador de la aplicación.For Azure AD B2C, the audience is the application ID. La aplicación tiene que validar este valor y rechazar el token si no coincide.Your application should validate this value and reject the token if it doesn't match. Audiencia es sinónimo de recursos.Audience is synonymous with resource.
EmisorIssuer iss https://{tenant}.b2clogin.com/775527ff-9a37-4307-8b3d-cc311f58d925/v2.0/ Identifica el servicio de token de seguridad (STS) que construye y devuelve el token.Identifies the security token service (STS) that constructs and returns the token. También identifica el directorio en el que se autenticó el usuario.It also identifies the directory in which the user was authenticated. La aplicación tiene que validar la notificación del emisor para asegurarse de que el token proviene del punto de conexión adecuado.Your application should validate the issuer claim to make sure that the token came from the appropriate endpoint.
Emitido a lasIssued at iat 1438535543 La hora en que se emitió el token, que se representa en tiempo de época.The time at which the token was issued, represented in epoch time.
Fecha de expiraciónExpiration time exp 1438539443 La hora en que el token deja de ser válido, que se representa en tiempo de época.The time at which the token becomes invalid, represented in epoch time. La aplicación tiene que usar esta notificación para comprobar la validez de la duración del token.Your application should use this claim to verify the validity of the token lifetime.
No antes deNot before nbf 1438535543 Hora a la que el token pasa a ser válido, representada en tiempo de época.The time at which the token becomes valid, represented in epoch time. Suele ser la misma hora a la que se emitió el token.This time is usually the same as the time the token was issued. La aplicación tiene que usar esta notificación para comprobar la validez de la duración del token.Your application should use this claim to verify the validity of the token lifetime.
VersiónVersion ver 1.0 Versión del token de identificador, según se ha definido en Azure AD B2C.The version of the ID token, as defined by Azure AD B2C.
Código hashCode hash c_hash SGCPtt01wxwfgnYZy2VJtQ El código hash se incluye en los tokens de identificador solo cuando el token se emite junto con un código de autorización de OAuth 2.0.A code hash included in an ID token only when the token is issued together with an OAuth 2.0 authorization code. Los códigos hash se pueden usar para validar la autenticidad de un código de autorización.A code hash can be used to validate the authenticity of an authorization code. Consulte la especificación de OpenID Connect para obtener más información sobre cómo llevar a cabo esta validación.For more information about how to perform this validation, see the OpenID Connect specification.
Hash de token de accesoAccess token hash at_hash SGCPtt01wxwfgnYZy2VJtQ El hash de token de acceso se incluye en los tokens de identificador solo cuando el token se emite junto con un token de acceso de OAuth 2.0.An access token hash included in an ID token only when the token is issued together with an OAuth 2.0 access token. El hash de token de acceso se puede usar para validar la autenticidad de un token de acceso.An access token hash can be used to validate the authenticity of an access token. Consulte la especificación de OpenID Connect para obtener más información sobre cómo llevar a cabo esta validación.For more information about how to perform this validation, see the OpenID Connect specification
Valor de seguridadNonce nonce 12345 El valor de seguridad es una estrategia que se usa para mitigar los ataques de reproducción de tokens.A nonce is a strategy used to mitigate token replay attacks. La aplicación puede especificar un valor de seguridad en una solicitud de autorización mediante el parámetro de consulta nonce.Your application can specify a nonce in an authorization request by using the nonce query parameter. El valor que se proporcione en la solicitud solo se emitirá sin modificar en la notificación nonce de un token de identificador.The value you provide in the request is emitted unmodified in the nonce claim of an ID token only. Esta notificación permite que la aplicación compruebe el valor con respecto al valor especificado en la solicitud.This claim allows your application to verify the value against the value specified on the request. La aplicación tiene que realizar esta validación durante el proceso de validación del token de identificador.Your application should perform this validation during the ID token validation process.
AsuntoSubject sub 884408e1-2918-4cz0-b12d-3aa027d7563b Entidad de seguridad sobre la que el token declara información como, por ejemplo, el usuario de una aplicación.The principal about which the token asserts information, such as the user of an application. Este valor es inmutable y no se puede reasignar ni volver a usar.This value is immutable and cannot be reassigned or reused. Se puede usar para realizar comprobaciones de autorización de forma segura, por ejemplo, cuando el token se usa para acceder a un recurso.It can be used to perform authorization checks safely, such as when the token is used to access a resource. De manera predeterminada, la notificación del asunto se rellena con el identificador de objeto del usuario del directorio.By default, the subject claim is populated with the object ID of the user in the directory.
Referencia de clase de contexto de autenticaciónAuthentication context class reference acr No aplicableNot applicable Solo se utiliza con las directivas antiguas.Used only with older policies.
Directiva de marco de confianzaTrust framework policy tfp b2c_1_signupsignin1 Nombre de la directiva que se usó para adquirir el token de identificador.The name of the policy that was used to acquire the ID token.
Hora de autenticaciónAuthentication time auth_time 1438535543 Hora a la que un usuario especificó sus credenciales por última vez, representada en hora de época.The time at which a user last entered credentials, represented in epoch time. No existe distinción entre una autenticación que sea un inicio de sesión nuevo, una sesión de inicio de sesión único (SSO) u otro tipo de inicio de sesión.There is no discrimination between that authentication being a fresh sign-in, a single sign-on (SSO) session, or another sign-in type. auth_time muestra la última vez que la aplicación (o el usuario) inició un intento de autenticación en Azure AD B2C.The auth_time is the last time the application (or user) initiated an authentication attempt against Azure AD B2C. No se indica el método usado para la autenticación.The method used to authenticate is not differentiated.
ÁmbitoScope scp Read Permisos concedidos al recurso para un token de acceso.The permissions granted to the resource for an access token. Si se trata de varios permisos concedidos, se separan con un espacio.Multiple granted permissions are separated by a space.
Entidad autorizadaAuthorized Party azp 975251ed-e4f5-4efd-abcb-5f1a8f566ab7 El id. de la aplicación cliente que inició la solicitud.The application ID of the client application that initiated the request.

ConfiguraciónConfiguration

Las siguientes propiedades se utilizan para administrar la vigencia de los tokens de seguridad emitidos por Azure AD B2C:The following properties are used to manage lifetimes of security tokens emitted by Azure AD B2C:

  • Vigencia (en minutos) de token de acceso y de identificador: la vigencia del token de portador de OAuth 2.0 que se utiliza para obtener acceso a un recurso protegido.Access & ID token lifetimes (minutes) - The lifetime of the OAuth 2.0 bearer token used to gain access to a protected resource. El valor predeterminado es 60 minutos.The default is 60 minutes. El mínimo (incluido) es de 5 minutos.The minimum (inclusive) is 5 minutes. El máximo (incluido) es de 1440 minutos.The maximum (inclusive) is 1440 minutes.

  • Duración del token de actualización (días) : período de tiempo máximo antes del que puede usarse un token de actualización para adquirir un nuevo token de identificador o de acceso.Refresh token lifetime (days) - The maximum time period before which a refresh token can be used to acquire a new access or ID token. El período de tiempo también cubre la adquisición de un nuevo token de actualización si se ha concedido el ámbito offline_access a la aplicación.The time period also covers acquiring a new refresh token if your application has been granted the offline_access scope. El valor predeterminado es 14 días.The default is 14 days. El mínimo (incluido) es de 1 día.The minimum (inclusive) is one day. El máximo (incluido) es de 90 días.The maximum (inclusive) is 90 days.

  • Duración de la ventana deslizante del token de actualización (días) : después de transcurrido este período de tiempo, el usuario está obligado a volver a autenticarse, independientemente de cuál sea el período de validez del último token de actualización obtenido por la aplicación.Refresh token sliding window lifetime (days) - After this time period elapses the user is forced to reauthenticate, irrespective of the validity period of the most recent refresh token acquired by the application. Solo se pueden proporcionar si el conmutador se establece en Bounded(Enlazado).It can only be provided if the switch is set to Bounded. Es preciso que sea mayor o igual que el valor de Vigencia del token de actualización (en días) .It needs to be greater than or equal to the Refresh token lifetime (days) value. Si el conmutador se establece en Unbounded(Sin enlazar), no se puede proporcionar un valor específico.If the switch is set to Unbounded, you cannot provide a specific value. El valor predeterminado es de 90 días.The default is 90 days. El mínimo (incluido) es de 1 día.The minimum (inclusive) is one day. El máximo (incluido) es de 365 días.The maximum (inclusive) is 365 days.

Los siguientes casos de uso se habilitan mediante estas propiedades:The following use cases are enabled using these properties:

  • Permiso para que un usuario pueda permanecer conectado en una aplicación móvil indefinidamente, siempre que esté continuamente activo en la misma.Allow a user to stay signed in to a mobile application indefinitely, as long as the user is continually active on the application. Establezca Duración de la ventana deslizante del token de actualización (días) en Unbounded (Sin enlazar) en el flujo de usuario de inicio de sesión.You can set Refresh token sliding window lifetime (days) to Unbounded in your sign-in user flow.
  • Cumpla los requisitos de cumplimiento normativo y seguridad de la industria mediante el establecimiento de la vigencia adecuada del token de acceso.Meet your industry's security and compliance requirements by setting the appropriate access token lifetimes.

Estas opciones no están disponibles para flujos de usuario de restablecimiento de contraseña.These settings are not available for password reset user flows.

CompatibilidadCompatibility

Las siguientes propiedades se utilizan para administrar la compatibilidad de los tokens:The following properties are used to manage token compatibility:

  • Notificación de emisor (iss) : esta propiedad identifica el inquilino de Azure AD B2C que emitió el token.Issuer (iss) claim - This property identifies the Azure AD B2C tenant that issued the token. El valor predeterminado es https://<domain>/{B2C tenant GUID}/v2.0/.The default value is https://<domain>/{B2C tenant GUID}/v2.0/. El valor de https://<domain>/tfp/{B2C tenant GUID}/{Policy ID}/v2.0/ incluye los identificadores tanto del inquilino de Azure AD B2C como del flujo de usuario usado en la solicitud de token.The value of https://<domain>/tfp/{B2C tenant GUID}/{Policy ID}/v2.0/ includes IDs for both the Azure AD B2C tenant and the user flow that was used in the token request. Si una aplicación o biblioteca necesita que Azure AD B2C sea compatible con la especificación OpenID Connect Discovery 1.0, use este valor.If your application or library needs Azure AD B2C to be compliant with the OpenID Connect Discovery 1.0 spec, use this value.

  • Notificación de asunto (sub) : esta propiedad identifica la entidad para la que el token valida la información.Subject (sub) claim - This property identifies the entity for which the token asserts information. El valor predeterminado es ObjectID, que rellena la notificación sub en el token con el identificador de objeto del usuario.The default value is ObjectID, which populates the sub claim in the token with the object ID of the user. El valor de No compatible solo se proporciona por motivos de compatibilidad con versiones anteriores.The value of Not supported is only provided for backward-compatibility. Se recomienda cambiar a ObjectID lo antes posible.It's recommended that you switch to ObjectID as soon as you are able to.

  • Notificación que representa el identificador de la directiva: esta propiedad identifica el tipo de notificación en el que se rellena el nombre de directiva utilizado en la solicitud de token.Claim representing policy ID - This property identifies the claim type into which the policy name used in the token request is populated. El valor predeterminado es tfp.The default value is tfp. El valor de acr solo se proporciona por motivos de compatibilidad con versiones anteriores.The value of acr is only provided for backward-compatibility.

Paso a travésPass-through

Cuando se inicia un recorrido del usuario, Azure AD B2C recibe un token de acceso de un proveedor de identidades.When a user journey starts, Azure AD B2C receives an access token from an identity provider. Azure AD B2C usa ese token para recuperar información sobre el usuario.Azure AD B2C uses that token to retrieve information about the user. Habilite una notificación en el flujo de usuario o defina una notificación en la directiva personalizada para pasar el token a través de las aplicaciones que registre en Azure AD B2C.You enable a claim in your user flow or define a claim in your custom policy to pass the token through to the applications that you register in Azure AD B2C. La aplicación debe usar un flujo de usuario v2 para aprovechar las ventajas de pasar el token como una notificación.Your application must be using a v2 user flow to take advantage of passing the token as a claim.

Azure AD B2C actualmente solo admite pasar el token de acceso de proveedores de identidades de OAuth 2.0, incluidos Facebook y Google.Azure AD B2C currently only supports passing the access token of OAuth 2.0 identity providers, which include Facebook and Google. Para todos los demás proveedores de identidades, la notificación se devuelve en blanco.For all other identity providers, the claim is returned blank.

ValidaciónValidation

Para validar un token, la aplicación debe comprobar tanto la firma como las notificaciones del token.To validate a token, your application should check both the signature and claims of the token. Hay muchas bibliotecas de código abierto disponibles para validar los JWT según su lenguaje preferido.Many open-source libraries are available for validating JWTs, depending on your preferred language. Se recomienda explorar esas opciones en lugar de implementar su propia lógica de validación.It's recommended that you explore those options rather than implement your own validation logic.

Validar la firmaValidate signature

Un JWT contiene tres segmentos, un encabezado, un cuerpo y un firma.A JWT contains three segments, a header, a body, and a signature. El segmento de firma se puede utilizar para validar la autenticidad del token con el fin de que la aplicación pueda confiar en él.The signature segment can be used to validate the authenticity of the token so that it can be trusted by your application. Los tokens de Azure AD B2C se firman con algoritmos de cifrado asimétrico estándar del sector, como RSA 256.Azure AD B2C tokens are signed by using industry-standard asymmetric encryption algorithms, such as RSA 256.

El encabezado del token contiene información acerca del método de cifrado y la clave utilizados para firmar el token:The header of the token contains information about the key and encryption method used to sign the token:

{
        "typ": "JWT",
        "alg": "RS256",
        "kid": "GvnPApfWMdLRi8PDmisFn7bprKg"
}

El valor de la notificación alg es el algoritmo que se usó para firmar el token.The value of the alg claim is the algorithm that was used to sign the token. El valor de la notificación kid es la clave pública que se usó para firmar el token.The value of the kid claim is the public key that was used to sign the token. En cualquier momento, Azure AD B2C puede firmar un token mediante cualquier opción de un conjunto de pares de claves pública y privada.At any given time, Azure AD B2C can sign a token by using any one of a set of public-private key pairs. Azure AD B2C gira los posibles conjuntos de claves periódicamente.Azure AD B2C rotates the possible set of keys periodically. La aplicación debe escribirse para controlar automáticamente esos cambios de clave.Your application should be written to handle those key changes automatically. Una frecuencia razonable para buscar actualizaciones para las claves públicas que usa Azure AD B2C es cada 24 horas.A reasonable frequency to check for updates to the public keys used by Azure AD B2C is every 24 hours.

Azure AD B2C tiene un punto de conexión de metadatos OpenID Connect.Azure AD B2C has an OpenID Connect metadata endpoint. Con este punto de conexión, las aplicaciones pueden solicitar información acerca de Azure AD B2C en tiempo de ejecución.Using this endpoint, applications can request information about Azure AD B2C at runtime. En esta información se incluyen los extremos, los contenidos del token y las claves de firma de los token.This information includes endpoints, token contents, and token signing keys. Hay un documento de metadatos JSON para cada directiva en su inquilino de Azure AD B2C.Your Azure AD B2C tenant contains a JSON metadata document for each policy. El documento de metadatos es un objeto JSON que contiene varias piezas de información útiles.The metadata document is a JSON object that contains several useful pieces of information. Los metadatos contienen jwks_uri, que ofrece la ubicación del conjunto de claves públicas que se usan para firmar los tokens.The metadata contains jwks_uri, which gives the location of the set of public keys that are used to sign tokens. La ubicación se proporciona aquí, pero es mejor capturarla dinámicamente mediante el documento de metadatos y el análisis de jwks_uri:That location is provided here, but it's best to fetch the location dynamically by using the metadata document and parsing jwks_uri:

https://contoso.b2clogin.com/contoso.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_signupsignin1

El documento JSON que se encuentra en esta dirección URL contiene toda la información de clave pública en uso en ese momento determinado.The JSON document located at this URL contains all the public key information in use at a particular moment. La aplicación puede usar la notificación kid en el encabezado de JWT para seleccionar en el documento JSON la clave pública que se ha usado en este documento para firmar un token concreto.Your app can use the kid claim in the JWT header to select the public key in the JSON document that is used to sign a particular token. Después, puede realizar la validación de la firma mediante la clave pública correcta y el algoritmo indicado.It can then perform signature validation by using the correct public key and the indicated algorithm.

El documento de metadatos de la directiva B2C_1_signupsignin1 en el inquilino contoso.onmicrosoft.com se encuentra en:The metadata document for the B2C_1_signupsignin1 policy in the contoso.onmicrosoft.com tenant is located at:

https://contoso.b2clogin.com/contoso.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=b2c_1_signupsignin1

Para determinar qué directiva se usó para firmar un token (y dónde solicitar los metadatos), tiene dos opciones.To determine which policy was used to sign a token (and where to go to request the metadata), you have two options. En primer lugar, el nombre de la directiva se incluye en la notificación acr del token.First, the policy name is included in the acr claim in the token. Las notificaciones se pueden analizar fuera del cuerpo del JWT; para ello, descodifique la descodificación en base 64 del cuerpo y deserialice la cadena JSON resultante.You can parse claims out of the body of the JWT by base-64 decoding the body and deserializing the JSON string that results. La notificación acr es el nombre de la directiva que se usó para emitir el token.The acr claim is the name of the policy that was used to issue the token. La otra opción consiste en codificar la directiva en el valor del parámetro state al emitir la solicitud y, a continuación, descodificarla para determinar qué directiva se ha usado.The other option is to encode the policy in the value of the state parameter when you issue the request, and then decode it to determine which policy was used. Cualquiera de estos métodos es válido.Either method is valid.

La descripción de cómo realizar la validación de la firma queda fuera del ámbito de este documento.A description of how to perform signature validation is outside the scope of this document. Hay muchas bibliotecas de código abierto disponibles para ayudarle a validar un token.Many open-source libraries are available to help you validate a token.

Validar notificacionesValidate claims

Cuando una aplicación o una API reciben un token de identificador, también es preciso realizar varias comprobaciones de las notificaciones en el token de identificador.When your applications or API receives an ID token, it should also perform several checks against the claims in the ID token. Se deben comprobar las notificaciones siguientes:The following claims should be checked:

  • audience: comprueba que está previsto que el token de identificador se proporcione a su aplicación.audience - Verifies that the ID token was intended to be given to your application.
  • not before y expiration time: comprueban que el token de identificador no ha expirado.not before and expiration time - Verifies that the ID token hasn't expired.
  • issuer: comprueba que Azure AD B2C emitió el token para la aplicación.issuer - Verifies that the token was issued to your application by Azure AD B2C.
  • nonce: una estrategia para mitigar los ataques de reproducción de tokens.nonce - A strategy for token replay attack mitigation.

Para ver una lista completa de las validaciones que la aplicación debe llevar a cabo, consulte la especificación de OpenID Connect.For a full list of validations your application should perform, refer to the OpenID Connect specification.

Pasos siguientesNext steps

Obtenga más información sobre cómo usar los tokens de acceso.Learn more about how to use access tokens.