Plateforme d’identités Microsoft et flux d’informations d’identification du client OAuth 2.0Microsoft identity platform and the OAuth 2.0 client credentials flow

Vous pouvez utiliser l’octroi des informations d’identification du client OAuth 2.0 spécifié dans RFC 6749, parfois appelé OAuth à deux branches pour accéder à des ressources hébergées sur le web à l’aide de l’identité d’une application.You can use the OAuth 2.0 client credentials grant specified in RFC 6749, sometimes called two-legged OAuth, to access web-hosted resources by using the identity of an application. Ce type d’octroi est couramment utilisé pour les interactions de serveur à serveur qui doivent s’exécuter en arrière-plan sans l’interaction immédiate d’un utilisateur.This type of grant is commonly used for server-to-server interactions that must run in the background, without immediate interaction with a user. Ces types d’application sont souvent appelés démons (daemons) ou comptes de service.These types of applications are often referred to as daemons or service accounts.

Cet article explique comment programmer directement par rapport au protocole dans votre application.This article describes how to program directly against the protocol in your application. Dans la mesure du possible, nous vous recommandons d’utiliser les bibliothèques d’authentification Microsoft (MSAL) prises en charge au lieu d’acquérir des jetons et d’appeler des API web sécurisées.When possible, we recommend you use the supported Microsoft Authentication Libraries (MSAL) instead to acquire tokens and call secured web APIs. Jetez également un coup d’œil aux exemples d’applications qui utilisent MSAL.Also take a look at the sample apps that use MSAL.

Le flux d’octroi des informations d’identification du client OAuth 2.0 permet à un service web (client confidentiel) d’utiliser ses propres informations d’identification pour s’authentifier lorsqu’il appelle un autre service web, au lieu d’emprunter l’identité d’un utilisateur.The OAuth 2.0 client credentials grant flow permits a web service (confidential client) to use its own credentials, instead of impersonating a user, to authenticate when calling another web service. Dans ce scénario, le client est généralement un service web de niveau intermédiaire, un service démon ou un site web.In this scenario, the client is typically a middle-tier web service, a daemon service, or a web site. Pour augmenter le niveau d’assurance, la plateforme d’identités Microsoft autorise également le service d’appel à utiliser un certificat (au lieu d’un secret partagé) comme une information d’identification.For a higher level of assurance, the Microsoft identity platform also allows the calling service to use a certificate (instead of a shared secret) as a credential.

Dans le flux des informations d’identification du client, les autorisations sont accordées directement à l’application elle-même par l’administrateur.In the client credentials flow, permissions are granted directly to the application itself by an administrator. Lorsque l’application présente un jeton à une ressource, la ressource impose que l’application elle-même, et non pas l'utilisateur (puisqu’il n’est pas impliqué, ait l’autorisation d’effectuer une action.When the app presents a token to a resource, the resource enforces that the app itself has authorization to perform an action since there is no user involved in the authentication. Cet article décrit les étapes nécessaires pour autoriser une application à appeler une API, ainsi que comment récupérer les jetons nécessaires pour appeler cette API.This article covers both the steps needed to authorize an application to call an API, as well as how to get the tokens needed to call that API.

Schéma de protocoleProtocol diagram

Le flux d’informations d’identification client complet est similaire à l’illustration suivante.The entire client credentials flow looks similar to the following diagram. Nous décrirons en détail chacune des étapes plus loin dans cet article.We describe each of the steps later in this article.

Diagramme montrant le flux d’informations d’identification du client

Obtenir l’autorisation directeGet direct authorization

Une application reçoit généralement l’autorisation directe d’accéder à une ressource de deux manières :An app typically receives direct authorization to access a resource in one of two ways:

