サーバーとGitLab.comのインテグレーション
GitLab.comからプロジェクトをインポートし、GitLab.comアカウントでGitLabインスタンスにログインします。
GitLab.comのOmniAuthプロバイダを有効にするには、GitLab.comにアプリケーションを登録する必要があります。GitLab.comがアプリケーションIDとシークレットキーを生成します。
- GitLab.comにサインインします。
- 左のサイドバーで、自分のアバターを選択してください。
- プロフィールの編集を選択します。
- 左サイドバーで「アプリケーション」を選択します。
-
新しいアプリケーションの追加に必要な詳細を入力します。
- 名前:これは何でもかまいません。
<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
で十分です。
- 名前:これは何でもかまいません。
- Save applicationを選択します。
- アプリケーションIDとシークレットが表示されます。このページを開いたまま設定を続けます。
-
GitLab サーバーで設定ファイルを開きます。
Linuxパッケージ・インストールの場合:
sudo editor /etc/gitlab/gitlab.rb
セルフコンパイルによるインストールの場合:
cd /home/git/gitlab sudo -u git -H editor config/gitlab.yml
-
共通設定を構成して、シングルサインオンプロバイダとして
gitlab
。これにより、既存のGitLabアカウントを持っていないユーザーのためのJust-In-Timeアカウントプロビジョニングが可能になります。 -
プロバイダ設定を追加します:
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' } }
GitLab 15.1以前では、site
パラメータは/api/v4
サフィックスを必要とします。GitLab 15.2以降にアップグレードした後は、このサフィックスを削除することをお勧めします。 -
'YOUR_APP_ID'
、GitLab.comアプリケーションページのアプリケーションIDに変更してください。 - GitLab.comアプリケーションページの
'YOUR_APP_SECRET'
をシークレットに変更します。 - 設定ファイルを保存します。
- 適切な方法でこれらの変更を実行します:
- Linux パッケージのインストールの場合は、GitLab を再設定してください。
- セルフコンパイルインストールの場合は、GitLabを再起動してください。
サインインページで、通常のサインインフォームの後にGitLab.comのアイコンがあるはずです。アイコンを選択して認証プロセスを開始します。GitLab.comはユーザーにサインインとGitLabアプリケーションの作成を求めます。問題がなければ、ユーザーは GitLab インスタンスに戻り、サインインされます。
サインイン時のアクセス権限を減らす
- GitLab 14.8 で
omniauth_login_minimal_scopes
というフラグで導入されました。デフォルトでは無効になっています。- GitLab14.9でGitLab.comで有効に。
- GitLab 15.2 で機能フラグ
omniauth_login_minimal_scopes
が削除されました。
認証にGitLabインスタンスを使用している場合、サインインにOAuthアプリケーションが使用されると、アクセス権を減らすことができます。
どの OAuth アプリケーションも、authorization パラメータgl_auth_type=login
でアプリケーションの目的を告知することができます。アプリケーションがapi
あるいはread_api
で設定されている場合、より高い権限が必要ないため、ログインのためのアクセストークンはread_user
でイシューされます。
GitLab OAuthクライアントはこのパラメータを渡すように設定されていますが、他のアプリケーションも渡すことができます。