メインコンテンツまでスキップ

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形式で返されます。issuerauthorization_endpointtoken_endpointなどOAuth 2.0の基本的な項目に加えて、次の項目が含まれます。

  • jwks_uri:JWKSエンドポイントのURL
  • userinfo_endpoint:userinfoエンドポイントのURL(発行可能なスコープにopenidが含まれる場合)
  • subject_types_supported
  • id_token_signing_alg_values_supportedRS256
  • claims_supported

以降のJWKS・userinfoの各エンドポイントのURLは、このレスポンスから確認できます。

id_token

トークンエンドポイントは、認可コード・リフレッシュトークン・クライアント認証情報などをアクセストークンに交換するためのエンドポイントです(URLはメタデータのtoken_endpointで確認できます)。付与されたスコープにopenidが含まれる場合、このエンドポイントのレスポンスに、アクセストークンに加えてRS256で署名されたid_token(JWT)が含まれます。

id_tokenには、常にiss(発行元)・sub(メンバーID)・aud(クライアントID)・iatexpauth_timeが含まれ、認可リクエストでnonceが指定された場合はnonceも含まれます。profileemailスコープに応じて追加される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取得元
openidsubメンバーID
profilename氏名(姓 + 名)
profilefamily_name
profilegiven_name
profilepreferred_usernameログインID
profileupdated_atメンバー情報の更新日時(Unixタイム)
emailemailメールアドレス
emailemail_verified常にtrue(Kurocoはメールアドレスの検証フローを持たないため、固定値です)

同意画面での共有情報

openidを含むスコープが要求された場合、同意画面には、クライアントに共有されるサインイン情報(claimの実際の値)が「共有される情報」として表示されます。スコープ名だけでなく、実際に連携されるメンバー情報を確認したうえで許可できます。

関連ドキュメント


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。