Ces deux méthodes sont les plus courantes dans Azure AD et sont recommandées pour les clients et les ressources qui exécutent le flux des informations d’identification du client.These two methods are the most common in Azure AD and we recommend them for clients and resources that perform the client credentials flow. Une ressource peut également choisir d’autoriser ses clients d’autres manières.A resource can also choose to authorize its clients in other ways. Chaque serveur de ressources peut choisir la méthode la plus logique pour son application.Each resource server can choose the method that makes the most sense for its application.

Listes de contrôle d'accèsAccess control lists

Un fournisseur de ressources peut appliquer une vérification d’autorisation basée sur une liste d’ID d’application (client) qu’il connaît et octroyer un niveau d’accès spécifique.A resource provider might enforce an authorization check based on a list of application (client) IDs that it knows and grants a specific level of access to. Lorsque la ressource reçoit un jeton à partir du point de terminaison de la plateforme d’identités Microsoft, elle peut décoder le jeton et extraire l’ID d’application du client à partir des revendications appid et iss.When the resource receives a token from the Microsoft identity platform endpoint, it can decode the token and extract the client's application ID from the appid and iss claims. Elle compare ensuite l’application par rapport à une liste de contrôle d'accès qu’elle gère.Then it compares the application against an access control list (ACL) that it maintains. La granularité et la méthode ACL peuvent varier considérablement entre les ressources.The ACL's granularity and method might vary substantially between resources.

Un cas d’utilisation typique consiste à utiliser une liste ACL afin d'exécuter des tests pour une application web ou une API Web.A common use case is to use an ACL to run tests for a web application or for a web API. L’API Web peut accorder uniquement un sous-ensemble d'autorisations complètes à un client spécifique.The web API might grant only a subset of full permissions to a specific client. Pour exécuter des tests de bout en bout sur l’API, créez un client test qui acquiert des jetons à partir du point de terminaison de la plateforme d’identités Microsoft, puis envoie ceux-ci à l’API.To run end-to-end tests on the API, create a test client that acquires tokens from the Microsoft identity platform endpoint and then sends them to the API. L’API vérifie ensuite l’ID d’application du client de test dans la liste de contrôle d'accès pour lui accorder un accès complet à toutes les fonctionnalités de l’API.The API then checks the ACL for the test client's application ID for full access to the API's entire functionality. Si vous utilisez ce type de liste de contrôle d'accès, veillez à valider non seulement la valeur appid de l'appelant, mais également que la valeur iss du jeton est approuvée.If you use this kind of ACL, be sure to validate not only the caller's appid value but also validate that the iss value of the token is trusted.

Ce type d’autorisation est courant pour les démons et les comptes de service qui doivent accéder à des données qui appartiennent à des utilisateurs avec des comptes Microsoft personnels.This type of authorization is common for daemons and service accounts that need to access data owned by consumer users who have personal Microsoft accounts. Pour les données appartenant à des organisations, nous vous recommandons d’acquérir l’autorisation requise via les autorisations de l’application.For data owned by organizations, we recommend that you get the necessary authorization through application permissions.

Notes

Pour activer ce modèle d’autorisation basé sur les listes de contrôle d’accès, Azure AD ne requiert pas que les applications soient autorisées à obtenir des jetons pour une autre application, de sorte que les jetons d’application uniquement peuvent être émis sans une revendication roles.In order to enable this ACL-based authorization pattern, Azure AD does not require that applications be authorized to get tokens for another application - so app-only tokens can be issued without a roles claim. Les applications qui exposent des API doivent implémenter des vérifications d’autorisation afin d’accepter les jetons.Applications that expose APIs must implement permission checks in order to accept tokens.

Autorisations de l’applicationApplication permissions

