Jetons d’accès de la plateforme d’identités MicrosoftMicrosoft identity platform access tokens

Les jetons d’accès permettent aux clients d’appeler de manière sécurisée des API web protégées et sont utilisés par les API web pour effectuer l’authentification et l’autorisation.Access tokens enable clients to securely call protected web APIs, and are used by web APIs to perform authentication and authorization. Conformément à la spécification OAuth, les jetons d’accès sont des chaînes opaques sans format défini ; certains fournisseurs d’identité (IDP) utilisent des GUID, d’autres utilisent des objets blob chiffrés.Per the OAuth specification, access tokens are opaque strings without a set format - some identity providers (IDPs) use GUIDs, others use encrypted blobs. La plateforme d’identités Microsoft utilise un large éventail de formats de jeton d’accès en fonction de la configuration de l’API qui accepte le jeton.The Microsoft identity platform uses a variety of access token formats depending on the configuration of the API that accepts the token. Les API personnalisées inscrites par les développeurs sur la plateforme d’identités Microsoft peuvent choisir parmi deux formats différents de jetons web JSON (jetons JWT), appelés « v1 » et « v2 », et les API développées par Microsoft comme Microsoft Graph ou les API dans Azure ont des formats de jetons propriétaires supplémentaires.Custom APIs registered by developers on the Microsoft identity platform can choose from two different formats of JSON Web Tokens (JWTs), called "v1" and "v2", and Microsoft-developed APIs like Microsoft Graph or APIs in Azure have additional proprietary token formats. Ces formats propriétaires peuvent être des jetons chiffrés, des jetons JWT ou des jetons de type JWT spéciaux qui ne sont pas validés.These proprietary formats might be encrypted tokens, JWTs, or special JWT-like tokens that will not validate.

Les clients doivent traiter les jetons d’accès comme des chaînes opaques, car leur contenu n’est destiné qu’à la ressource (l’API).Clients must treat access tokens as opaque strings because the contents of the token are intended for the resource (the API) only. À des fins de validation et le débogage uniquement, les développeurs peuvent décoder les jetons JWT via un site comme jwt.ms.For validation and debugging purposes only, developers can decode JWTs using a site like jwt.ms. Gardez toutefois à l’esprit que les jetons que vous recevez pour une API Microsoft peuvent ne pas être un jeton JWT et qu’il est possible que vous ne puissiez pas les décoder.Be aware, however, that the tokens you receive for a Microsoft API might not always be a JWT, and that you can't always decode them.

Pour plus d’informations sur le contenu du jeton d’accès, les clients doivent utiliser les données de réponse de jeton retournées avec le jeton d’accès à votre client.For details on what's inside the access token, clients should use the token response data that's returned with the access token to your client. Quand votre client demande un jeton d’accès, la plateforme d’identités Microsoft retourne également des métadonnées sur le jeton d’accès que votre application peut utiliser.When your client requests an access token, the Microsoft identity platform also returns some metadata about the access token for your app's consumption. Ces informations incluent le délai d’expiration du jeton d’accès et les étendues dans lesquelles il est valide.This information includes the expiry time of the access token and the scopes for which it's valid. Ces données permettent à votre application d’effectuer une mise en cache intelligente des jetons d’accès sans avoir à les analyser eux-mêmes.This data allows your app to do intelligent caching of access tokens without having to parse the access token itself.

Consultez les sections suivantes pour savoir comment votre API peut valider et utiliser les revendications dans un jeton d’accès.See the following sections to learn how your API can validate and use the claims inside an access token.

Notes

Toute la documentation de cette page, sauf indication contraire, s’applique uniquement aux jetons émis pour les API que vous avez inscrites.All documentation on this page, except where noted, applies only to tokens issued for APIs you've registered. Elle ne s’applique pas aux jetons émis pour les API appartenant à Microsoft, et ces jetons ne peuvent pas être utilisés pour valider la manière dont la plateforme d’identités Microsoft émet des jetons pour une API que vous créez.It does not apply to tokens issued for Microsoft-owned APIs, nor can those tokens be used to validate how the Microsoft identity platform will issue tokens for an API you create.

Propriété et formats des jetonsToken formats and ownership

v1.0 et v2.0v1.0 and v2.0

Deux versions de jetons d’accès sont disponibles dans la plateforme d’identités Microsoft : v1.0 et v2.0.There are two versions of access tokens available in the Microsoft identity platform: v1.0 and v2.0. Ces versions régissent les revendications qui se trouvent dans le jeton, garantissant ainsi qu’une API web peut contrôler l’aspect de ses jetons.These versions govern what claims are in the token, ensuring that a web API can control what their tokens look like. Les API web ont l’une de ces options sélectionnée par défaut lors de l’inscription : v1.0 pour les applications Azure AD uniquement et v2.0 pour les applications qui prennent en charge les comptes de consommateurs.Web APIs have one of these selected as a default during registration - v1.0 for Azure AD-only apps, and v2.0 for apps that support consumer accounts. Cela est contrôlable par les applications avec le paramètre accessTokenAcceptedVersion dans le manifeste de l’application, où null et 1 génèrent des jetons v1.0, et 2 génère des jetons v2.0.This is controllable by applications using the accessTokenAcceptedVersion setting in the app manifest, where null and 1 result in v1.0 tokens, and 2 results in v2.0 tokens.

Quelle application pour quel jeton ?What app is a token "for"?

Deux parties sont impliquées dans une demande de jeton d’accès : le client qui demande le jeton et la ressource (l’API) qui accepte le jeton quand l’API est appelée.There are two parties involved in an access token request: the client, who requests the token, and the resource (the API) that accepts the token when the API is called. La revendication aud dans un jeton indique la ressource à laquelle le jeton est destiné (son participant).The aud claim in a token indicates the resource the token is intended for (its audience). Les clients utilisent le jeton, mais ne doivent pas le comprendre ni tenter de l’analyser.Clients use the token but should not understand or attempt to parse it. Les ressources acceptent le jeton.Resources accept the token.

La plateforme d’identités Microsoft prend en charge l’émission de toute version de jeton à partir de n’importe quel point de terminaison de version : ils ne sont pas liés.The Microsoft identity platform supports issuing any token version from any version endpoint - they are not related. C’est la raison pour laquelle une ressource qui affecte à accessTokenAcceptedVersion la valeur 2 indique qu’un client qui appelle le point de terminaison v1.0 pour obtenir un jeton pour cette API recevra un jeton d’accès v2.0.This is why a resource setting accessTokenAcceptedVersion to 2 means that a client calling the v1.0 endpoint to get a token for that API will receive a v2.0 access token. Les ressources détiennent toujours leurs jetons (avec leur revendication aud) et sont les seules applications qui peuvent en modifier les détails.Resources always own their tokens (those with their aud claim) and are the only applications that can change their token details. C’est pourquoi la modification des revendications facultatives du jeton d’accès pour votre client ne permet pas de changer le jeton d’accès reçu quand un jeton est demandé pour user.read, qui appartient à la ressource Microsoft Graph.This is why changing the access token optional claims for your client does not change the access token received when a token is requested for user.read, which is owned by the Microsoft Graph resource.

