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

サーバーをGitLab.comと統合する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

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. アプリケーションを保存を選択します。

  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. プロバイダーの設定を追加します:

    LinuxパッケージインストールでGitLab.comに対して認証する場合:

    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' } }

    GitLab 15.1以前は、siteパラメータに/api/v4サフィックスが必要です。GitLab 15.2以降にアップグレードした後は、このサフィックスを削除することをお勧めします。

  11. 'YOUR_APP_ID'をGitLab.comアプリケーションページのアプリケーションIDに変更します。

  12. 'YOUR_APP_SECRET'をGitLab.comアプリケーションページのシークレットに変更します。

  13. 設定ファイルを保存します。

  14. 適切な方法を使用して、これらの変更を実装します:

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

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

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

任意のOAuthアプリケーションは、認可パラメータgl_auth_type=loginを使用してアプリケーションの目的をアドバタイズできます。アプリケーションがapiまたはread_apiで設定されている場合、より高い権限は必要ないため、アクセストークンはサインインのためにread_userで発行されます。

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