OpenID Connect (OIDC) 標準の一部として、 UserInfo エンドポイント は認証済みユーザーに関する情報を返します。
.well-known 構成エンドポイントを見つける
プログラムで UserInfo エンドポイントを見つけるには、userinfo_endpoint
の OpenID 構成ドキュメントのhttps://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration
フィールドを読み取ります。 アプリケーションで UserInfo エンドポイントをハードコーディングすることはお勧めしません。 代わりに、OIDC 構成ドキュメントを使用して、実行時にエンドポイントを検索します。
UserInfo エンドポイントは、通常、 OIDC 準拠ライブラリ によって自動的に呼び出され、ユーザーに関する情報を取得します。 OIDC 標準で識別された要求の一覧から、Microsoft ID プラットフォームは、名前要求、サブジェクト要求、および電子メールが使用可能で同意された場合に生成します。
代わりに ID トークンを使用することを検討してください
ID トークン内の情報は、UserInfo エンドポイントで使用できる情報のスーパーセットです。 UserInfo エンドポイントを呼び出すトークンを取得すると同時に ID トークンを取得できるため、UserInfo エンドポイントを呼び出す代わりに、トークンからユーザーの情報を取得することをお勧めします。 UserInfo エンドポイントを呼び出す代わりに ID トークンを使用すると、最大 2 つのネットワーク要求が不要になります。これにより、アプリケーションの待機時間が短縮されます。
マネージャーや役職などのユーザーの詳細が必要な場合は、 Microsoft Graph /user
API を呼び出します。
また、省略可能な要求を使用して、ID とアクセス トークンに追加のユーザー情報を含めることもできます。
UserInfo エンドポイントを呼び出す
UserInfo は、Microsoft Graph によってホストされる標準の OAuth ベアラー トークン API です。 アプリケーションが Microsoft Graph へのアクセスを要求したときに受け取ったアクセス トークンを使用して、Microsoft Graph API を呼び出すのと同様に、UserInfo エンドポイントを呼び出します。 UserInfo エンドポイントは、ユーザーに関する要求を含む JSON 応答を返します。
権限
UserInfo API を呼び出すには、次の OIDC アクセス許可 を使用します。
openid
要求が必要であり、profile
スコープとemail
スコープにより、応答に追加情報が確実に提供されます。
アクセス許可の種類 | 権限 |
---|---|
委任 (勤務先または学校アカウント) |
openid (必須)、 profile 、 email |
委任 (個人用 Microsoft アカウント) |
openid (必須)、 profile 、 email |
アプリケーション | 適用なし |
ヒント
ブラウザーでこの URL をコピーして、UserInfo エンドポイントのアクセス トークンと ID トークンを取得します。 クライアント ID とリダイレクト URI をアプリ登録の値に置き換えます。
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
次のセクションのクエリで返されるアクセス トークンを使用できます。
Microsoft Graph では、アプリの読み取りまたは検証機能に影響を与える可能性がある特別なトークン発行パターンを使用します。 他の Microsoft Graph トークンと同様に、ここで受け取るトークンは JWT ではない可能性があり、アプリでは不透明と見なす必要があります。 Microsoft アカウント ユーザーにサインインした場合は、暗号化されたトークン形式になります。 ただし、これらの要因はいずれも、UserInfo エンドポイントへの要求でアクセス トークンを使用するアプリの機能に影響しません。
API の呼び出し
UserInfo API は、GET 要求と POST 要求の両方をサポートします。
GET or POST /oidc/userinfo HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6Il…
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.
}
応答に表示される要求は、UserInfo エンドポイントが返すことができるすべての要求です。 これらの値は、 ID トークンに含まれているのと同じ値です。
UserInfo エンドポイントに関する注意事項と注意事項
UserInfo エンドポイントによって返される情報を追加またはカスタマイズすることはできません。
認証と承認時に ID プラットフォームによって返される情報をカスタマイズするには、 要求マッピング とオプションの 要求 を使用してセキュリティ トークンの構成を変更します。