Exemples de jetonSample tokens

Les jetons v1.0 et v2.0 se ressemblent et un grand nombre de leurs revendications sont identiques.v1.0 and v2.0 tokens look similar and contain many of the same claims. Vous trouverez ici un exemple de chacun d’eux.An example of each is provided here. Ces exemples de jetons ne sont toutefois pas validés, car les clés ont été permutées avant la publication et des informations personnelles en ont été supprimées.These example tokens will not validate, however, as the keys have rotated prior to publication and personal information has been removed from them.

v1.0v1.0

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd

Afficher ce jeton v1.0 dans JWT.ms.View this v1.0 token in JWT.ms.

v2.0v2.0

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt

Afficher ce jeton v2.0 dans JWT.ms.View this v2.0 token in JWT.ms.

Revendications dans les jetons d’accèsClaims in access tokens

Les jetons JWT (jetons web JSON) comprennent trois parties :JWTs (JSON Web Tokens) are split into three pieces:

  • En-tête : fournit des informations sur la façon de valider le jeton, notamment des informations sur le type du jeton et la façon dont il a été signé.Header - Provides information about how to validate the token including information about the type of token and how it was signed.
  • Charge utile : contient toutes les données importantes concernant l’utilisateur ou l’application qui tente d’appeler votre service.Payload - Contains all of the important data about the user or app that is attempting to call your service.
  • Signature : ressource de base utilisée pour valider le jeton.Signature - Is the raw material used to validate the token.

Chaque partie est séparée par un point (.) et encodée séparément en base64.Each piece is separated by a period (.) and separately Base64 encoded.

Les revendications ne sont présentes que lorsqu’elles sont renseignées par une valeur.Claims are present only if a value exists to fill it. Votre application ne doit pas dépendre de la présence d’une revendication.Your app shouldn't take a dependency on a claim being present. Exemples : pwd_exp (tous les locataires n’ont pas besoin que leur mot de passe expire) ou family_name (les flux d’ informations d’identification client se font au nom d’applications qui ne portent pas de noms).Examples include pwd_exp (not every tenant requires passwords to expire) and family_name (client credential flows are on behalf of applications which don't have names). Les revendications utilisées pour la validation des jetons d’accès seront toujours présentes.Claims used for access token validation will always be present.

Certaines revendications permettent à Azure AD de sécuriser les jetons en cas de réutilisation.Some claims are used to help Azure AD secure tokens in case of reuse. Celles-ci portent la mention « Opaque » dans la description pour indiquer qu’elles ne sont pas destinées à l’utilisation publique.These are marked as not being for public consumption in the description as "Opaque". Ces revendications peuvent apparaître ou non dans un jeton, et de nouvelles revendications peuvent être ajoutées sans préavis.These claims may or may not appear in a token, and new ones may be added without notice.

Revendications de l’en-têteHeader claims

RevendicationClaim FormatFormat DescriptionDescription
typ Chaîne : toujours « JWT »String - always "JWT" Indique que le jeton est un JWT.Indicates that the token is a JWT.
nonce StringString Identificateur unique utilisé pour se protéger contre les attaques par relecture de jetons.A unique identifier used to protect against token replay attacks. Votre ressource peut enregistrer cette valeur pour se protéger contre les relectures.Your resource can record this value to protect against replays.
alg StringString Indique l’algorithme utilisé pour signer le jeton, par exemple « RS256 »Indicates the algorithm that was used to sign the token, for example, "RS256"
kid StringString Indique l’empreinte de la clé publique utilisée pour signer le jeton.Specifies the thumbprint for the public key that's used to sign this token. Émis dans les jetons d’accès v1.0 et v2.0.Emitted in both v1.0 and v2.0 access tokens.
x5t StringString Fonctions identiques (en utilisation et en valeur) à kid.Functions the same (in use and value) as kid. x5t est une revendication héritée émise uniquement dans les jetons d’accès v1.0 à des fins de compatibilité.x5t is a legacy claim emitted only in v1.0 access tokens for compatibility purposes.

Revendications de la charge utilePayload claims

