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

このドキュメントは、GitLabをOpenID ConnectのIDプロバイダとして使い、他のサービスにサインインすることについて書かれています。

OpenID Connectの紹介

OpenID Connect (OIDC) はOAuth 2.0プロトコルの上のシンプルなIDレイヤーです。クライアントがGitLabによって実行された認証に基づいてエンドユーザーのIDを確認したり、相互運用可能でRESTライクな方法でエンドユーザーの基本的なプロファイル情報を取得したりすることができます。 OIDCはOpenID 2.0と同じタスクの多くを実行しますが、APIに親しみやすく、ネイティブアプリケーションやモバイルアプリケーションで使用可能な方法で実行します。

クライアント側では、OmniAuth::OpenIDConnectfor Rails アプリケーションや、その他の利用可能なクライアント実装を使用できます。

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

OAuthアプリケーションのOpenID Connectの有効化

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

共有情報

現在、以下のユーザー情報がクライアントと共有されています:

請求 タイプ 説明
sub string ユーザーのID
sub_legacy string ユーザーを一意に識別する不透明なトークン

非推奨のお知らせ:このトークンはRailsの秘密鍵ベースと結びついているため安定していません。GitLab 11.1から利用できる新しい安定したsub 値への移行のためだけに提供されています。
auth_time integer ユーザの最終認証のタイムスタンプ
name string ユーザーのフルネーム
nickname string GitLab でのユーザー名。
email string ユーザーの電子メールアドレス
アプリケーションがemail 請求にアクセスできる場合はユーザーのプライマリ電子メールアドレス、そうでない場合はユーザーの公開電子メールアドレスです。
email_verified boolean ユーザーのメールアドレスが認証されたかどうか
website string ユーザーのウェブサイトのURL
profile string GitLab プロファイルの URL
picture string ユーザーのGitLabアバターのURL
groups array ユーザーが所属しているグループ名

クレームsubsub_legacyemailemail_verified はIDトークンに含まれています。その他のクレームはOIDCクライアントが使用する/oauth/userinfo エンドポイントから利用できます。