Google OAuth 2.0をOAuth 2.0認証プロバイダーとして使用する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
Google OAuth 2.0 OmniAuthプロバイダーを有効にするには、アプリケーションをGoogleに登録する必要があります。Googleは、使用するクライアントIDとシークレットキーを生成します。
Google OAuthを有効にするには、以下を構成する必要があります:
- Google Cloud Resource Manager
- Google API Console
- GitLabサーバー
Google Cloud Resource Managerを設定する
- Google Cloud Resource Managerに移動します。
- CREATE PROJECT(プロジェクトを作成)を選択します。
- Project name(プロジェクト名)に、
GitLabと入力します。 - Project ID(プロジェクトID)に、Googleがランダムに生成したプロジェクトIDがデフォルトで表示されます。このランダムに生成されたIDを使用するか、新しいIDを作成できます。新しいIDを作成する場合、すべてのGoogleデベロッパー登録済みアプリケーションに対して一意である必要があります。
リストに新しいプロジェクトを表示するには、ページを更新してください。
Google API Consoleを設定する
Google API Consoleに移動します。
左上隅で、以前に作成したプロジェクトを選択します。
OAuth consent screen(OAuth同意画面)を選択し、フィールドに入力します。
Credentials(認証情報) > Create credentials(認証情報を作成) > OAuth client ID(OAuthクライアントID)を選択します。
フィールドに入力します:
Application type(アプリケーションの種類): Web application(ウェブアプリケーション)を選択します。
名前: デフォルト名を使用するか、独自の名前を入力します。
Authorized JavaScript origins(許可されたJavaScriptオリジン):
https://gitlab.example.comを入力します。Authorized redirect URIs(許可されたリダイレクトURI): ドメイン名の後に、コールバックURIを1つずつ入力します:
https://gitlab.example.com/users/auth/google_oauth2/callback https://gitlab.example.com/-/google_api/auth/callback
クライアントIDとクライアントシークレットが表示されます。それらを書き留めるか、後で必要になるため、このページを開いたままにしてください。
プロジェクトがGoogle Kubernetes Engineにアクセスできるようにするには、以下も有効にする必要があります:
- Google Kubernetes Engine
- Cloud Resource Manager API
- Cloud Billing API
これを行うには、次の手順に従います:
- Google API Consoleに移動します。
- ページの上部にあるENABLE APIS AND SERVICES(APISとサービスを有効にする)を選択します。
- 前に述べた各APIを見つけます。APIのページで、ENABLE(有効にする)を選択します。APIが完全に機能するまでに数分かかる場合があります。
GitLabサーバーを設定する
設定ファイルを開きます。
Linuxパッケージインストールの場合:
sudo editor /etc/gitlab/gitlab.rb自己コンパイルによるインストールの場合:
cd /home/git/gitlab sudo -u git -H editor config/gitlab.yml共通設定で、
google_oauth2をシングルサインオンプロバイダーとして追加します。これにより、既存のGitLabアカウントを持たないユーザーに対して、Just-In-Timeアカウントプロビジョニングが有効になります。プロバイダー設定を追加します。
Linuxパッケージインストールの場合:
gitlab_rails['omniauth_providers'] = [ { name: "google_oauth2", # label: "Provider name", # optional label for login button, defaults to "Google" app_id: "<YOUR_APP_ID>", app_secret: "<YOUR_APP_SECRET>", args: { access_type: "offline", approval_prompt: "" } } ]自己コンパイルによるインストールの場合:
- { name: 'google_oauth2', # label: 'Provider name', # optional label for login button, defaults to "Google" app_id: 'YOUR_APP_ID', app_secret: 'YOUR_APP_SECRET', args: { access_type: 'offline', approval_prompt: '' } }<YOUR_APP_ID>をGoogleデベロッパーページのクライアントIDに置き換えます。<YOUR_APP_SECRET>をGoogleデベロッパーページのクライアントシークレットに置き換えます。Googleはraw IPアドレスを受け入れないため、完全修飾ドメイン名を使用するようにGitLabを設定してください。
Linuxパッケージインストールの場合:
external_url 'https://gitlab.example.com'自己コンパイルによるインストールの場合:
gitlab: host: https://gitlab.example.com設定ファイルを保存します。
変更を有効にするには:
- Linuxパッケージを使用してインストールした場合は、GitLabを再構成します。
- GitLabインストールを自分でコンパイルした場合は、GitLabを再起動してください。
サインインページに、通常のサインインフォームの下にGoogleアイコンが表示されるはずです。そのアイコンを選択すると、認証プロセスが開始されます。Googleは、ユーザーにサインインを求め、GitLabアプリケーションを承認するように求めます。すべてがうまくいけば、ユーザーはGitLabに戻り、サインインします。