RevendicationClaim FormatFormat DescriptionDescription
aud Chaîne, URI ID d’application ou GUIDString, an App ID URI or GUID Identifie le destinataire du jeton, son participant.Identifies the intended recipient of the token - its audience. Votre API doit valider cette valeur et rejeter le jeton si la valeur ne correspond pas.Your API should validate this value and reject the token if the value doesn't match. Dans les jetons v2.0, il s’agit toujours de l’ID client de l’API, tandis que dans les jetons v1.0, il peut s’agir de l’ID client ou de l’URI de ressource utilisé dans la demande, en fonction de la façon dont le client a demandé le jeton.In v2.0 tokens, this is always the client ID of the API, while in v1.0 tokens it can be the client ID or the resource URI used in the request, depending on how the client requested the token.
iss Chaîne, URI STSString, an STS URI Identifie le service d’émission de jeton de sécurité (STS) qui construit et retourne le jeton, ainsi que le client Azure AD dans lequel l’utilisateur a été authentifié.Identifies the security token service (STS) that constructs and returns the token, and the Azure AD tenant in which the user was authenticated. Si le jeton émis est un jeton v2.0 (voir la revendication ver), l’URI se termine dans /v2.0.If the token issued is a v2.0 token (see the ver claim), the URI will end in /v2.0. La partie GUID qui indique que l’utilisateur est un utilisateur consommateur d’un compte Microsoft est 9188040d-6c67-4c5b-b112-36a304b66dad.The GUID that indicates that the user is a consumer user from a Microsoft account is 9188040d-6c67-4c5b-b112-36a304b66dad. Votre application peut utiliser la partie GUID de la revendication pour restreindre l’ensemble des locataires qui peuvent se connecter à l’application, le cas échéant.Your app can use the GUID portion of the claim to restrict the set of tenants that can sign in to the app, if applicable.
idp Chaîne, généralement un URI STSString, usually an STS URI Enregistre le fournisseur d’identité qui a authentifié le sujet du jeton.Records the identity provider that authenticated the subject of the token. Cette valeur est identique à la valeur de la revendication de l’émetteur sauf si le compte d’utilisateur n’est pas dans le même locataire que l’émetteur (invités par exemple).This value is identical to the value of the Issuer claim unless the user account not in the same tenant as the issuer - guests, for instance. Si la revendication n’est pas présente, cela signifie que la valeur iss peut être utilisée à la place.If the claim isn't present, it means that the value of iss can be used instead. Pour les comptes personnels utilisés dans un contexte organisationnel (par exemple, un compte personnel invité dans un locataire Azure AD), la revendication idp peut être « live.com » ou un URI STS contenant le locataire de compte Microsoft 9188040d-6c67-4c5b-b112-36a304b66dad.For personal accounts being used in an organizational context (for instance, a personal account invited to an Azure AD tenant), the idp claim may be 'live.com' or an STS URI containing the Microsoft account tenant 9188040d-6c67-4c5b-b112-36a304b66dad.
iat int, horodatage UNIXint, a UNIX timestamp « Issued At » (Délivré le) indique quand l'authentification de ce jeton a eu lieu."Issued At" indicates when the authentication for this token occurred.
nbf int, horodatage UNIXint, a UNIX timestamp La revendication « nbf » (pas avant) indique le délai avant lequel le JWT ne doit pas être accepté pour être traité.The "nbf" (not before) claim identifies the time before which the JWT must not be accepted for processing.
exp int, horodatage UNIXint, a UNIX timestamp La revendication « exp » (délai d’expiration) indique le délai d’expiration à partir duquel le JWT ne doit pas être accepté pour être traité.The "exp" (expiration time) claim identifies the expiration time on or after which the JWT must not be accepted for processing. Il est à noter qu’une ressource peut également rejeter le jeton avant ce délai, par exemple lorsqu’un changement d’authentification est requis ou qu’une révocation de jeton a été détectée.It's important to note that a resource may reject the token before this time as well, such as when a change in authentication is required or a token revocation has been detected.
aio Chaîne opaqueOpaque String Revendication interne utilisée par Azure AD pour enregistrer des données afin de réutiliser les jetons.An internal claim used by Azure AD to record data for token reuse. Les ressources ne doivent pas utiliser cette revendication.Resources should not use this claim.
acr Chaîne, « 0 » ou « 1 »String, a "0" or "1" Uniquement dans les jetons v1.0.Only present in v1.0 tokens. Revendication « Classe du contexte d’authentification ».The "Authentication context class" claim. La valeur « 0 » indique que l'authentification de l'utilisateur final ne répondait pas aux exigences de la norme ISO/IEC 29115.A value of "0" indicates the end-user authentication did not meet the requirements of ISO/IEC 29115.
amr Tableau de chaînes JSONJSON array of strings Uniquement dans les jetons v1.0.Only present in v1.0 tokens. Identifie comment le sujet du jeton a été authentifié.Identifies how the subject of the token was authenticated. Pour en savoir plus, consultez la section sur les revendications amr.See the amr claim section for more details.
appid Chaîne, GUIDString, a GUID Uniquement dans les jetons v1.0.Only present in v1.0 tokens. ID de l’application du client utilisant le jeton.The application ID of the client using the token. L'application peut agir pour elle-même ou pour le compte d'un utilisateur.The application can act as itself or on behalf of a user. L'ID d'application représente généralement un objet d’application, mais elle peut également représenter un objet du principal du service dans Azure AD.The application ID typically represents an application object, but it can also represent a service principal object in Azure AD.
azp Chaîne, GUIDString, a GUID Seulement présent dans les jetons v2.0, un remplacement pour appid.Only present in v2.0 tokens, a replacement for appid. ID de l’application du client utilisant le jeton.The application ID of the client using the token. L'application peut agir pour elle-même ou pour le compte d'un utilisateur.The application can act as itself or on behalf of a user. L'ID d'application représente généralement un objet d’application, mais elle peut également représenter un objet du principal du service dans Azure AD.The application ID typically represents an application object, but it can also represent a service principal object in Azure AD.
appidacr « 0 », « 1 » ou « 2 »"0", "1", or "2" Uniquement dans les jetons v1.0.Only present in v1.0 tokens. Indique comment le client a été authentifié.Indicates how the client was authenticated. Pour un client public, la valeur est « 0 ».For a public client, the value is "0". Si l’ID client et la clé secrète client sont utilisés, la valeur est « 1 ».If client ID and client secret are used, the value is "1". Si un certificat client a été utilisé pour l’authentification, la valeur est « 2 ».If a client certificate was used for authentication, the value is "2".
azpacr « 0 », « 1 » ou « 2 »"0", "1", or "2" Seulement présent dans les jetons v2.0, un remplacement pour appidacr.Only present in v2.0 tokens, a replacement for appidacr. Indique comment le client a été authentifié.Indicates how the client was authenticated. Pour un client public, la valeur est « 0 ».For a public client, the value is "0". Si l’ID client et la clé secrète client sont utilisés, la valeur est « 1 ».If client ID and client secret are used, the value is "1". Si un certificat client a été utilisé pour l’authentification, la valeur est « 2 ».If a client certificate was used for authentication, the value is "2".
preferred_username StringString Nom d’utilisateur principal qui représente l’utilisateur.The primary username that represents the user. Il peut s’agir d’une adresse e-mail, d’un numéro de téléphone ou d’un nom d’utilisateur générique sans format spécifié.It could be an email address, phone number, or a generic username without a specified format. Sa valeur est mutable et peut changer au fil du temps.Its value is mutable and might change over time. Dans la mesure où elle est mutable, cette valeur ne doit pas utilisée pour prendre des décisions d’autorisation.Since it is mutable, this value must not be used to make authorization decisions. Elle peut toutefois être utilisée pour les indications sur le nom d’utilisateur et dans une interface utilisateur explicite en tant que nom d’utilisateur.It can be used for username hints, however, and in human-readable UI as a username. L’étendue profile est requise afin de recevoir cette revendication.The profile scope is required in order to receive this claim. Présente uniquement dans les jetons v2.0.Present only in v2.0 tokens.
name StringString Fournit une valeur contrôlable de visu qui identifie le sujet du jeton.Provides a human-readable value that identifies the subject of the token. Il n’est pas certain que cette valeur soit unique. Elle est mutable et conçue pour être utilisée uniquement à des fins d’affichage.The value is not guaranteed to be unique, it is mutable, and it's designed to be used only for display purposes. L’étendue profile est requise afin de recevoir cette revendication.The profile scope is required in order to receive this claim.
scp Chaîne, liste d’étendues séparées par des espacesString, a space separated list of scopes Ensemble des étendues exposées par votre application pour lesquelles l’application client a requis (et reçu) un consentement.The set of scopes exposed by your application for which the client application has requested (and received) consent. Votre application doit vérifier la validité de ces étendues et prendre des décisions d’autorisation en fonction de leur valeur.Your app should verify that these scopes are valid ones exposed by your app, and make authorization decisions based on the value of these scopes. Uniquement inclus pour les jetons utilisateur.Only included for user tokens.
roles Tableau de chaînes, une liste d’autorisationsArray of strings, a list of permissions Ensemble des autorisations exposées par votre application que l’application ou l’utilisateur requérant est autorisé à appeler.The set of permissions exposed by your application that the requesting application or user has been given permission to call. Pour les jetons d’applications, cela est utilisé durant le flux d’informations client (v1.0, v2.0) à la place des étendues utilisateur.For application tokens, this is used during the client credential flow (v1.0, v2.0) in place of user scopes. Pour les jetons d’utilisateurs, cela est renseigné avec les rôles de l’utilisateur sur l’application cible.For user tokens this is populated with the roles the user was assigned to on the target application.
wids Tableau de GUID RoleTemplateIDArray of RoleTemplateID GUIDs Indique les rôles au niveau du locataire attribués à cet utilisateur, à partir de la section des rôles présents dans les rôles intégrés Azure AD.Denotes the tenant-wide roles assigned to this user, from the section of roles present in Azure AD built-in roles. Cette revendication est définie pour chaque application, via la propriété groupMembershipClaims du manifeste d’application.This claim is configured on a per-application basis, through the groupMembershipClaims property of the application manifest. Il est nécessaire de la définir sur « All » ou « DirectoryRole ».Setting it to "All" or "DirectoryRole" is required. Peut ne pas être présent dans les jetons obtenus via le flux implicite en raison des problèmes de longueur de jeton.May not be present in tokens obtained through the implicit flow due to token length concerns.
groups Tableau de GUID JSONJSON array of GUIDs Fournit les ID d’objet qui représentent les appartenances aux groupes du sujet.Provides object IDs that represent the subject's group memberships. Ces valeurs sont uniques (voir l'ID objet) et peuvent être utilisées en toute sécurité pour la gestion des accès, telle que l'autorisation d'accéder à une ressource.These values are unique (see Object ID) and can be safely used for managing access, such as enforcing authorization to access a resource. Les groupes inclus dans la revendication des groupes sont configurés pour chaque application, via la propriété groupMembershipClaims du manifeste d’application.The groups included in the groups claim are configured on a per-application basis, through the groupMembershipClaims property of the application manifest. Une valeur Null exclut tous les groupes, une valeur « SecurityGroup » inclut uniquement les appartenances aux groupes de sécurité Active Directory et une valeur « All » inclut les groupes de sécurité et les listes de distribution Microsoft 365.A value of null will exclude all groups, a value of "SecurityGroup" will include only Active Directory Security Group memberships, and a value of "All" will include both Security Groups and Microsoft 365 Distribution Lists.

