Okta SSOプロバイダ

OktaはGitLabの認証に使用できるシングルサインオンプロバイダーです。

以下のドキュメントでは、Okta を SAML プロバイダとして有効にしています。

Oktaアプリケーションの設定

  1. Oktaの管理セクションに移動し、アプリの追加を選択します。
  2. アプリの画面が表示されると、「アプリを作成」ボタンがもう 1 つ表示され、次の画面で SAML 2.0 を選択します。
  3. さて、とても重要なことですが、ロゴを追加してください(https://about.gitlab.com/press/から選択できます)。トリミングとリサイズが必要です。
  4. 次に、SAML 一般構成を入力する必要があります。 以下はその例です。

    Okta admin panel view

  5. 設定の最後の部分はフィードバックのセクションで、あなたが顧客であり、内部使用のためのアプリを作成していると言うことができます。
  6. アプリを作成すると、アプリのプロファイルの上部にいくつかのタブが表示されます。 以下のように表示される SAML 2.0 構成の指示ボタンをクリックします:

    Okta SAML settings

  7. 表示された画面で、GitLab 設定ファイルのidp_sso_target_url に使うIdentity Provider Single Sign-On URLを控えておきましょう。

  8. Oktaを離れる前に、ユーザーとグループがあれば追加してください。

Okta アプリの設定が終わったので、次は GitLab で Okta アプリを使えるようにします。

GitLab の設定

  1. 初期設定についてはOmniAuth の初期設定を参照してください。

  2. ユーザーが最初に手動でアカウントを作成することなく、Oktaを使用してサインアップできるようにするには、設定に次の値を追加することを忘れないでください:

    Omnibus GitLab インストールの場合

    /etc/gitlab/gitlab.rbを編集します:

    gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
    gitlab_rails['omniauth_block_auto_created_users'] = false
    

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

config/gitlab.ymlを編集します:

   allow_single_sign_on: ["saml"]
   block_auto_created_users: false
  1. また、以下の設定を追加することで、メールアドレスが一致する場合、Oktaユーザーと既存のGitLabユーザーを自動的にリンクさせることができます:

    Omnibus GitLab インストールの場合

    /etc/gitlab/gitlab.rbを編集します:

    gitlab_rails['omniauth_auto_link_saml_user'] = true
    

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

config/gitlab.ymlを編集します:

   auto_link_saml_user: true
  1. プロバイダの設定を追加します。

    注:

    • assertion_consumer_service_url の値を GitLab の HTTPS エンドポイントに合わせて変更してください(正しい値を生成するために、GitLab インストールの HTTPS URL にusers/auth/saml/callback を追加してください)。

    • idp_cert_fingerprint フィンガープリントを取得するには、まず登録した Okta アプリから証明書をダウンロードし、openssl x509 -in okta.cert -noout -fingerprintを実行します。okta.certを証明書の場所に置き換えてください。

    • idp_sso_target_urlの値を、Okta アプリを構成したステップで使用したIdentity Provider Single Sign-On URLの値に変更します。

    • issuer 」の値を、Oktaアプリの設定にある「Audience Restriction」の値に変更します。 これにより、GitLabがIdPに識別されます。

    • name_identifier_format そのままにしておいてください。

    Omnibus GitLab インストールの場合

    gitlab_rails['omniauth_providers'] = [
      {
        name: 'saml',
        args: {
                 assertion_consumer_service_url: 'https://gitlab.example.com/users/auth/saml/callback',
                 idp_cert_fingerprint: '43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8',
                 idp_sso_target_url: 'https://gitlab.oktapreview.com/app/gitlabdev773716_gitlabsaml_1/exk8odl81tBrjpD4B0h7/sso/saml',
                 issuer: 'https://gitlab.example.com',
                 name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient'
               },
        label: 'Okta' # optional label for SAML login button, defaults to "Saml"
      }
    ]
    

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

    - {
        name: 'saml',
        args: {
               assertion_consumer_service_url: 'https://gitlab.example.com/users/auth/saml/callback',
               idp_cert_fingerprint: '43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8',
               idp_sso_target_url: 'https://gitlab.oktapreview.com/app/gitlabdev773716_gitlabsaml_1/exk8odl81tBrjpD4B0h7/sso/saml',
               issuer: 'https://gitlab.example.com',
               name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient'
             },
        label: 'Okta' # optional label for SAML login button, defaults to "Saml"
      }
    
  2. 変更を有効にするために、GitLab for Omnibusとソースからのインストールをそれぞれ再設定または再起動します。

シークレットブラウザでお試しください。

グループの設定

注:グループが存在し、Oktaアプリに割り当てられていることを確認してください。

グループの構成については、SAML のドキュメントを参照してください。