OAuth Authorization ServerのOpenID Connect対応
OAuth Authorization Serverでサインイン用スコープ(openid / profile / email)を許可すると、この認可サーバーはOpenID Connectの認可サーバーとして、メンバーのサインイン情報(claim)をクライアントに連携します。付与されたスコープにopenidが含まれる場合にのみ、id_tokenの発行とuserinfoエンドポイントでのclaim取得が有効になります。
OAuth Authorization Serverの設定方法はOAuth Authorization Serverを参照してください。
基本情報
| 項目 | 内容 |
|---|---|
| 種別 | OpenID Connect(id_token / userinfo / JWKS) |
| 対象 | OAuth Authorization Server(用途がAPI / Management / AdminMCPのいずれか) |
| 利用場面 | OAuthクライアントがメンバーのサインイン情報(claim)を取得する場合 |
メタデータ
OAuth Authorization Serverの編集画面の[メタデータURL]にアクセスすると、この認可サーバーの設定情報(Authorization Server Metadata)がJSON形式で返されます。issuer・authorization_endpoint・token_endpointなどOAuth 2.0の基本的な項目に加えて、次の項目が含まれます。
jwks_uri:JWKSエンドポイントのURLuserinfo_endpoint:userinfoエンドポイントのURL(発行可能なスコープにopenidが含まれる場合)subject_types_supportedid_token_signing_alg_values_supported(RS256)claims_supported
以降のJWKS・userinfoの各エンドポイントのURLは、このレスポンスから確認できます。
id_token
トークンエンドポイントは、認可コード・リフレッシュトークン・クライアント認証情報などをアクセストークンに交換するためのエンドポイントです(URLはメタデータのtoken_endpointで確認できます)。付与されたスコープにopenidが含まれる場合、このエンドポイントのレスポンスに、アクセストークンに加えてRS256で署名されたid_token(JWT)が含まれます。
id_tokenには、常にiss(発行元)・sub(メンバーID)・aud(クライアントID)・iat・exp・auth_timeが含まれ、認可リクエストでnonceが指定された場合はnonceも含まれます。profile・emailスコープに応じて追加されるclaimは、スコープとclaimの対応を参照してください。
JWKSエンドポイント
id_tokenの署名を検証するための公開鍵を、JWK Set形式(RFC 7517)で配信します。エンドポイントのURLはメタデータのjwks_uriで確認できます。署名鍵は認可サーバーごとに管理され、初回アクセス時に生成されます。
userinfoエンドポイント
アクセストークンを用いて、メンバーのclaimを取得できます。
| 項目 | 内容 |
|---|---|
| メソッド | GET / POST |
| 認証 | Authorization: Bearer <access_token>ヘッダーで認証します(クエリパラメータでのアクセストークン指定には対応していません)。 |
| レスポンス | 付与されたスコープに応じたclaim(必ずsubを含む)をJSON形式で返します。 |
エンドポイントのURLは、メタデータのuserinfo_endpointで確認できます。
スコープとclaimの対応
付与されたスコープに応じて、id_tokenおよびuserinfoで返されるclaimが決まります。
| スコープ | claim | 取得元 |
|---|---|---|
openid | sub | メンバーID |
profile | name | 氏名(姓 + 名) |
profile | family_name | 姓 |
profile | given_name | 名 |
profile | preferred_username | ログインID |
profile | updated_at | メンバー情報の更新日時(Unixタイム) |
email | email | メールアドレス |
email | email_verified | 常にtrue(Kurocoはメールアドレスの検証フローを持たないため、固定値です) |
同意画面での共有情報
openidを含むスコープが要求された場合、同意画面には、クライアントに共有されるサインイン情報(claimの実際の値)が「共有される情報」として表示されます。スコープ名だけでなく、実際に連携されるメンバー情報を確認したうえで許可できます。
関連ドキュメント
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。