Consultez la revendication hasgroups ci-dessous pour plus d’informations sur l’utilisation de la revendication groups avec l’octroi implicite.See the hasgroups claim below for details on using the groups claim with the implicit grant.
Pour les autres flux, si le nombre de groupes auxquels l’utilisateur appartient dépasse une limite (150 pour SAML, 200 pour JWT), alors une revendication de dépassement sera ajoutée aux sources de revendication qui pointent sur le point de terminaison Microsoft Graph contenant la liste des groupes de l’utilisateur.For other flows, if the number of groups the user is in goes over a limit (150 for SAML, 200 for JWT), then an overage claim will be added to the claim sources pointing at the Microsoft Graph endpoint containing the list of groups for the user.
hasgroups BooleanBoolean Le cas échéant, toujours true, ce qui indique que l’utilisateur appartient à au moins un groupe.If present, always true, denoting the user is in at least one group. Utilisé à la place de la revendication groups pour JWT dans les flux d’octroi implicites si la revendication des groupes complets étend le fragment URI au-delà des limites de longueur d’URL (actuellement, 6 groupes ou plus).Used in place of the groups claim for JWTs in implicit grant flows if the full groups claim would extend the URI fragment beyond the URL length limits (currently 6 or more groups). Indique que le client doit utiliser l’API Microsoft Graph pour déterminer les groupes de l’utilisateur (https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects).Indicates that the client should use the Microsoft Graph API to determine the user's groups (https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects).
groups:src1 Objet JSONJSON object Pour les requêtes de jetons dont la longueur n’est pas limitée (voir hasgroups ci-dessus) mais qui sont toujours trop volumineuses pour le jeton, un lien vers la liste des groupes complets pour l’utilisateur sera inclus.For token requests that are not length limited (see hasgroups above) but still too large for the token, a link to the full groups list for the user will be included. Pour les jetons JWT en tant que revendication distribuée, pour SAML en tant que nouvelle revendication à la place de la revendication groups.For JWTs as a distributed claim, for SAML as a new claim in place of the groups claim.

Exemple de valeur JWT :Example JWT Value:
"groups":"src1"
"_claim_sources: "src1" : { "endpoint" : "https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects" }"_claim_sources: "src1" : { "endpoint" : "https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects" }
sub ChaîneString Principal sur lequel portent les assertions d’informations du jeton, comme l’utilisateur d’une application.The principal about which the token asserts information, such as the user of an app. Cette valeur est immuable et ne peut pas être réattribuée ou réutilisée.This value is immutable and cannot be reassigned or reused. Vous pouvez l’utiliser pour effectuer des vérifications d’autorisation en toute sécurité, comme lorsque le jeton est utilisé pour accéder à une ressource et qu’il peut servir de clé dans les tables de base de données.It can be used to perform authorization checks safely, such as when the token is used to access a resource, and can be used as a key in database tables. Étant donné que le sujet est toujours présent dans les jetons émis par Azure AD, nous vous recommandons d’utiliser cette valeur dans un système d’autorisation général.Because the subject is always present in the tokens that Azure AD issues, we recommend using this value in a general-purpose authorization system. Toutefois, l’objet est un identificateur par paire ; il est unique à un ID d’application donné.The subject is, however, a pairwise identifier - it is unique to a particular application ID. Par conséquent, si un utilisateur se connecte à deux applications différentes à l’aide de deux ID clients différents, ces applications reçoivent deux valeurs différentes pour la revendication de l’objet.Therefore, if a single user signs into two different apps using two different client IDs, those apps will receive two different values for the subject claim. Ceci peut être souhaitable ou non en fonction de vos besoins d’architecture et de confidentialité.This may or may not be desired depending on your architecture and privacy requirements. Consultez également la revendication oid (qui reste la même sur les applications d’un même locataire).See also the oid claim (which does remain the same across apps within a tenant).
oid Chaîne, GUIDString, a GUID Identificateur immuable pour le « principal » de la demande (utilisateur ou principal du service dont l’identité a été vérifiée).The immutable identifier for the "principal" of the request - the user or service principal whose identity has been verified. Dans les jetons d’ID et les jetons d’application/utilisateur, il s’agit de l’ID d’objet de l’utilisateur.In ID tokens and app+user tokens, this is the object ID of the user. Dans les jetons d’application uniquement, il s’agit de l’ID d’objet du principal de service appelant.In app-only tokens, this is the object id of the calling service principal. Il peut également être utilisé pour effectuer des vérifications d’autorisation en toute sécurité et en tant que clé dans les tables de base de données.It can also be used to perform authorization checks safely and as a key in database tables. Cet ID identifie de manière unique le principal parmi les applications ; deux applications différentes se connectant au même utilisateur auront la même valeur dans la revendication oid.This ID uniquely identifies the principal across applications - two different applications signing in the same user will receive the same value in the oid claim. Ainsi, oid peut être utilisé lors de la formulation de requêtes auprès de services Microsoft en ligne, tels que Microsoft Graph.Thus, oid can be used when making queries to Microsoft online services, such as the Microsoft Graph. Microsoft Graph renverra cet ID en tant que propriété id pour un compte d’utilisateur donné.The Microsoft Graph will return this ID as the id property for a given user account. oid permettant à plusieurs applications de corréler des principaux, l’étendue profile est requise afin de recevoir cette revendication pour des utilisateurs.Because the oid allows multiple apps to correlate principals, the profile scope is required in order to receive this claim for users. Notez que si un utilisateur existe dans plusieurs locataires, l’utilisateur contient un ID d’objet différent dans chaque locataire. Ils sont considérés comme des comptes différents, même si l’utilisateur se connecte à chaque compte avec les mêmes informations d’identification.Note that if a single user exists in multiple tenants, the user will contain a different object ID in each tenant - they are considered different accounts, even though the user logs into each account with the same credentials.
tid Chaîne, GUIDString, a GUID Représente le client Azure AD d’où provient l’utilisateur.Represents the Azure AD tenant that the user is from. Pour les comptes professionnels et scolaires, le GUID correspond à l’ID de client immuable de l’organisation à laquelle appartient l’utilisateur.For work and school accounts, the GUID is the immutable tenant ID of the organization that the user belongs to. Pour les comptes personnels, la valeur est 9188040d-6c67-4c5b-b112-36a304b66dad.For personal accounts, the value is 9188040d-6c67-4c5b-b112-36a304b66dad. L’étendue profile est requise afin de recevoir cette revendication.The profile scope is required in order to receive this claim.
unique_name StringString Uniquement dans les jetons v1.0.Only present in v1.0 tokens. Fournit une valeur contrôlable de visu qui identifie le sujet du jeton.Provides a human readable value that identifies the subject of the token. Il n’est pas certain que cette valeur soit unique au sein d’un client. Elle doit être utilisée uniquement à des fins d’affichage.This value is not guaranteed to be unique within a tenant and should be used only for display purposes.
uti Chaîne opaqueOpaque String Revendication interne utilisée par Azure pour revalider des jetons.An internal claim used by Azure to revalidate tokens. Les ressources ne doivent pas utiliser cette revendication.Resources shouldn't use this claim.
rh Chaîne opaqueOpaque String Revendication interne utilisée par Azure pour revalider des jetons.An internal claim used by Azure to revalidate tokens. Les ressources ne doivent pas utiliser cette revendication.Resources should not use this claim.
ver Chaîne, 1.0 ou 2.0String, either 1.0 or 2.0 Indique la version du jeton d’accès.Indicates the version of the access token.

