GitLabをOpenID Connect Identity Providerとして使用する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
GitLabをOpenID Connect(OIDC)Identity Providerとして使用し、他のサービスにアクセスすることができます。OIDCは、OpenID 2.0と同様のタスクを数多く実行するアイデンティティレイヤーですが、APIフレンドリーで、ネイティブアプリケーションやモバイルアプリケーションでも使用できます。
クライアントはOIDCを使用して、次のことができます:
- GitLabによって実行された認証に基づいて、エンドユーザーのアイデンティティを検証する。
- 相互運用可能でRESTに近い方法により、エンドユーザーの基本的なプロファイル情報を取得する。
RailsアプリケーションにはOmniAuth::OpenIDConnectを使用できます。その他にも多くのクライアント実装を利用できます。
GitLabは、OIDCサービスを提供するためにdoorkeeper-openid_connect gemを使用しています。詳しくは、doorkeeper-openid_connectリポジトリを参照してください。
OAuthアプリケーションでOIDCを有効にする
OAuthアプリケーションでOIDCを有効にするには、アプリケーション設定でopenidスコープを選択する必要があります。詳細については、GitLabをOAuth 2.0認証用のIdentity Providerとして設定するを参照してください。
設定の検出
クライアントがディスカバリURLからOIDC設定をインポートできる場合、GitLabはその情報にアクセスするためのエンドポイントを提供します:
- GitLab.comの場合は、
https://gitlab.com/.well-known/openid-configurationを使用します。 - GitLab Self-Managedの場合は、
https://<your-gitlab-instance>/.well-known/openid-configurationを使用します。
共有情報
クライアントと共有するユーザー情報は、次のとおりです:
| クレーム | 型 | 説明 | IDトークンに含まれる | userinfoエンドポイントに含まれる |
|---|---|---|---|---|
sub | string | ユーザーのID | はい | はい |
auth_time | integer | ユーザーの最終認証のタイムスタンプ | はい | いいえ |
name | string | ユーザーのフルネーム | はい | はい |
nickname | string | ユーザーのGitLabユーザー名 | はい | はい |
preferred_username | string | ユーザーのGitLabユーザー名 | はい | はい |
email | string | ユーザーのプライマリメールアドレス | はい | はい |
email_verified | boolean | ユーザーのメールアドレスが検証済みかどうか | はい | はい |
website | string | ユーザーのWebサイトのURL | はい | はい |
profile | string | ユーザーのGitLabプロファイルのURL | はい | はい |
picture | string | ユーザーのGitLabアバターのURL | はい | はい |
groups | array | ユーザーが直接、または祖先グループを通じて所属しているグループのパス。 | いいえ | はい |
groups_direct | array | ユーザーが直接所属しているグループのパス。 | はい | いいえ |
https://gitlab.org/claims/groups/owner | array | ユーザーがオーナーロールを持ち、直接所属しているグループの名前 | いいえ | はい |
https://gitlab.org/claims/groups/maintainer | array | ユーザーがメンテナーロールを持ち、直接所属しているグループの名前 | いいえ | はい |
https://gitlab.org/claims/groups/developer | array | ユーザーがデベロッパーロールを持ち、直接所属しているグループの名前 | いいえ | はい |
アプリケーションがemailスコープおよびユーザーの公開メールアドレスへのアクセス権を持っている場合にのみ、emailおよびemail_verifiedのクレームが含まれます。その他すべてのクレームは、OIDCクライアントが使用する/oauth/userinfoエンドポイントから取得できます。