Au lieu d’utiliser des listes ACL, vous pouvez utiliser des API pour exposer un ensemble d’autorisations d’application.Instead of using ACLs, you can use APIs to expose a set of application permissions. Une autorisation de l’application est accordée à une application par un administrateur d’une organisation et peut uniquement être utilisée pour accéder aux données appartenant à cette organisation et ses employés.An application permission is granted to an application by an organization's administrator, and can be used only to access data owned by that organization and its employees. Par exemple, Microsoft Graph expose plusieurs autorisations d’application pour effectuer les opérations suivantes :For example, Microsoft Graph exposes several application permissions to do the following:

  • Lire les messages dans toutes les boîtes aux lettresRead mail in all mailboxes
  • Lire et écrire des messages dans toutes les boîtes aux lettresRead and write mail in all mailboxes
  • Envoyer des messages en tant que n’importe quel utilisateurSend mail as any user
  • Lire les données du répertoireRead directory data

Pour utiliser des autorisations d’application avec votre propre API (par opposition à Microsoft Graph), vous devez d’abord exposer l’API en définissant des étendues dans l’inscription de l’application de l’API dans le Portail Azure.To use application permissions with your own API (as opposed to Microsoft Graph), you must first expose the API by defining scopes in the API's app registration in the Azure portal. Ensuite, configurer l’accès à l’API en sélectionnant ces autorisations dans l’inscription de l’application de votre application cliente.Then, configure access to the API by selecting those permissions in your client application's app registration. Si vous n’avez pas exposé d’étendues dans l’inscription de l’application de votre API, vous ne pouvez pas spécifier d’autorisations d’application pour cette API dans l’inscription de l’application de votre application cliente dans le Portail Azure.If you haven't exposed any scopes in your API's app registration, you won't be able to specify application permissions to that API in your client application's app registration in the Azure portal.

Lors de l’authentification en tant qu’application (par opposition à l’authentification avec un utilisateur), vous ne pouvez pas utiliser d’autorisations déléguées, étendues accordées par un utilisateur.When authenticating as an application (as opposed to with a user), you can't use delegated permissions - scopes that are granted by a user. Vous devez utiliser des autorisations d’application, également appelées « rôles », accordées par un administrateur pour l’application ou par le biais d’une pré-autorisation par l’API web.You must use application permissions, also known as roles, that are granted by an admin for the application or via pre-authorization by the web API.

Pour en savoir plus sur les autorisations d’application, consultez Autorisation et Consentement.For more information about application permissions, see Permissions and consent.

En général, lorsque vous créez une application qui utilise des autorisations d’application, l’application doit disposer d’une page/vue qui permet à l’administrateur d’approuver les autorisations de l’application.Typically, when you build an application that uses application permissions, the app requires a page or view on which the admin approves the app's permissions. Cette page peut faire partie du flux d’inscription de l’application, des paramètres de l’application ou d’un flux de connexion dédié.This page can be part of the app's sign-in flow, part of the app's settings, or it can be a dedicated "connect" flow. Dans de nombreux cas, il est judicieux pour l’application d’afficher la vue de « connexion » uniquement après qu’un utilisateur se soit connecté avec un compte Microsoft professionnel ou scolaire.In many cases, it makes sense for the app to show this "connect" view only after a user has signed in with a work or school Microsoft account.

Si vous connectez l’utilisateur à votre application vous pouvez identifier l’organisation à laquelle l’utilisateur appartient avant de lui demander d’approuver les autorisations d’application.If you sign the user into your app, you can identify the organization to which the user belongs to before you ask the user to approve the application permissions. Bien que cela ne soit pas strictement nécessaire, cela peut vous aider à créer une expérience plus intuitive pour vos utilisateurs.Although not strictly necessary, it can help you create a more intuitive experience for your users. Pour connecter l’utilisateur, suivez nos tutoriels sur le protocole de la plateforme d’identités Microsoft.To sign the user in, follow our Microsoft identity platform protocol tutorials.

Demander les autorisations à un administrateur d’annuaireRequest the permissions from a directory admin

Lorsque vous êtes prêt à demander les autorisations à l’administrateur de l’organisation, vous pouvez rediriger l’utilisateur vers le point de terminaison de consentement administrateur de la plateforme d’identités Microsoft.When you're ready to request permissions from the organization's admin, you can redirect the user to the Microsoft identity platform admin consent endpoint.