Revendication de dépassement des groupesGroups overage claim

Pour s’assurer que la taille du jeton ne dépasse pas les limites de taille d’en-tête HTTP, Azure AD limite le nombre d’ID d’objets inclus dans la revendication des groupes.To ensure that the token size doesn't exceed HTTP header size limits, Azure AD limits the number of object IDs that it includes in the groups claim. Si un utilisateur est membre d’un nombre de groupes supérieur à la limite de dépassement (150 pour les jetons SAML, 200 pour les jetons JWT et uniquement 6 en cas d’émission via le flux implicite), Azure AD n’émet pas la revendication des groupes dans le jeton.If a user is member of more groups than the overage limit (150 for SAML tokens, 200 for JWT tokens, and only 6 if issued via the implicit flow), then Azure AD does not emit the groups claim in the token. Au lieu de cela, il inclut une revendication de dépassement dans le jeton qui indique à l’application d’interroger l’API Microsoft Graph pour récupérer l’appartenance de groupe de l’utilisateur.Instead, it includes an overage claim in the token that indicates to the application to query the Microsoft Graph API to retrieve the user's group membership.

{
  ...
  "_claim_names": {
   "groups": "src1"
    },
    {
  "_claim_sources": {
    "src1": {
        "endpoint":"[Url to get this user's group membership from]"
        }
       }
     }
  ...
}

Vous pouvez utiliser la valeur BulkCreateGroups.ps1 fournie dans le App Creation Scripts pour aider à tester les scénarios de dépassement.You can use the BulkCreateGroups.ps1 provided in the App Creation Scripts folder to help test overage scenarios.

Revendications de base v1.0v1.0 basic claims

Les revendications suivantes sont incluses dans les jetons v1.0, le cas échéant, mais pas dans les jetons v2.0 par défaut.The following claims will be included in v1.0 tokens if applicable, but aren't included in v2.0 tokens by default. Si vous utilisez la version 2.0 et que vous avez besoin de l’une de ces revendications, demandez-les à l’aide des revendications facultatives.If you're using v2.0 and need one of these claims, request them using optional claims.

RevendicationClaim FormatFormat DescriptionDescription
ipaddr StringString Adresse IP à partir de laquelle l’utilisateur s’est authentifié.The IP address the user authenticated from.
onprem_sid Chaîne, au format SIDString, in SID format Lorsque l’utilisateur dispose d’une authentification locale, cette revendication fournit son SID.In cases where the user has an on-premises authentication, this claim provides their SID. Vous pouvez utiliser onprem_sid pour l’autorisation dans des applications héritées.You can use onprem_sid for authorization in legacy applications.
pwd_exp int, horodatage UNIXint, a UNIX timestamp Indique la date d’expiration du mot de passe de l’utilisateur.Indicates when the user's password expires.
pwd_url StringString URL vers laquelle les utilisateurs peuvent être redirigés pour réinitialiser leur mot de passe.A URL where users can be sent to reset their password.
in_corp booleanboolean Indique si le client se connecte à partir du réseau d’entreprise.Signals if the client is logging in from the corporate network. Dans le cas contraire, la revendication n’est pas incluse.If they aren't, the claim isn't included.
nickname StringString Autre nom de l’utilisateur, distinct du nom de famille et du prénom.An additional name for the user, separate from first or last name.
family_name StringString Fournit le nom de famille de l’utilisateur tel que défini sur l’objet utilisateur.Provides the last name, surname, or family name of the user as defined on the user object.
given_name StringString Fournit le prénom de l’utilisateur tel que défini sur l’objet utilisateur.Provides the first or given name of the user, as set on the user object.
upn StringString Nom d’utilisateur.The username of the user. Il peut s’agir d’un numéro de téléphone, d’une adresse électronique ou d’une chaîne non formatée.May be a phone number, email address, or unformatted string. Ne doit être utilisé qu’à des fins d’affichage et pour fournir des indications sur le nom d’utilisateur dans les scénarios de réauthentification.Should only be used for display purposes and providing username hints in reauthentication scenarios.

Revendication amrThe amr claim

Les identités Microsoft peuvent s’authentifier de différentes manières appropriées à votre application.Microsoft identities can authenticate in different ways, which may be relevant to your application. La revendication amr est un tableau pouvant contenir plusieurs éléments, par exemple ["mfa", "rsa", "pwd"], pour les authentifications qui utilisent à la fois un mot de passe et l’application Authenticator.The amr claim is an array that can contain multiple items, such as ["mfa", "rsa", "pwd"], for an authentication that used both a password and the Authenticator app.

