Google OAuth2 OmniAuth プロバイダ

Google OAuth2 OmniAuth プロバイダを有効にするには、Google にアプリケーションを登録する必要があります。 Google がクライアント ID と秘密鍵を生成します。

Google OAuth の有効化

Google側では:

  1. クラウドリソースマネージャーのページに移動します。
  2. プロジェクトの作成
  3. プロジェクト情報を提供してください:
    • プロジェクト- “GitLab” で問題ありません。
    • プロジェクトID- Google Developer に登録されているすべてのアプリケーションで一意である必要があります。 Google はデフォルトでランダムにプロジェクト ID を生成します。 ランダムに生成された ID を使用するか、新しい ID を選択することができます。
  4. ページを更新すると、リストに新しいプロジェクトが表示されます。
  5. GoogleAPI Consoleにアクセスします。
  6. 左上にある、以前に作成したプロジェクトを選択します。
  7. サイドバーから資格情報を選択
  8. OAuth同意画面を選択し、フォームに必要な情報を入力してください。
  9. 認証情報]タブで、[認証情報の作成] > [OAuthクライアントID]を選択します。
  10. 必要事項をご記入ください。
    • アプリケーションの種類- “ウェブアプリケーション “を選択してください。
    • 名前- デフォルトのものを使用するか、独自のものを指定します。
    • Authorized JavaScript origins-これはGitLabではあまり使われません。https://gitlab.example.com
    • 作成者リダイレクトURI- ドメイン名の後にコールバックURIを1つずつ入力します:

       https://gitlab.example.com/users/auth/google_oauth2/callback
       https://gitlab.example.com/-/google_api/auth/callback
      
  11. クライアントIDとクライアントシークレットが表示されるはずです。 後で必要になるので、メモしておくか、このページを開いておいてください。
  12. プロジェクトがGoogle KubernetesEngineにアクセスできるようにするには、これらのAPIも有効にする必要があります:
    • Google Kubernetes Engine API
    • クラウドリソースマネージャAPI
    • クラウド請求書API

    そのためには、以下のことが必要です:

    1. GoogleAPI Consoleにアクセスします。
    2. ページ上部の「ENABLE APIS AND SERVICES」ボタンをクリックします。
    3. 上記の各APIを検索し、APIのページで「ENABLE」ボタンを押してください。 APIが完全に機能するまで数分かかる場合があります。

GitLab サーバーで:

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

    Omnibus GitLabの場合:

    sudo editor /etc/gitlab/gitlab.rb
    

    ソースからのインストールの場合:

    cd /home/git/gitlab
    sudo -u git -H editor config/gitlab.yml
    
  2. 初期設定についてはOmniAuth の初期設定を参照してください。
  3. プロバイダの設定を追加します:

    Omnibus GitLabの場合:

    gitlab_rails['omniauth_providers'] = [
      {
        "name" => "google_oauth2",
        "app_id" => "YOUR_APP_ID",
        "app_secret" => "YOUR_APP_SECRET",
        "args" => { "access_type" => "offline", "approval_prompt" => '' }
      }
    ]
    

    ソースからのインストールの場合:

    - { name: 'google_oauth2', app_id: 'YOUR_APP_ID',
      app_secret: 'YOUR_APP_SECRET',
      args: { access_type: 'offline', approval_prompt: '' } }
    
  4. Google Developer ページからYOUR_APP_ID をクライアント ID に変更します。
  5. 同様に、YOUR_APP_SECRET をクライアント・シークレットに変更します。
  6. Googleは生のIPアドレスを受け付けないので、FQDNを使うようにGitLabを設定してください。

    オムニバス・パッケージ

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

    ソースからのインストールの場合:

    gitlab:
      host: https://gitlab.example.com
    
  7. 設定ファイルを保存します。
  8. Omnibus経由またはソースからそれぞれGitLabをインストールした場合は、変更を有効にするためにGitLabを再設定または再起動します。

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