OAuth2.0認証プロバイダーとしてAWS Cognitoを使用します。
Amazon Web Services(AWS) Cognitoを使用すると、GitLabインスタンスにユーザーサインアップ、サインイン、アクセス制御を追加できます。以下のドキュメントでは、OAuth 2.0 プロバイダーとして AWS Cognito を有効にしています。
AWS Cognitoの設定
AWS CognitoOAuth 2.0 OmniAuth プロバイダを有効にするには、Cognito にアプリケーションを登録します。このプロセスにより、アプリケーションのクライアント ID とクライアントシークレットが生成されます。AWS Cognito を認証プロバイダとして有効にするには、以下の手順を実行します。設定した内容は後で変更できます。
- AWS コンソールにサインインします。
- サービス]メニューから[Cognito]を選択します。
- Manage User Poolsを選択し、右上隅でCreate a user poolを選択します。
- ユーザープール名を入力し、Step through settings を選択します。
- How do you want your end users to sign in?]で、[Email address or phone number]と[Allow email addresses]を選択します。
- どの標準属性を要求しますか]で、[電子メール]を選択します。
- ニーズに合わせて残りの設定を行います。基本設定では、これらの設定はGitLabの設定に影響しません。
-
アプリクライアントの設定で
- アプリクライアントの追加]を選択します。
- アプリクライアント名を追加します。
- Enable username password based authentication]チェックボックスを選択します。
- アプリクライアントの作成」を選択します。
- メール送信用のAWS Lambda関数を設定し、ユーザープールの作成を完了します。
-
ユーザープールを作成したら、アプリクライアントの設定から必要な情報を入力します:
- 有効な ID プロバイダ- すべてを選択
-
コールバックURL
https://<your_gitlab_instance_url>/users/auth/cognito/callback
- 許可される OAuth フロー- 認証コード付与
-
許可される OAuth 2.0 スコープ-
email
,openid
, およびprofile
- アプリクライアント設定の変更を保存します。
- Domain name] に、AWS Cognito アプリケーションの AWS ドメイン名を含めます。
- App Clients] で、アプリクライアント ID を探します。Show details] を選択して、アプリクライアントシークレットを表示します。これらの値は、OAuth 2.0 クライアント ID とクライアントシークレットに対応します。これらの値を保存します。
GitLab の設定
-
共通設定を構成して、シングルサインオンプロバイダとして
cognito
。これにより、既存のGitLabアカウントを持っていないユーザーのためのJust-In-Timeアカウントプロビジョニングが可能になります。 -
GitLabサーバーで、設定ファイルを開きます。Linuxパッケージインストールの場合:
sudo editor /etc/gitlab/gitlab.rb
-
以下のコードブロックで、AWS Cognitoアプリケーションの情報を以下のパラメータに入力します:
-
app_id
:クライアント ID。 -
app_secret
:クライアントのシークレット -
site
:アマゾンのドメインとリージョン
/etc/gitlab/gitlab.rb
ファイルにコードブロックを含めます:gitlab_rails['omniauth_allow_single_sign_on'] = ['cognito'] gitlab_rails['omniauth_providers'] = [ { name: "cognito", label: "Provider name", # optional label for login button, defaults to "Cognito" icon: nil, # Optional icon URL app_id: "<client_id>", app_secret: "<client_secret>", args: { scope: "openid profile email", client_options: { site: "https://<your_domain>.auth.<your_region>.amazoncognito.com", authorize_url: "/oauth2/authorize", token_url: "/oauth2/token", user_info_url: "/oauth2/userInfo" }, user_response_structure: { root_path: [], id_path: ["sub"], attributes: { nickname: "email", name: "email", email: "email" } }, name: "cognito", strategy_class: "OmniAuth::Strategies::OAuth2Generic" } } ]
-
- 設定ファイルを保存します。
- ファイルを保存し、変更を有効にするために GitLab を再設定します。
サインインページでは、通常のサインインフォームの下にCognitoオプションが表示されるはずです。このオプションを選択して認証プロセスを開始します。AWS Cognitoは、サインインしてGitLabアプリケーションを承認するように求めます。認証に成功すると、リダイレクトされて GitLab インスタンスにサインインされます。
詳細については、共通設定の構成を参照してください。