ValeurValue DescriptionDescription
pwd Authentification par mot de passe : mot de passe Microsoft d’un utilisateur ou clé secrète client d’une application.Password authentication, either a user's Microsoft password or an app's client secret.
rsa L’authentification reposait sur la preuve d’une clé RSA, par exemple avec l’application Microsoft Authenticator.Authentication was based on the proof of an RSA key, for example with the Microsoft Authenticator app. Il s’agit notamment de l’authentification effectuée par un JWT auto-signé avec un certificat X509 appartenant à un service.This includes if authentication was done by a self-signed JWT with a service owned X509 certificate.
otp Code secret à usage unique utilisant un e-mail ou un SMS.One-time passcode using an email or a text message.
fed Une assertion d’authentification fédérée (par exemple JWT ou SAML) a été utilisée.A federated authentication assertion (such as JWT or SAML) was used.
wia Authentification Windows intégréeWindows Integrated Authentication
mfa L’authentification multifacteur a été utilisée.Multi-factor authentication was used. Lorsqu’elle est disponible, les autres méthodes d’authentification sont également incluses.When this is present the other authentication methods will also be included.
ngcmfa Équivalente à mfa, utilisée pour le provisionnement de certains types avancés d’informations d’identification.Equivalent to mfa, used for provisioning of certain advanced credential types.
wiaormfa L’utilisateur a utilisé Windows ou un identifiant MFA pour s’authentifier.The user used Windows or an MFA credential to authenticate.
none Aucune authentification n’a été effectuée.No authentication was done.

Durée de vie de jeton d’accèsAccess token lifetime

La durée de vie par défaut d’un jeton d’accès varie selon l’application cliente qui demande le jeton.The default lifetime of an access token varies, depending on the client application requesting the token. Par exemple, les clients prenant en charge l’évaluation continue de l’accès (CAE) qui négocient des sessions prenant en charge le CAE verront une durée de vie de jeton plus longue (jusqu’à 28 heures).For example, continuous access evaluation (CAE) capable clients that negotiate CAE-aware sessions will see a long lived token lifetime (up to 28 hours). Lorsque le jeton d’accès expire, le client doit utiliser le jeton d’actualisation pour acquérir (généralement en mode silencieux) un nouveau jeton d’actualisation et un nouveau jeton d’accès.When the access token expires, the client must use the refresh token to (usually silently) acquire a new refresh token and access token.

Vous pouvez ajuster la durée de vie d’un jeton d’accès pour contrôler la fréquence à laquelle l’application cliente arrête la session de l’application, ainsi que la fréquence à laquelle elle demande à l’utilisateur de s’authentifier à nouveau (en mode silencieux ou interactif).You can adjust the lifetime of an access token to control how often the client application expires the application session, and how often it requires the user to re-authenticate (either silently or interactively). Pour plus d’informations, consultez Durées de vie des jetons configurables.For more information, read Configurable token lifetimes.

Validation des jetonsValidating tokens

Les applications ne doivent pas toutes valider des jetons.Not all apps should validate tokens. Dans des scénarios spécifiques uniquement, les applications doivent valider un jeton :Only in specific scenarios should apps validate a token:

  • Les API web doivent valider les jetons d’accès qui leur sont envoyés par un client.Web APIs must validate access tokens sent to them by a client. Elles doivent uniquement accepter les jetons contenant leur revendication aud.They must only accept tokens containing their aud claim.
  • Les applications web confidentielles comme ASP.NET Core doivent valider les jetons d’ID qui leur sont envoyés via le navigateur de l’utilisateur dans le flux hybride, avant d’autoriser l’accès aux données d’un utilisateur ou d’établir une session.Confidential web apps like ASP.NET Core must validate ID tokens sent to them via the user's browser in the hybrid flow, before allowing access to a user's data or establishing a session.

Si aucun des scénarios ci-dessus ne s’applique, votre application ne tire pas parti de la validation du jeton et peut présenter un risque de sécurité et de fiabilité si des décisions sont prises en fonction de la validité du jeton.If none of the above scenarios apply, your application will not benefit from validating the token, and may present a security and reliability risk if decisions are made based on the validity of the token. Les clients publics, comme les applications natives ou monopages, ne bénéficient pas de la validation des jetons. L’application communique directement avec le fournisseur d’identité, de sorte que la protection SSL garantit que les jetons sont valides.Public clients like native apps or SPAs don't benefit from validating tokens - the app communicates directly with the IDP, so SSL protection ensures the tokens are valid.

Les API et les applications web doivent uniquement valider les jetons avec une revendication aud qui correspond à leur application ; d’autres ressources peuvent avoir des règles de validation de jeton personnalisées.APIs and web apps must only validate tokens that have an aud claim that matches their application; other resources may have custom token validation rules. Par exemple, les jetons de Microsoft Graph ne sont pas validés en fonction de ces règles en raison de leur format propriétaire.For example, tokens for Microsoft Graph won't validate according to these rules due to their proprietary format. La validation et l’acceptation de jetons destinés à une autre ressource constituent un exemple du problème d’adjoint confus.Validating and accepting tokens meant for another resource is an example of the confused deputy problem.

Si votre application doit valider un jeton id_token ou access_token conformément à ce qui précède, elle doit d’abord valider la signature et l’émetteur du jeton par rapport aux valeurs figurant dans le document de découverte OpenID.If your application needs to validate an id_token or an access_token according to the above, your app should first validate the token's signature and issuer against the values in the OpenID discovery document. Par exemple, la version indépendante du client du document se trouve à l’adresse https://login.microsoftonline.com/common/.well-known/openid-configuration.For example, the tenant-independent version of the document is located at https://login.microsoftonline.com/common/.well-known/openid-configuration.

Les informations suivantes sont fournies pour ceux qui souhaitent comprendre le processus sous-jacent.The following information is provided for those who wish to understand the underlying process. Le middleware Azure AD intègre des fonctionnalités de validation des jetons d’accès, et vous pouvez parcourir nos exemples pour en trouver un dans la langue de votre choix.The Azure AD middleware has built-in capabilities for validating access tokens, and you can browse through our samples to find one in the language of your choice. Il existe également plusieurs bibliothèques open source tierces qui permettent de valider les jetons JWT. Quels que soient la plateforme et le langage que vous utilisez, vous avez la quasi-certitude de trouver au moins une option.There are also several third-party open-source libraries available for JWT validation - there is at least one option for almost every platform and language. Pour plus d’informations sur les exemples de code et les bibliothèques d’authentification Azure AD, consultez Bibliothèques d’authentification.For more information about Azure AD authentication libraries and code samples, see the authentication libraries.

Validation de la signatureValidating the signature

Un jeton JWT contient trois segments séparés par le caractère . .A JWT contains three segments, which are separated by the . character. Le premier segment est appelé l’en-tête, le second le corps et le troisième la signature.The first segment is known as the header, the second as the body, and the third as the signature. Le segment de signature peut être utilisé pour valider l’authenticité du jeton afin qu’il soit approuvé par votre application.The signature segment can be used to validate the authenticity of the token so that it can be trusted by your app.

