UserInfoエンドポイントの役割
UserInfoエンドポイントは、OIDCプロバイダーが提供するユーザー情報取得用のAPIです。アクセストークンをBearerトークンとして送信することで、 認証されたユーザーのプロフィール情報を取得できます。
このエンドポイントはOIDCの仕様で標準化されており、 どのプロバイダーでも同じ方法でユーザー情報を取得できます。
リクエストとレスポンス
リクエスト
GET /userinfo HTTP/1.1 Host: accounts.example.com Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
レスポンス
HTTP/1.1 200 OK
Content-Type: application/json
{
"sub": "user-12345",
"name": "Alice Smith",
"given_name": "Alice",
"family_name": "Smith",
"preferred_username": "alice",
"email": "alice@example.com",
"email_verified": true,
"picture": "https://example.com/alice/photo.jpg",
"updated_at": 1699900000
}POSTメソッドでも取得可能です。その場合、アクセストークンは リクエストボディの access_token パラメータとして送信します。
IDトークン vs UserInfo
| 項目 | IDトークン | UserInfoエンドポイント |
|---|---|---|
| 取得方法 | トークンレスポンスに含まれる | 別途APIリクエストが必要 |
| 情報量 | 最小限(認証に必要な情報のみ) | 豊富(スコープに応じて詳細) |
| 署名 | 署名あり(JWT) | 通常は署名なし(HTTPS依存) |
| 鮮度 | 発行時点の情報(キャッシュ可) | リクエスト時点の最新情報 |
| 用途 | 認証の証明 | プロフィール情報の取得 |
IDトークンは認証の証明として使い、 詳細なプロフィール情報が必要な場合にUserInfoエンドポイントを呼び出す、 というのが推奨パターンです。
スコープとクレームの対応
認可リクエストで指定するスコープによって、 UserInfoエンドポイントから返却されるクレームが決まります。
openid- OIDC認証の必須スコープsub
profile- 基本的なプロフィール情報namefamily_namegiven_namemiddle_namenicknamepreferred_usernameprofilepicturewebsitegenderbirthdatezoneinfolocaleupdated_at
email- メールアドレス情報emailemail_verified
address- 住所情報address
phone- 電話番号情報phone_numberphone_number_verified
エラーレスポンス
アクセストークンが無効な場合や権限が不足している場合、 以下のようなエラーが返されます。
HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer error="invalid_token", error_description="The access token expired"
invalid_token- トークンが無効または期限切れinsufficient_scope- 要求されたクレームに対してスコープが不足
次のステップ
OIDCの基礎を理解したら、次は セキュリティ セクションで、OAuth/OIDCのセキュリティ対策を学びましょう。