オムニオート

GitLabはOmniAuthを活用し、Twitter、GitHub、その他の一般的なサービスを使ってサインインできるようにしています。

OmniAuthを設定しても、標準的なGitLab認証やLDAP(設定されている場合)が機能し続けることを妨げることはありません。 ユーザーは、設定されたメカニズムのいずれかを使ってサインインすることを選択できます。

支援プロバイダー

これは現在サポートされている OmniAuth プロバイダのリストです。 各プロバイダのドキュメントを読む前に、まずこのドキュメントを読んでください。

OmniAuth の初期設定

個々の OmniAuth プロバイダを設定する前に、すべてのプロバイダに共通するいくつかのグローバルな設定を考慮する必要があります。

注意:GitLab 11.4から、OmniAuthはデフォルトで有効になっています。 それ以前のバージョンを使っている場合は、明示的に有効にする必要があります。

  • allow_single_sign_on では、自動アカウント作成を許可するプロバイダを指定することができます。 デフォルトはfalse. もし falseユーザを手動で作成しなければならない場合、OmniAuth 経由でサインインすることはできません。
  • auto_link_ldap_user は、LDAP / ActiveDirectoryインテグレーションを有効にしている場合に使用できます。デフォルトはfalseです。 有効にすると、OmniAuthプロバイダを通して自動的に作成されたユーザーのLDAP IDもGitLabに作成されます。
  • block_auto_created_users にデフォルト設定されます。 自動作成されたtrue場合 true、ユーザーはデフォルトでブロックされ、サインインする前に管理者がブロックを解除する必要があります。

注意:block_auto_created_usersfalseに設定した場合、allow_single_sign_on のプロバイダは SAML、Shibboleth、Crowd、Google など、自分が管理できるものだけを定義するようにしましょう。また、false に設定した場合は、管理者の承認者なしに、インターネット上のあらゆるユーザが GitLab にサインインできるようになります。

注意:auto_link_ldap_user では、LDAP と OmniAuth プロバイダの両方でユーザーのuid が同じである必要があります。

これらの設定を変更するには

  • オムニバス・パッケージ用

    設定ファイルを開きます:

     sudo editor /etc/gitlab/gitlab.rb
    

    そして変化:

     # CAUTION!
     # This allows users to login without having a user account first. Define the allowed providers
     # using an array, e.g. ["saml", "twitter"], or as true/false to allow all providers or none.
     # User accounts will be created automatically when authentication was successful.
     gitlab_rails['omniauth_allow_single_sign_on'] = ['saml', 'twitter']
     gitlab_rails['omniauth_auto_link_ldap_user'] = true
     gitlab_rails['omniauth_block_auto_created_users'] = true
    
  • ソースからのインストールの場合

    設定ファイルを開きます:

     cd /home/git/gitlab
    
     sudo -u git -H editor config/gitlab.yml
    

    を変更します:

     ## OmniAuth settings
      omniauth:
        # Allow login via Twitter, Google, etc. using OmniAuth providers
        # Versions prior to 11.4 require this to be set to true
        # enabled: true
    
        # CAUTION!
        # This allows users to login without having a user account first. Define the allowed providers
        # using an array, e.g. ["saml", "twitter"], or as true/false to allow all providers or none.
        # User accounts will be created automatically when authentication was successful.
        allow_single_sign_on: ["saml", "twitter"]
    
        auto_link_ldap_user: true
    
        # Locks down those users until they have been cleared by the admin (default: true).
        block_auto_created_users: true
    

ここで、上記のサポート対象プロバイダーを1つ以上選択して、設定プロセスを続行します。

既存ユーザーのOmniAuth有効化

既存のユーザーは、アカウント作成後に特定のプロバイダのOmniAuthを有効にすることができます。 たとえば、ユーザーがもともとLDAPでサインインしている場合、TwitterなどのOmniAuthプロバイダを有効にすることができます。 既存のユーザーのOmniAuthプロバイダを有効にするには、以下の手順に従ってください。

  1. 通常のサインイン - 標準サインイン、LDAP、または他の OmniAuth プロバイダー。
  2. プロフィール設定(右上のシルエットアイコン)を開きます。
  3. アカウント」タブを選択します。
  4. Connected Accounts “で、TwitterなどのOmniAuthプロバイダを選択します。
  5. 作成者がGitLabを承認すると、GitLabにリダイレクトされます。

選択した OmniAuth プロバイダーがアクティビティになり、以降 GitLab にサインインできるようになります。

OmniAuth プロバイダを外部として設定します。

注意: この設定は GitLab のバージョン 8.7 で導入されました。

external にしたい OmniAuth プロバイダを定義することで、これらのプロバイダ経由でアカウントを作成したりログインしたりするすべてのユーザが、内部プロジェクトにアクセスできないようにすることができます。 Google の場合はgoogle_oauth2 のように、プロバイダのフルネームを使用する必要があります。サポートされているプロバイダのフルネームについては、例を参照してください。

注意: OmniAuth プロバイダを外部プロバイダリストから削除する場合、この方法でログインしているユーザのアカウントを完全な内部アカウントにアップグレードしたい場合は、手動で更新する必要があります。

オムニバス・インストール用