Conseil

Essayez d'exécuter cette requête dans Postman !Try executing this request in Postman! Utilisez votre propre ID d’application pour de meilleurs résultats. L’application du tutoriel ne vous demande pas d’autorisations utiles. Essayez d’exécuter cette requête dans Postman(Use your own app ID for best results - the tutorial application won't request useful permissions.) Try running this request in Postman

// Line breaks are for legibility only.

GET https://login.microsoftonline.com/{tenant}/adminconsent?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&state=12345
&redirect_uri=http://localhost/myapp/permissions

Conseil pro : Essayez de coller la requête suivante dans un navigateur.Pro tip: Try pasting the following request in a browser.

https://login.microsoftonline.com/common/adminconsent?client_id=6731de76-14a6-49ae-97bc-6eba6914391e&state=12345&redirect_uri=http://localhost/myapp/permissions
ParamètreParameter ConditionCondition DescriptionDescription
tenant ObligatoireRequired Le client d’annuaire auquel vous souhaitez demander l’autorisation.The directory tenant that you want to request permission from. Peut être au format GUID ou sous forme de nom convivial.This can be in GUID or friendly name format. Si vous ne savez pas à quel client appartient l’utilisateur et si vous souhaitez lui permettre de se connecter avec n’importe quel client, utilisez common.If you don't know which tenant the user belongs to and you want to let them sign in with any tenant, use common.
client_id ObligatoireRequired L’ID (client) d’application attribué à votre application par l’environnement Inscriptions d’applications du portail Azure.The Application (client) ID that the Azure portal – App registrations experience assigned to your app.
redirect_uri ObligatoireRequired L'URI de redirection où vous souhaitez que la réponse soit envoyée pour être gérée par votre application.The redirect URI where you want the response to be sent for your app to handle. Il doit correspondre exactement à l’un des URI de redirection enregistrés dans le portail, auquel s’ajoute le codage dans une URL, et peut avoir des segments de chemin d’accès supplémentaires.It must exactly match one of the redirect URIs that you registered in the portal, except that it must be URL encoded, and it can have additional path segments.
state RecommandéRecommended Une valeur incluse dans la requête qui est également renvoyée dans la réponse de jeton.A value that's included in the request that's also returned in the token response. Il peut s’agir d’une chaîne du contenu de votre choix.It can be a string of any content that you want. La valeur d’état est utilisée pour coder les informations sur l’état de l’utilisateur dans l’application avant la requête d’authentification, comme la page ou l’écran sur lequel ou laquelle il était positionné.The state is used to encode information about the user's state in the app before the authentication request occurred, such as the page or view they were on.

À ce stade, Azure AD impose que seul un administrateur de locataire peut se connecter pour terminer la demande.At this point, Azure AD enforces that only a tenant administrator can sign into complete the request. L’administrateur est invité à approuver toutes les autorisations directes d’application demandées pour votre application dans le portail d’inscription des applications.The administrator will be asked to approve all the direct application permissions that you have requested for your app in the app registration portal.

Réponse correcteSuccessful response

Si l’administrateur approuve les autorisations pour votre application, la réponse correcte sera :If the admin approves the permissions for your application, the successful response looks like this:

GET http://localhost/myapp/permissions?tenant=a8990e1f-ff32-408a-9f8e-78d3b9139b95&state=state=12345&admin_consent=True
ParamètreParameter DescriptionDescription
tenant Le client d’annuaire ayant accordé à votre application les autorisations demandées, au format GUID.The directory tenant that granted your application the permissions that it requested, in GUID format.
state Une valeur incluse dans la requête, qui est également renvoyée dans la réponse de jeton.A value that is included in the request that also is returned in the token response. Il peut s’agir d’une chaîne du contenu de votre choix.It can be a string of any content that you want. La valeur d’état est utilisée pour coder les informations sur l’état de l’utilisateur dans l’application avant la requête d’authentification, comme la page ou l’écran sur lequel ou laquelle il était positionné.The state is used to encode information about the user's state in the app before the authentication request occurred, such as the page or view they were on.
admin_consent Définissez sur True.Set to True.
Réponse d’erreurError response

