正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

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を設定する

  1. Google Cloud Resource Managerに移動します。
  2. CREATE PROJECT(プロジェクトを作成)を選択します。
  3. Project name(プロジェクト名)に、GitLabと入力します。
  4. Project ID(プロジェクトID)に、Googleがランダムに生成したプロジェクトIDがデフォルトで表示されます。このランダムに生成されたIDを使用するか、新しいIDを作成できます。新しいIDを作成する場合、すべてのGoogleデベロッパー登録済みアプリケーションに対して一意である必要があります。

リストに新しいプロジェクトを表示するには、ページを更新してください。

Google API Consoleを設定する

  1. Google API Consoleに移動します。

  2. 左上隅で、以前に作成したプロジェクトを選択します。

  3. OAuth consent screen(OAuth同意画面)を選択し、フィールドに入力します。

  4. Credentials(認証情報) > Create credentials(認証情報を作成) > OAuth client ID(OAuthクライアントID)を選択します。

  5. フィールドに入力します:

    • 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
  6. クライアントIDとクライアントシークレットが表示されます。それらを書き留めるか、後で必要になるため、このページを開いたままにしてください。

  7. プロジェクトがGoogle Kubernetes Engineにアクセスできるようにするには、以下も有効にする必要があります:

    • Google Kubernetes Engine
    • Cloud Resource Manager API
    • Cloud Billing API

    これを行うには、次の手順に従います:

    1. Google API Consoleに移動します。
    2. ページの上部にあるENABLE APIS AND SERVICES(APISとサービスを有効にする)を選択します。
    3. 前に述べた各APIを見つけます。APIのページで、ENABLE(有効にする)を選択します。APIが完全に機能するまでに数分かかる場合があります。

GitLabサーバーを設定する

  1. 設定ファイルを開きます。

    Linuxパッケージインストールの場合:

    sudo editor /etc/gitlab/gitlab.rb

    自己コンパイルによるインストールの場合:

    cd /home/git/gitlab
    sudo -u git -H editor config/gitlab.yml
  2. 共通設定で、google_oauth2をシングルサインオンプロバイダーとして追加します。これにより、既存のGitLabアカウントを持たないユーザーに対して、Just-In-Timeアカウントプロビジョニングが有効になります。

  3. プロバイダー設定を追加します。

    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: '' } }
  4. <YOUR_APP_ID>をGoogleデベロッパーページのクライアントIDに置き換えます。

  5. <YOUR_APP_SECRET>をGoogleデベロッパーページのクライアントシークレットに置き換えます。

  6. Googleはraw IPアドレスを受け入れないため、完全修飾ドメイン名を使用するようにGitLabを設定してください。

    Linuxパッケージインストールの場合:

    external_url 'https://gitlab.example.com'

    自己コンパイルによるインストールの場合:

    gitlab:
      host: https://gitlab.example.com
  7. 設定ファイルを保存します。

  8. 変更を有効にするには:

    • Linuxパッケージを使用してインストールした場合は、GitLabを再構成します。
    • GitLabインストールを自分でコンパイルした場合は、GitLabを再起動してください。

サインインページに、通常のサインインフォームの下にGoogleアイコンが表示されるはずです。そのアイコンを選択すると、認証プロセスが開始されます。Googleは、ユーザーにサインインを求め、GitLabアプリケーションを承認するように求めます。すべてがうまくいけば、ユーザーはGitLabに戻り、サインインします。