Les jetons émis par Azure AD sont signés à l’aide d’algorithmes de chiffrement asymétrique standard, tels que RS256.Tokens issued by Azure AD are signed using industry standard asymmetric encryption algorithms, such as RS256. L’en-tête du JWT contient des informations sur la clé et la méthode de chiffrement utilisées pour signer le jeton :The header of the JWT contains information about the key and encryption method used to sign the token:

{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "iBjL1Rcqzhiy4fpxIxdZqohM2Yk",
  "kid": "iBjL1Rcqzhiy4fpxIxdZqohM2Yk"
}

La revendication alg indique l’algorithme utilisé pour signer le jeton, tandis que la revendication kid indique la clé publique utilisée pour le valider.The alg claim indicates the algorithm that was used to sign the token, while the kid claim indicates the particular public key that was used to validate the token.

À tout moment, Azure AD peut signer un jeton id_token à l'aide de l'un des ensembles de paires de clés publique-privée.At any given point in time, Azure AD may sign an id_token using any one of a certain set of public-private key pairs. Étant donné qu'Azure AD alterne le jeu de clés possible de façon périodique, votre application doit être écrite de manière à gérer automatiquement ces changements de clés.Azure AD rotates the possible set of keys on a periodic basis, so your app should be written to handle those key changes automatically. Pour vérifier les mises à jour apportées aux clés publiques utilisées par Azure AD, spécifiez une fréquence raisonnable d’environ 24 heures.A reasonable frequency to check for updates to the public keys used by Azure AD is every 24 hours.

Pour acquérir les données de la clé de signature nécessaires pour valider la signature, utilisez le document de métadonnées OpenID Connect à l’emplacement suivant :You can acquire the signing key data necessary to validate the signature by using the OpenID Connect metadata document located at:

https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration

Conseil

Testez cette URL dans un navigateur !Try this URL in a browser!

Ce document de métadonnées :This metadata document:

  • Est un objet JSON qui contient diverses informations utiles, comme l’emplacement des différents points de terminaison nécessaires pour effectuer l’authentification OpenID Connect.Is a JSON object containing several useful pieces of information, such as the location of the various endpoints required for doing OpenID Connect authentication.
  • Comprend également un jwks_uri qui indique l’emplacement de l’ensemble des clés publiques utilisées pour signer les jetons.Includes a jwks_uri, which gives the location of the set of public keys used to sign tokens. La clé web JSON (JWK) située sous jwks_uri contient toutes les informations sur les clés publiques utilisées à cet instant donné.The JSON Web Key (JWK) located at the jwks_uri contains all of the public key information in use at that particular moment in time. Le format JWK est décrit dans la RFC 7517.The JWK format is described in RFC 7517. Votre application peut utiliser la revendication kid dans l’en-tête JWT pour sélectionner la clé publique utilisée dans ce document pour signer un jeton donné.Your app can use the kid claim in the JWT header to select which public key in this document has been used to sign a particular token. Elle peut ensuite procéder à la validation des signatures à l’aide de la clé publique correcte et de l’algorithme indiqué.It can then do signature validation using the correct public key and the indicated algorithm.

Notes

Nous vous recommandons d’utiliser la revendication kid pour valider votre jeton.We recommend using the kid claim to validate your token. Alors que les jetons v1.0 contiennent à la fois les revendications x5t et kid, les jetons v2.0 contiennent uniquement la revendication kid.Though v1.0 tokens contain both the x5t and kid claims, v2.0 tokens contain only the kid claim.

La validation des signatures dépasse le cadre de ce document. Si vous avez besoin d’aide, de nombreuses bibliothèques open source sont disponibles.Doing signature validation is outside the scope of this document - there are many open-source libraries available for helping you do so if necessary. Toutefois, la plateforme d’identités Microsoft dispose d’une extension de signature de jeton pour les normes : des clés de signature personnalisées.However, the Microsoft identity platform has one token signing extension to the standards - custom signing keys.

Si votre application dispose de clés de signature personnalisées après avoir utilisé la fonctionnalité claims-mapping, vous devez ajouter un paramètre de requête appid contenant l’ID de l’application afin d’obtenir un jwks_uri qui redirige vers l’information de clé de signature de votre application qui doit être utilisée pour la validation.If your app has custom signing keys as a result of using the claims-mapping feature, you must append an appid query parameter containing the app ID to get a jwks_uri pointing to your app's signing key information, which should be used for validation. Par exemple : https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration?appid=6731de76-14a6-49ae-97bc-6eba6914391e contient un jwks_uri de https://login.microsoftonline.com/{tenant}/discovery/keys?appid=6731de76-14a6-49ae-97bc-6eba6914391e.For example: https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration?appid=6731de76-14a6-49ae-97bc-6eba6914391e contains a jwks_uri of https://login.microsoftonline.com/{tenant}/discovery/keys?appid=6731de76-14a6-49ae-97bc-6eba6914391e.

Autorisation basée sur les revendicationsClaims based authorization

Cette étape est déterminée par la logique métier de votre application, certaines méthodes d’autorisation courantes sont décrites ci-dessous.Your application's business logic will dictate this step, some common authorization methods are laid out below.

  • Vérifiez la revendication scp ou roles pour vous assurer que toutes les étendues présentes correspondent à celles exposées par votre API, et permettre au client d’effectuer l’action requise.Check the scp or roles claim to verify that all present scopes match those exposed by your API, and allow the client to do the requested action.
  • Assurez-vous que le client appelant est autorisé à appeler votre API avec l’attribut appid.Ensure the calling client is allowed to call your API using the appid claim.
  • Validez l’état d’authentification du client appelant à l’aide de appidacr. Si les clients publics ne sont pas autorisés à appeler votre API, sa valeur doit être différente de 0.Validate the authentication status of the calling client using appidacr - it shouldn't be 0 if public clients aren't allowed to call your API.
  • Vérifiez par rapport à une liste de revendications nonce passées pour savoir si le jeton n’est pas en relecture.Check against a list of past nonce claims to verify the token isn't being replayed.
  • Vérifiez que tid correspond à un client autorisé à appeler votre API.Check that the tid matches a tenant that is allowed to call your API.
  • Utilisez la revendication amr pour vérifier que l’utilisateur a effectué la MFA.Use the amr claim to verify the user has performed MFA. Cela doit être exécuté à l’aide d’un accès conditionnel.This should be enforced using Conditional Access.
  • Si vous avez demandé les revendications roles ou groups dans le jeton d’accès, vérifiez que l’utilisateur fait bien partie du groupe autorisé à effectuer cette action.If you've requested the roles or groups claims in the access token, verify that the user is in the group allowed to do this action.
    • Pour les jetons récupérés à l’aide du flux implicite, vous devrez probablement interroger le Microsoft Graph de ces données, car il est souvent trop grand pour être contenu dans le jeton.For tokens retrieved using the implicit flow, you'll likely need to query the Microsoft Graph for this data, as it's often too large to fit in the token.

Jetons d’utilisateur et d’applicationUser and application tokens

