サーバーと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クライアントはこのパラメータを渡すように設定されていますが、他のアプリケーションも渡すことができます。