gitlab_rails['omniauth_external_providers'] = ['twitter', 'google_oauth2']

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

omniauth:
  external_providers: ['twitter', 'google_oauth2']

カスタム OmniAuth プロバイダの使用

注:以下の情報は、ソースからのインストールにのみ適用されます。

GitLabは認証にOmniAuthを使用しており、すでにいくつかのプロバイダがプリインストールされています(LDAP、GitHub、Twitterなど)。 しかし、それだけでは不十分で、他の認証ソリューションとインテグレーションする必要がある場合もあります。 このような場合は、OmniAuthプロバイダを使用することができます。

ステップ

これらの手順はかなり一般的なもので、正確な詳細は OmniAuth プロバイダのドキュメントを参照する必要があります。

  • GitLabを停止します:

     sudo service gitlab stop
    
  • Gemfileにgemを追加します:

     gem "omniauth-your-auth-provider"
    
  • 以下のコマンドを実行して、新しいOmniAuthプロバイダgemをインストールします:

     sudo -u git -H bundle install --without development test mysql --path vendor/bundle --no-deployment
    

    これらは、Install Gems セクションで --deploymentの代わりに--path vendor/bundle --no-deployment を使用した、初期インストール時に使用したコマンドと同じです。

  • GitLabを起動します:

     sudo service gitlab start
    

使用例

GitLab自体に同梱されていないプロバイダのセットアップに成功した場合は、ぜひお知らせください。

公開Wikiで経験を共有することで、成功したコンフィギュレーションをレポーターとして報告したり、いくつかのインサイトを共有したり、よくあるエラーや落とし穴に対する警告を提供したりすることで、他のユーザーを助けることができます。

世の中に存在するありとあらゆる認証メカニズムを公式にサポートすることはできませんが、少なくとも特定のニーズを持つ方々をサポートしたいと考えています。

インポートソースを無効にすることなく、OmniAuthプロバイダによるサインインを有効または無効にします。

Note:この設定はGitLabのバージョン8.8で導入されました。

管理者は、いくつかの OmniAuth プロバイダを介してサインインを有効または無効にすることができます。

注:デフォルトでは、サインインはconfig/gitlab.ymlで設定されたすべての OAuth プロバイダを経由して有効になります。

OmniAuthプロバイダを有効/無効にするには、管理エリア -> 設定 -> サインイン制限セクション -> 有効なOAuthサインインソースに移動し、有効または無効にしたいプロバイダを選択します。

Enabled OAuth Sign-In sources

OmniAuth の無効化

GitLabのバージョン11.4から、OmniAuthがデフォルトで有効になりました。 これは、プロバイダが設定され、有効になっている場合にのみ効果があります。

OmniAuth プロバイダを個別に無効にしても問題が発生する場合は、設定ファイルを変更することで OmniAuth サブシステム全体を無効にすることができます:

オムニバス・インストール用

gitlab_rails['omniauth_enabled'] = false

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

omniauth:
  enabled: false

OmniAuthのユーザープロファイルを最新の状態に保ちます。

選択したOmniAuthプロバイダからのプロファイル同期を、すべてまたは特定のユーザー情報に対して有効にすることができます。

LDAPを使用して認証する場合、ユーザー名と電子メールは常に同期されます。

gitlab_rails['omniauth_sync_profile_from_provider'] = ['twitter', 'google_oauth2']
gitlab_rails['omniauth_sync_profile_attributes'] = ['name', 'email', 'location']

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

omniauth:
  sync_profile_from_provider: ['twitter', 'google_oauth2']
  sync_profile_attributes: ['email', 'location']

二要素認証のバイパス

GitLab 12.3から、二要素認証なしで指定したプロバイダでログインできるようになりました。

許可するプロバイダを、["twitter", 'google_oauth2']などの配列を使用して定義するか、true/false のように定義して、すべてのプロバイダを許可するか、まったく許可しないかを指定します。 このオプションは、すでに二要素認証 (デフォルト: false) を実装しているプロバイダに対してのみ設定します。 この設定は、SAML には適用されません。

gitlab_rails['omniauth_allow_bypass_two_factor'] = ['twitter', 'google_oauth2']

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

omniauth:
  allow_bypass_two_factor: ['twitter', 'google_oauth2']

プロバイダーからの自動サインイン

GitLabの設定にauto_sign_in_with_provider の設定を追加することで、ログインリクエストを自動的にOmniAuthプロバイダーにリダイレクトして認証を行うことができます。これにより、実際にサインインする前にボタンをクリックする必要がなくなります。

たとえば、Azureインテグレーションを使用する場合、自動サインインを有効にするには、次のように設定します。

オムニバス・パッケージ用:

gitlab_rails['omniauth_auto_sign_in_with_provider'] = 'azure_oauth2'

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

omniauth:
  auto_sign_in_with_provider: azure_oauth2

サインインを試みるたびに OmniAuth プロバイダにリダイレクトされるため、ローカルの認証情報を使ってサインインすることができないことに注意してください。 OmniAuth ユーザの少なくとも一人が管理者権限を持っていることを確認してください。

https://gitlab.example.com/users/sign_in?auto_sign_in=falseにアクセスして、自動サインイン機能を回避することもできます。