サーバーとGitLab.comのインテグレーション

GitLab.comからプロジェクトをインポートし、GitLab.comアカウントでGitLabインスタンスにログインします。

GitLab.comのOmniAuthプロバイダを有効にするには、GitLab.comにアプリケーションを登録する必要があります。GitLab.comがアプリケーションIDとシークレットキーを生成します。

  1. GitLab.comにサインインします。
  2. 左のサイドバーで、自分のアバターを選択してください。
  3. プロフィールの編集を選択します。
  4. 左サイドバーで「アプリケーション」を選択します。
  5. 新しいアプリケーションの追加に必要な詳細を入力します。
    • 名前:これは何でもかまいません。<Organization>'s GitLab<Your Name>'s GitLab など、わかりやすい名前を考えてください。
    • リダイレクトURI:

       # You can also use a non-SSL URL, but you should use SSL URLs.
       https://your-gitlab.example.com/import/gitlab/callback
       https://your-gitlab.example.com/users/auth/gitlab/callback
      

    最初のリンクはインポートに、2番目は認証に必要です。

    もし

    • インポートを使用する予定がある場合は、スコープはそのままでかまいません。
    • このアプリケーションを認証にのみ使用したい場合は、最小限のスコープを使用することを推奨します。read_user で十分です。
  6. Save applicationを選択します。
  7. アプリケーションIDとシークレットが表示されます。このページを開いたまま設定を続けます。
  8. GitLab サーバーで設定ファイルを開きます。

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

    sudo editor /etc/gitlab/gitlab.rb
    

    セルフコンパイルによるインストールの場合:

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

    GitLab.com に対して認証を行う Linux パッケージインストールの場合:

    gitlab_rails['omniauth_providers'] = [
      {
        name: "gitlab",
        # label: "Provider name", # optional label for login button, defaults to "GitLab.com"
        app_id: "YOUR_APP_ID",
        app_secret: "YOUR_APP_SECRET",
        args: { scope: "read_user" } # optional: defaults to the scopes of the application
      }
    ]
    

    あるいは、別の GitLab インスタンスに対して認証している Linux パッケージインストールの場合:

    gitlab_rails['omniauth_providers'] = [
      {
        name: "gitlab",
        label: "Provider name", # optional label for login button, defaults to "GitLab.com"
        app_id: "YOUR_APP_ID",
        app_secret: "YOUR_APP_SECRET",
        args: { scope: "read_user", # optional: defaults to the scopes of the application
                client_options: { site: "https://gitlab.example.com" } }
      }
    ]
    

    GitLab.com に対して認証するセルフコンパイル・インストールの場合:

    - { name: 'gitlab',
        # label: 'Provider name', # optional label for login button, defaults to "GitLab.com"
        app_id: 'YOUR_APP_ID',
        app_secret: 'YOUR_APP_SECRET',
    

    あるいは、セルフコンパイルしたインストールを別の GitLab インスタンスに対して認証する場合:

    - { name: 'gitlab',
        label: 'Provider name', # optional label for login button, defaults to "GitLab.com"
        app_id: 'YOUR_APP_ID',
        app_secret: 'YOUR_APP_SECRET',
        args: { "client_options": { "site": 'https://gitlab.example.com' } }
    
    note
    GitLab 15.1以前では、site パラメータは/api/v4 サフィックスを必要とします。GitLab 15.2以降にアップグレードした後は、このサフィックスを削除することをお勧めします。
  11. 'YOUR_APP_ID' 、GitLab.comアプリケーションページのアプリケーションIDに変更してください。
  12. GitLab.comアプリケーションページの'YOUR_APP_SECRET' をシークレットに変更します。
  13. 設定ファイルを保存します。
  14. 適切な方法でこれらの変更を実行します:

サインインページで、通常のサインインフォームの後にGitLab.comのアイコンがあるはずです。アイコンを選択して認証プロセスを開始します。GitLab.comはユーザーにサインインとGitLabアプリケーションの作成を求めます。問題がなければ、ユーザーは GitLab インスタンスに戻り、サインインされます。

サインイン時のアクセス権限を減らす

認証にGitLabインスタンスを使用している場合、サインインにOAuthアプリケーションが使用されると、アクセス権を減らすことができます。

どの OAuth アプリケーションも、authorization パラメータgl_auth_type=login でアプリケーションの目的を告知することができます。アプリケーションがapi あるいはread_api で設定されている場合、より高い権限が必要ないため、ログインのためのアクセストークンはread_user でイシューされます。

GitLab OAuthクライアントはこのパラメータを渡すように設定されていますが、他のアプリケーションも渡すことができます。