Votre application peut recevoir des jetons pour utilisateur (le flux généralement décrit) ou directement d’une application (via le flux des informations d’identification du client).Your application may receive tokens for user (the flow usually discussed) or directly from an application (through the client credentials flow). Ces jetons réservés aux applications indiquent que l’appel provient d’une application et qu’aucun utilisateur ne lui est associé.These app-only tokens indicate that this call is coming from an application and does not have a user backing it. Ces jetons sont traités en grande partie de la même façon :These tokens are handled largely the same:

  • Utilisez roles pour afficher les autorisations qui ont été accordées au sujet du jeton.Use roles to see permissions that have been granted to the subject of the token.
  • Utilisez oid ou sub pour vérifier que le principal de service appelant est celui attendu.Use oid or sub to validate that the calling service principal is the expected one.

Si votre application doit faire la distinction entre les jetons d’accès pour l’application uniquement et les jetons d’accès pour les utilisateurs, utilisez la revendication facultative idtyp.If your app needs to distinguish between app-only access tokens and access tokens for users, use the idtyp optional claim. En ajoutant la revendication idtyp au champ accessToken et en recherchant la valeur app, vous pouvez détecter les jetons d’accès pour l’application uniquement.By adding the idtyp claim to the accessToken field, and checking for the value app, you can detect app-only access tokens. Les jetons d’ID et les jetons d’accès pour les utilisateurs ne contiennent pas la revendication idtyp.ID tokens and access tokens for users will not have the idtyp claim included.

Révocation de jetonsToken revocation

Les jetons d’actualisation peuvent être rendus non valides ou révoqués à tout moment, et ce pour diverses raisons,Refresh tokens can be invalidated or revoked at any time, for different reasons. classées dans deux grandes catégories : les délais d’expiration et les révocations.These fall into two main categories: timeouts and revocations.

Délais d’expiration des jetonsToken timeouts

La durée de vie des jetons d’actualisation peut être modifiée à l’aide de la configuration de la durée de vie des jetons.Using token lifetime configuration, the lifetime of refresh tokens can be altered. Il est normal et prévu que certains jetons restent inutilisés (par exemple, l’utilisateur n’ouvre pas l’application pendant trois mois) et expire par conséquent.It is normal and expected for some tokens to go without use (e.g. the user does not open the app for 3 months) and therefore expire. Les applications rencontreront des situations où le serveur de connexion rejette un jeton d’actualisation en raison de son âge.Apps will encounter scenarios where the login server rejects a refresh token due to its age.

  • MaxInactiveTime : si le jeton d’actualisation n’a pas été utilisé dans le délai défini par MaxInactiveTime, il ne sera plus valide.MaxInactiveTime: If the refresh token hasn't been used within the time dictated by the MaxInactiveTime, the Refresh Token will no longer be valid.
  • MaxSessionAge : si MaxAgeSessionMultiFactor ou MaxAgeSessionSingleFactor ont été définis sur une valeur autre que la valeur par défaut (Until-revoked), une réauthentification est nécessaire après l’écoulement du délai défini dans MaxAgeSession*.MaxSessionAge: If MaxAgeSessionMultiFactor or MaxAgeSessionSingleFactor have been set to something other than their default (Until-revoked), then reauthentication will be required after the time set in the MaxAgeSession* elapses.
  • Exemples :Examples:
    • Le client a un MaxInactiveTime de cinq jours et l’utilisateur est parti en congé pour une semaine ; par conséquent, Azure AD n’a pas reçu de nouvelle demande de jeton de sa part depuis sept jours.The tenant has a MaxInactiveTime of five days, and the user went on vacation for a week, and so Azure AD hasn't seen a new token request from the user in 7 days. La prochaine fois que l’utilisateur demandera un nouveau jeton, il s’apercevra que son jeton d’actualisation a été révoqué, et il devra entrer à nouveau ses informations d’identification.The next time the user requests a new token, they'll find their Refresh Token has been revoked, and they must enter their credentials again.
    • Une application sensible a un MaxAgeSessionSingleFactor d’un jour.A sensitive application has a MaxAgeSessionSingleFactor of one day. Si un utilisateur se connecte le lundi et le mardi (après 25 heures), il devra s’authentifier à nouveau.If a user logs in on Monday, and on Tuesday (after 25 hours have elapsed), they'll be required to reauthenticate.

RévocationRevocation

Les jetons d’actualisation peuvent être révoqués par le serveur en raison d’une modification des informations d’identification ou en raison d’une action d’utilisation ou d’administration.Refresh tokens can be revoked by the server due to a change in credentials, or due to use or admin action. Les jetons d’actualisation se répartissent en deux classes : ceux émis pour les clients confidentiels (colonne la plus à droite) et ceux émis pour les clients publics (toutes les autres colonnes).Refresh tokens fall into two classes - those issued to confidential clients (the rightmost column) and those issued to public clients (all other columns).

ModifierChange Cookie basé sur un mot de passePassword-based cookie Jeton basé sur un mot de passePassword-based token Cookie non basé sur un mot de passeNon-password-based cookie Jeton non basé sur un mots de passeNon-password-based token Jeton client confidentielConfidential client token
Le mot de passe expirePassword expires Reste actifStays alive Reste actifStays alive Reste actifStays alive Reste actifStays alive Reste actifStays alive
Mot de passe modifié par l’utilisateurPassword changed by user RévoquéRevoked RévoquéRevoked Reste actifStays alive Reste actifStays alive Reste actifStays alive
L’utilisateur effectue SSPRUser does SSPR RévoquéRevoked RévoquéRevoked Reste actifStays alive Reste actifStays alive Reste actifStays alive
L’administrateur réinitialise le mot de passeAdmin resets password RévoquéRevoked RévoquéRevoked Reste actifStays alive Reste actifStays alive Reste actifStays alive
L’utilisateur révoque ses jetons d’actualisation via PowerShellUser revokes their refresh tokens via PowerShell RévoquéRevoked RévoquéRevoked RévoquéRevoked RévoquéRevoked RévoquéRevoked
L’administrateur révoque tous les jetons d’actualisation d’un utilisateur via PowerShellAdmin revokes all refresh tokens for a user via PowerShell RévoquéRevoked RévoquéRevoked RévoquéRevoked RévoquéRevoked RévoquéRevoked
Déconnexion unique (v1.0, v2.0) sur le webSingle sign-out (v1.0, v2.0 ) on web RévoquéRevoked Reste actifStays alive RévoquéRevoked Reste actifStays alive Reste actifStays alive

Non basée sur mot de passeNon-password-based

Une connexion non basée sur mot de passe est une connexion où l’utilisateur n’a pas saisi un mot de passe.A non-password-based login is one where the user didn't type in a password to get it. Voici des exemples de connexions non basées sur mot de passe :Examples of non-password-based login include:

  • Utilisation de votre visage avec Windows HelloUsing your face with Windows Hello
  • Clé FIDO2FIDO2 key
  • SMSSMS
  • VoixVoice
  • PINPIN

Pour plus d’informations sur les jetons d’actualisation principaux, consultez Jetons d’actualisation principaux.Check out Primary Refresh Tokens for more details on primary refresh tokens.

Étapes suivantesNext steps