Si l’administrateur n’approuve pas les autorisations pour votre application, la réponse d’échec ressemble à ce qui suit :If the admin does not approve the permissions for your application, the failed response looks like this:

GET http://localhost/myapp/permissions?error=permission_denied&error_description=The+admin+canceled+the+request
ParamètreParameter DescriptionDescription
error Une chaîne de code d’erreur que vous pouvez utiliser pour classer les types d’erreur et pour intervenir face aux erreurs.An error code string that you can use to classify types of errors, and which you can use to react to errors.
error_description Un message d’erreur spécifique qui peut vous aider à identifier la cause principale d’une erreur.A specific error message that can help you identify the root cause of an error.

Une fois que vous avez reçu une réponse correcte du point de terminaison de mise en service de l’application, votre application a acquis les autorisations directes d’application qu’elle avait demandées.After you've received a successful response from the app provisioning endpoint, your app has gained the direct application permissions that it requested. Vous pouvez désormais demander un jeton pour la ressource que vous souhaitez.Now you can request a token for the resource that you want.

Obtention d’un jetonGet a token

Une fois que vous avez acquis l’autorisation nécessaire pour votre application, passez à l’acquisition des jetons d’accès pour les API.After you've acquired the necessary authorization for your application, proceed with acquiring access tokens for APIs. Pour obtenir un jeton à l’aide de l’octroi des informations d’identification du client, envoyez une demande POST au point de terminaison de la plateforme d’identités Microsoft /token :To get a token by using the client credentials grant, send a POST request to the /token Microsoft identity platform endpoint:

Conseil

Essayez d'exécuter cette requête dans Postman !Try executing this request in Postman! Utilisez votre propre ID d’application pour de meilleurs résultats. L’application du tutoriel ne vous demande pas d’autorisations utiles. Essayez d’exécuter cette requête dans Postman(Use your own app ID for best results - the tutorial application won't request useful permissions.) Try running this request in Postman

Premier cas : Requête de jeton d’accès avec un secret partagéFirst case: Access token request with a shared secret

POST /{tenant}/oauth2/v2.0/token HTTP/1.1           //Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret=qWgdYAmab0YSkuL1qKv5bPX
&grant_type=client_credentials
# Replace {tenant} with your tenant!
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'client_id=535fb089-9ff3-47b6-9bfb-4f1264799865&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=qWgdYAmab0YSkuL1qKv5bPX&grant_type=client_credentials' 'https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token'
ParamètreParameter ConditionCondition DescriptionDescription
tenant ObligatoireRequired Le locataire de l’annuaire sur lequel les plans d’application opèrent, au format GUID ou nom de domaine.The directory tenant the application plans to operate against, in GUID or domain-name format.
client_id ObligatoireRequired Copiez l’ID d’application affecté à votre application.The application ID that's assigned to your app. Ces informations sont disponibles dans le portail où vous avez inscrit votre application.You can find this information in the portal where you registered your app.
scope ObligatoireRequired La valeur transmise pour le paramètre scope dans cette demande doit être l’identificateur de ressource (URI ID d’application) de la ressource souhaitée, avec le suffixe .default.The value passed for the scope parameter in this request should be the resource identifier (application ID URI) of the resource you want, affixed with the .default suffix. Dans l’exemple Microsoft Graph, la valeur est https://graph.microsoft.com/.default.For the Microsoft Graph example, the value is https://graph.microsoft.com/.default.
Cette valeur indique au point de terminaison de la plateforme d’identités Microsoft que parmi toutes les autorisations directes d’application que vous avez configurées pour votre application, le point de terminaison doit émettre un jeton pour celles associées à la ressource que vous souhaitez utiliser.This value tells the Microsoft identity platform endpoint that of all the direct application permissions you have configured for your app, the endpoint should issue a token for the ones associated with the resource you want to use. Pour en savoir plus sur l’étendue /.default, consultez la documentation sur le consentement.To learn more about the /.default scope, see the consent documentation.
client_secret ObligatoireRequired La clé secrète client que vous avez générée pour votre application dans le portail d’inscription des applications.The client secret that you generated for your app in the app registration portal. Le secret du client doit être codé en URL avant d’être envoyé.The client secret must be URL-encoded before being sent.
grant_type ObligatoireRequired Cette propriété doit être définie sur client_credentials.Must be set to client_credentials.

