Point de terminaison UserInfo de la plateforme d’identités Microsoft

Dans le cadre de la norme OpenID Connect (OIDC), le point de terminaison UserInfo retourne des informations sur un utilisateur authentifié.

Rechercher le point de terminaison de configuration bien connu

Vous pouvez trouver le point de terminaison UserInfo par programmation en lisant le champ userinfo_endpoint du document de configuration OpenID disponible sur https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration. Nous vous déconseillons de coder en dur le point de terminaison UserInfo dans vos applications. À la place, utilisez le document de configuration OIDC pour rechercher le point de terminaison au moment de l’exécution.

Le point de terminaison UserInfo est généralement appelé automatiquement par les bibliothèques conformes à OIDC pour obtenir des informations sur l’utilisateur. À partir de la liste des revendications identifiées dans la norme OIDC, la plateforme d’identité Microsoft produit les revendications de nom, la revendication de l’objet et l’adresse e-mail, lorsqu’elles sont disponibles et consenties.

Utiliser un jeton d’ID à la place

Les informations contenues dans un jeton d’ID sont un surensemble des informations disponibles sur le point de terminaison UserInfo. Dès lors que vous pouvez obtenir un jeton d’ID en même temps que vous obtenez un jeton permettant d’appeler le point de terminaison UserInfo, nous vous conseillons d’avoir les informations utilisateur contenues dans le jeton au lieu d’appeler le point de terminaison UserInfo. Utiliser le jeton d’ID au lieu d’appeler le point de terminaison UserInfo élimine jusqu’à deux requêtes réseau, ce qui réduit la latence dans votre application.

Si vous avez besoin d’informations supplémentaires sur l’utilisateur comme son responsable ou son poste, appelez l’API /user Microsoft Graph. Vous pouvez également utiliser des revendications facultatives pour inclure des informations utilisateur supplémentaires dans vos jetons d’ID et d’accès.

Appel du point de terminaison UserInfo

UserInfo est une API de jeton de porteur OAuth standard qui est hébergée par Microsoft Graph. Appelez le point de terminaison UserInfo, comme vous le feriez avec une API Microsoft Graph en utilisant le jeton d’accès que votre application a reçu après avoir demandé l’accès à Microsoft Graph. Le point de terminaison UserInfo retourne une réponse JSON contenant les revendications relatives à l’utilisateur.

Autorisations

Utilisez les autorisations OIDC suivantes pour appeler l’API UserInfo. La revendication openid est obligatoire, et les étendues profile et email garantissent que des informations supplémentaires sont fournies dans la réponse.

Type d'autorisation Autorisations
Déléguée (compte professionnel ou scolaire) openid (obligatoire), profile, email
Déléguée (compte Microsoft personnel) openid (obligatoire), profile, email
Application Non applicable

Conseil

Copiez cette URL dans votre navigateur afin d’obtenir un jeton d’accès pour le point de terminaison UserInfo ainsi qu’un jeton d’ID. Remplacez l’ID client et l’URI de redirection par les valeurs d’une inscription d’application.

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=<yourClientID>&response_type=token+id_token&redirect_uri=<YourRedirectUri>&scope=user.read+openid+profile+email&response_mode=fragment&state=12345&nonce=678910

Vous pouvez utiliser le jeton d’accès retourné dans la requête dans la section suivante.

Microsoft Graph utilise un modèle d’émission de jeton spécial qui peut impacter la capacité de votre application à le lire ou le valider. Comme pour tout autre jeton Microsoft Graph, le jeton que vous recevez ici peut ne pas être un jeton JWT et doit être considéré comme opaque par votre application. Si vous avez connecté un utilisateur de compte Microsoft, il s’agira d’un format de jeton chiffré. Aucun de ces facteurs n’impacte toutefois la capacité de votre application à utiliser le jeton d’accès dans une requête au point de terminaison UserInfo.

Appel de l’API

L’API UserInfo prend en charge les requêtes GET et POST.

GET or POST /oidc/userinfo HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6Il…

Réponse UserInfo

{
    "sub": "OLu859SGc2Sr9ZsqbkG-QbeLgJlb41KcdiPoLYNpSFA",
    "name": "Mikah Ollenburg", // all names require the “profile” scope.
    "family_name": " Ollenburg",
    "given_name": "Mikah",
    "picture": "https://graph.microsoft.com/v1.0/me/photo/$value",
    "email": "mikoll@contoso.com" // requires the “email” scope.
}

Les revendications affichées dans la réponse sont toutes celles que le point de terminaison UserInfo peut retourner. Ces valeurs sont les mêmes valeurs contenues dans un jeton d’ID.

Remarques et avertissements sur le point de terminaison UserInfo

Vous ne pouvez pas ajouter ni personnaliser les informations retournées par le point de terminaison UserInfo.

Pour personnaliser les informations retournées par la plateforme d’identité durant l’authentification et l’autorisation, utilisez le mappage des revendications et les revendications facultatives pour modifier la configuration des jetons de sécurité.

Étapes suivantes