Microsofts identitetsplattform UserInfo-slutpunkt

UserInfo-slutpunkten är en del av OpenID Anslut standard (OIDC), utformad för att returnera anspråk om användaren som autentiserades. För Microsofts identitetsplattform finns UserInfo-slutpunkten på Microsoft Graph (https://graph.microsoft.com/oidc/userinfo).

Hitta den välkända konfigurationsslutpunkten

Du kan programmatiskt identifiera UserInfo-slutpunkten med hjälp av OpenID-Anslut identifieringsdokumentet på https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration. Det visas i fältet userinfo_endpoint och det här mönstret kan användas i moln för att peka på rätt slutpunkt. Vi rekommenderar inte hårdkodning av UserInfo-slutpunkten i appen – använd OIDC-identifieringsdokumentet för att hitta slutpunkten vid körning i stället.

Som en del av OpenID-Anslut-specifikationen anropas UserInfo-slutpunkten ofta automatiskt av OIDC-kompatibla bibliotek för att få information om användaren. Utan att vara värd för en sådan slutpunkt skulle Microsofts identitetsplattform inte vara standardkompatibel och vissa bibliotek skulle misslyckas. Från listan över anspråk som identifieras i OIDC-standarden producerar vi namnanspråk, ämnesanspråk och e-post när de är tillgängliga och medgivande för.

Överväg: Använd en ID-token i stället

Den information som är tillgänglig i den ID-token som din app kan ta emot är en supermängd av den information den kan få från UserInfo-slutpunkten. Eftersom du kan hämta en ID-token samtidigt som du får en token för att anropa UserInfo-slutpunkten föreslår vi att du använder denna ID-token för att hämta information om användaren i stället för att anropa UserInfo-slutpunkten. Om du använder ID-token elimineras en till två nätverksbegäranden från programstarten, vilket minskar svarstiden i ditt program.

Om du behöver mer information om användaren bör du anropa Microsoft Graph /user API för att få information som kontorsnummer eller jobbtitel. Du kan också använda valfria anspråk för att inkludera ytterligare användarinformation i ditt ID och åtkomsttoken.

Anropa UserInfo-slutpunkten

UserInfo är ett standard-API för OAuth Bearer-token, som kallas som alla andra Microsoft-Graph API med hjälp av åtkomsttoken som tas emot när du hämtar en token för Microsoft Graph. Det returnerar ett JSON-svar som innehåller anspråk om användaren.

Behörigheter

Använd följande OIDC-behörigheter för att anropa UserInfo-API:et. openid krävs, och omfången profile och email ser till att ytterligare information tillhandahålls i svaret.

Behörighetstyp Behörigheter
Delegerad (arbets- eller skolkonto) openid (krävs), profil, e-post
Delegerad (personligt Microsoft-konto) openid (krävs), profil, e-post
Program Inte tillämpligt

Tips

Kopiera den här URL:en i webbläsaren för att hämta en token för UserInfo-slutpunkten samt en ID-token och ersätt klient-ID:t och omdirigerings-URI:n med din egen. Observera att den endast begär omfång för OpenID eller Graph omfång och inget annat. Detta krävs eftersom du inte kan begära behörigheter för två olika resurser i samma tokenbegäran.

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

Du kan använda den här åtkomsttoken i nästa avsnitt.

Precis som med andra Microsoft Graph-token är den token som du får här kanske inte en JWT. Om du har loggat in på en Microsoft-kontoanvändare är det ett krypterat tokenformat. Det beror på att Microsoft Graph har ett särskilt mönster för utfärdande av token. Detta påverkar inte din möjlighet att använda åtkomsttoken för att anropa UserInfo-slutpunkten.

Anropa API:et

UserInfo-API:et stöder både GET och POST, enligt OIDC-specifikationen.

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

UserInfo-svar

{
    "sub": "OLu859SGc2Sr9ZsqbkG-QbeLgJlb41KcdiPoLYNpSFA",
    "name": "Mikah Ollenburg", // names all 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.
}

Anspråken som anges här är alla anspråk som UserInfo-slutpunkten kan returnera. Det här är samma värden som appen skulle se i den ID-token som utfärdats till appen.

Anteckningar och varningar på UserInfo-slutpunkten

  • Om du vill anropa den här UserInfo-slutpunkten måste du använda v2.0-slutpunkten. Om du använder v1.0-slutpunkten får du en token för v1.0 UserInfo-slutpunkten som finns på login.microsoftonline.com. Vi rekommenderar att alla OIDC-kompatibla appar och bibliotek använder v2.0-slutpunkten för att säkerställa kompatibilitet.
  • Svaret från UserInfo-slutpunkten kan inte anpassas. Om du vill anpassa anspråk använder du anspråksmappning för att redigera informationen som returneras i token.
  • Det går inte att lägga till svaret från UserInfo-slutpunkten. Om du vill få ytterligare anspråk om användaren använder du valfria anspråk för att lägga till nya anspråk i token.

Nästa steg