GitLab を OpenID Connect のアイデンティティプロバイダーに

このドキュメントは、GitLabをOpenID ConnectのIDプロバイダとして使用し、他のサービスにサインインするためのものです。

OpenID Connect入門

OpenID Connect(OIDC) は、OAuth 2.0 プロトコルの上位に位置するシンプルな ID レイヤです。これによりクライアントは

  • GitLabによって実行された認証に基づいてエンドユーザーの身元を確認します。
  • 相互運用可能なRESTライクな方法でエンドユーザーの基本プロファイル情報を取得します。

OIDCはOpenID 2.0と同じタスクの多くを実行しますが、APIフレンドリーであり、ネイティブアプリケーションやモバイルアプリケーションで使用可能です。

クライアント側では、Railsアプリケーション用のOmniAuth:: OpenIDConnectを使用することができます。

GitLab の実装はdoorkeeper-openid_connectDoorkeeper gem を使用しています。仕様のどの部分がサポートされているかについての詳細は README を参照してください。

OAuth アプリケーションで OpenID Connect を使用可能にする方法

GitLabでOAuthアプリケーションを設定する基本的な情報については、OAuthガイドを参照してください。アプリケーションで OIDC を有効にするには、アプリケーションの設定でopenid スコープを選択するだけです。

設定の発見

クライアントがディスカバリーURLからのOIDC設定のインポートを許可している場合、以下のURLを使ってGitLab.comの正しい設定を自動的に見つけることができます:

https://gitlab.com/.well-known/openid-configuration

同様のURLは他のGitLabインスタンスにも使えます。

共有情報

以下のユーザー情報はクライアントと共有されます:

請求種類説明
substringユーザーのID
auth_timeintegerユーザーの最終認証のタイムスタンプ
namestringユーザーのフルネーム
nicknamestringユーザーの GitLab ユーザー名
preferred_usernamestringユーザーの GitLab ユーザー名
emailstringユーザーのメールアドレス
ユーザーのプライマリメールアドレスです。
email_verifiedbooleanユーザーのメールアドレスが確認されたかどうか
websitestringユーザーのウェブサイトのURL
profilestringユーザーのGitLabプロフィールのURL
picturestringユーザーのGitLabアバターのURL
groupsarrayユーザーが直接、あるいは祖先グループを通して所属しているグループのパス。
groups_directarrayユーザーが直接所属しているグループのパス。
https://gitlab.org/claims/groups/ownerarrayユーザーがオーナーロールを持つ直接のメンバーであるグループの名前
https://gitlab.org/claims/groups/maintainerarrayユーザーが直接メンテナーのロールを持つグループの名前
https://gitlab.org/claims/groups/developerarray開発者ロールを持つユーザが直接所属するグループの名前

sub,sub_legacy,groups_direct のクレームは ID トークンに含まれます。emailemail_verified のクレームは、アプリケーションがemail のクレームとユーザーの公開メールアドレスにアクセスできる場合にのみ追加されます。その他のクレームはすべて、OIDCクライアントが使用する/oauth/userinfo エンドポイントから利用可能です。