Deuxième cas : Requête de jeton d’accès avec un certificatSecond case: Access token request with a certificate

POST /{tenant}/oauth2/v2.0/token HTTP/1.1               // Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_id=97e0a5b7-d745-40b6-94fe-5f77d35c6e05
&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJ{a lot of characters here}M8U3bSUKKJDEg
&grant_type=client_credentials
ParamètreParameter ConditionCondition DescriptionDescription
tenant ObligatoireRequired Le locataire de l’annuaire sur lequel les plans d’application opèrent, au format GUID ou nom de domaine.The directory tenant the application plans to operate against, in GUID or domain-name format.
client_id ObligatoireRequired L'ID d'application (client) affecté à votre application.The application (client) ID that's assigned to your app.
scope ObligatoireRequired La valeur transmise pour le paramètre scope dans cette demande doit être l’identificateur de ressource (URI ID d’application) de la ressource souhaitée, avec le suffixe .default.The value passed for the scope parameter in this request should be the resource identifier (application ID URI) of the resource you want, affixed with the .default suffix. Dans l’exemple Microsoft Graph, la valeur est https://graph.microsoft.com/.default.For the Microsoft Graph example, the value is https://graph.microsoft.com/.default.
Cette valeur indique au point de terminaison de la plateforme d’identités Microsoft que parmi toutes les autorisations directes d’application que vous avez configurées pour votre application, il doit émettre un jeton pour celles associées à la ressource que vous souhaitez utiliser.This value informs the Microsoft identity platform endpoint that of all the direct application permissions you have configured for your app, it should issue a token for the ones associated with the resource you want to use. Pour en savoir plus sur l’étendue /.default, consultez la documentation sur le consentement.To learn more about the /.default scope, see the consent documentation.
client_assertion_type ObligatoireRequired Elle doit avoir la valeur urn:ietf:params:oauth:client-assertion-type:jwt-bearer.The value must be set to urn:ietf:params:oauth:client-assertion-type:jwt-bearer.
client_assertion ObligatoireRequired Assertion (jeton Web JSON) dont vous avez besoin pour créer et signer avec le certificat inscrit comme informations d’identification pour votre application.An assertion (a JSON web token) that you need to create and sign with the certificate you registered as credentials for your application. Pour découvrir comment inscrire votre certificat et le format de l’assertion, consultez la rubrique traitant des informations d’identification des certificats.Read about certificate credentials to learn how to register your certificate and the format of the assertion.
grant_type ObligatoireRequired Cette propriété doit être définie sur client_credentials.Must be set to client_credentials.

Notez que les paramètres sont presque les mêmes que dans le cas de la demande par secret partagé, sauf que le paramètre client_secret est remplacé par deux paramètres : client_assertion_type et client_assertion.Notice that the parameters are almost the same as in the case of the request by shared secret except that the client_secret parameter is replaced by two parameters: a client_assertion_type and client_assertion.

Réponse correcteSuccessful response

Une réponse correcte se présente ainsi :A successful response looks like this:

