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インスタンスにも使えます。
共有情報
以下のユーザー情報はクライアントと共有されます:
請求 | 種類 | 説明 |
---|---|---|
sub | string | ユーザーのID |
auth_time | integer | ユーザーの最終認証のタイムスタンプ |
name | string | ユーザーのフルネーム |
nickname | string | ユーザーの GitLab ユーザー名 |
preferred_username | string | ユーザーの GitLab ユーザー名 |
email | string | ユーザーのメールアドレス ユーザーのプライマリメールアドレスです。 |
email_verified | boolean | ユーザーのメールアドレスが確認されたかどうか |
website | string | ユーザーのウェブサイトの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 | 開発者ロールを持つユーザが直接所属するグループの名前 |
sub
,sub_legacy
,groups_direct
のクレームは ID トークンに含まれます。email
とemail_verified
のクレームは、アプリケーションがemail
のクレームとユーザーの公開メールアドレスにアクセスできる場合にのみ追加されます。その他のクレームはすべて、OIDCクライアントが使用する/oauth/userinfo
エンドポイントから利用可能です。