{
  "token_type": "Bearer",
  "expires_in": 3599,
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBP..."
}
ParamètreParameter DescriptionDescription
access_token Le jeton d’accès demandé.The requested access token. L’application peut utiliser ce jeton pour procéder à l’authentification sur la ressource sécurisée, par exemple une API Web.The app can use this token to authenticate to the secured resource, such as to a web API.
token_type Indique la valeur du type de jeton.Indicates the token type value. Le seul type pris en charge par la plateforme d’identités Microsoft est bearer.The only type that Microsoft identity platform supports is bearer.
expires_in Durée de validité du jeton d’accès (en secondes).The amount of time that an access token is valid (in seconds).

Réponse d’erreurError response

Une réponse d’erreur ressemble à ceci :An error response looks like this:

{
  "error": "invalid_scope",
  "error_description": "AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope https://foo.microsoft.com/.default is not valid.\r\nTrace ID: 255d1aef-8c98-452f-ac51-23d051240864\r\nCorrelation ID: fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\r\nTimestamp: 2016-01-09 02:02:12Z",
  "error_codes": [
    70011
  ],
  "timestamp": "2016-01-09 02:02:12Z",
  "trace_id": "255d1aef-8c98-452f-ac51-23d051240864",
  "correlation_id": "fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7"
}
ParamètreParameter DescriptionDescription
error Une chaîne de code d’erreur que vous pouvez utiliser pour classer les types d’erreur se produisant et pour intervenir face aux erreurs.An error code string that you can use to classify types of errors that occur, and to react to errors.
error_description Un message d’erreur spécifique qui peut vous aider à identifier la cause principale d’une erreur d’authentification.A specific error message that might help you identify the root cause of an authentication error.
error_codes Liste des codes d’erreur STS spécifiques pouvant être utiles dans les tests de diagnostic.A list of STS-specific error codes that might help with diagnostics.
timestamp Heure à laquelle l'erreur s'est produite.The time when the error occurred.
trace_id Identifiant unique de la demande pour faciliter les tests de diagnostic.A unique identifier for the request to help with diagnostics.
correlation_id Identifiant unique de la demande pour faciliter les tests de diagnostic sur les différents composants.A unique identifier for the request to help with diagnostics across components.

Utilisation d’un jetonUse a token

Maintenant que vous avez acquis un jeton, utilisez-le pour effectuer des demandes auprès de la ressource.Now that you've acquired a token, use the token to make requests to the resource. Lorsque le jeton expire, répétez la demande auprès du point de terminaison /token pour acquérir un nouveau jeton d’accès.When the token expires, repeat the request to the /token endpoint to acquire a fresh access token.

GET /v1.0/me/messages
Host: https://graph.microsoft.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...
# Pro tip: Try the following command! (Replace the token with your own.)

curl -X GET -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbG...." 'https://graph.microsoft.com/v1.0/me/messages'

Exemples de code et autres documentsCode samples and other documentation

Lisez la documentation de présentation des informations d’identification du client dans la bibliothèque d’authentification Microsoft.Read the client credentials overview documentation from the Microsoft Authentication Library

ExempleSample PlateformePlatform DescriptionDescription
active-directory-dotnetcore-daemon-v2active-directory-dotnetcore-daemon-v2 Console .NET Core 2.1.NET Core 2.1 Console Application.NET Core simple qui affiche les utilisateurs d’un locataire interrogeant Microsoft Graph en utilisant l’identité de l’application plutôt que le compte d’un utilisateur.A simple .NET Core application that displays the users of a tenant querying the Microsoft Graph using the identity of the application, instead of on behalf of a user. L’exemple illustre également la variation en utilisant des certificats pour l’authentification.The sample also illustrates the variation using certificates for authentication.
active-directory-dotnet-daemon-v2active-directory-dotnet-daemon-v2 ASP.NET MVCASP.NET MVC Application web qui synchronise les données Microsoft Graph en utilisant l’identité de l’application plutôt que le compte d’un utilisateur.A web application that syncs data from the Microsoft Graph using the identity of the application, instead of on behalf of a user.