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

GitLab DedicatedのOpenID Connectシングルサインオン

  • プラン: Ultimate
  • 提供形態: GitLab Dedicated

Identity Providerでユーザーを認証するために、GitLab DedicatedインスタンスのOpenID Connect(OIDC)シングルサインオンを設定します。

OIDC SSOは、次のような場合に使用します:

  • 既存のIdentity Providerを介してユーザー認証を一元化します。
  • ユーザーのパスワード管理のオーバーヘッドを削減します。
  • 組織のアプリケーション全体で一貫したアクセス制御を実装します。
  • 業界で幅広くサポートされている最新の認証プロトコルを使用します。

これは、GitLab Dedicatedインスタンスのエンドユーザー向けにOIDCを設定します。スイッチボードの管理者向けにSSOを設定するには、スイッチボードのSSOを設定するを参照してください。

OpenID Connectを設定する

前提要件:

  • あなたのIdentity Providerを設定します。GitLabが設定後にコールバックURLを提供するため、一時的なコールバックURLを使用できます。
  • Identity ProviderがOpenID Connectの仕様をサポートしていることを確認してください。

GitLab DedicatedインスタンスのOIDCを設定するには、次の手順に従います:

  1. サポートチケットを作成します。

  2. サポートチケットで、次の設定を指定します:

    {
      "label": "Login with OIDC",
      "issuer": "https://accounts.example.com",
      "discovery": true
    }
  3. サポートチームがアクセスできるシークレットマネージャーへの一時的なリンクを使用して、クライアントシークレットとクライアントIDを安全に提供します。

  4. Identity Providerが自動検出をサポートしていない場合は、クライアントエンドポイントオプションを含めます。例:

    {
      "label": "Login with OIDC",
      "issuer": "https://example.com/accounts",
      "discovery": false,
      "client_options": {
        "end_session_endpoint": "https://example.com/logout",
        "authorization_endpoint": "https://example.com/authorize",
        "token_endpoint": "https://example.com/token",
        "userinfo_endpoint": "https://example.com/userinfo",
        "jwks_uri": "https://example.com/jwks"
      }
    }

GitLabがインスタンスのOIDCを設定した後:

  1. サポートチケットでコールバックURLを受信します。
  2. このコールバックURLでIdentity Providerを更新します。
  3. インスタンスのサインインページでSSOログインボタンを確認して、設定を確認します。

OIDCグループメンバーシップに基づいてユーザーを設定する

OIDCグループメンバーシップに基づいてユーザーのロールとアクセス権を割り当てるようにGitLabを設定できます。

前提要件:

  • Identity Providerは、ID tokenまたはuserinfoエンドポイントにグループ情報を含める必要があります。
  • 基本的なOIDC認証をすでに設定している必要があります。

OIDCのグループメンバーシップに基づいてユーザーを設定するには、次のようにします:

  1. GitLabがグループ情報を検索する場所を指定するには、groups_attributeパラメータを追加します。

  2. 必要に応じて、適切なグループ配列を設定します。

  3. サポートチケットで、OIDCブロックにグループの設定を含めます。例:

    {
      "label": "Login with OIDC",
      "issuer": "https://accounts.example.com",
      "discovery": true,
      "groups_attribute": "groups",
      "required_groups": [
        "gitlab-users"
      ],
      "external_groups": [
        "external-contractors"
      ],
      "auditor_groups": [
        "auditors"
      ],
      "admin_groups": [
        "gitlab-admins"
      ]
    }

設定パラメータ

次のパラメータを使用して、GitLab DedicatedインスタンスのOIDCを設定できます。詳細については、OpenID Connectを認証プロバイダーとして使用を参照してください。

必須パラメータ

パラメータ説明
issuerIdentity ProviderのOpenID Connect発行者URL。
labelログインボタンの表示名。
discoveryOpenID Connectディスカバリーを使用するかどうか(推奨: true)。

オプションのパラメータ

パラメータ説明デフォルト
admin_groups管理者アクセス権を持つグループ。[]
auditor_groups監査担当者アクセス権を持つグループ。[]
client_auth_methodクライアント認証方法:"basic"
external_groups外部ユーザーとしてマークされたグループ。[]
groups_attributeOIDCレスポンスでグループを検索する場所。なし
pkceProof Key for Code Exchangeを有効にします。false
required_groupsアクセスに必要なグループ。[]
response_mode認可レスポンスの配信方法。なし
response_typeOAuth 2.0レスポンスの種類。"code"
scopeリクエストするOpenID Connectのスコープ。["openid"]
send_scope_to_token_endpointトークンエンドポイントリクエストにスコープパラメータを含めます。true
uid_field固有識別子として使用するフィールド。"sub"

プロバイダー固有の例

Google

{
  "label": "Google",
  "scope": ["openid", "profile", "email"],
  "response_type": "code",
  "issuer": "https://accounts.google.com",
  "client_auth_method": "query",
  "discovery": true,
  "uid_field": "preferred_username",
  "pkce": true
}

Microsoft Azure AD

{
  "label": "Azure AD",
  "scope": ["openid", "profile", "email"],
  "response_type": "code",
  "issuer": "https://login.microsoftonline.com/your-tenant-id/v2.0",
  "client_auth_method": "query",
  "discovery": true,
  "uid_field": "preferred_username",
  "pkce": true
}

Okta

{
  "label": "Okta",
  "scope": ["openid", "profile", "email", "groups"],
  "response_type": "code",
  "issuer": "https://your-domain.okta.com/oauth2/default",
  "client_auth_method": "query",
  "discovery": true,
  "uid_field": "preferred_username",
  "pkce": true
}

トラブルシューティング

OpenID Connectの設定で問題が発生した場合:

  • Identity Providerが正しく設定され、アクセス可能であることを確認します。
  • サポートに提供されたクライアントIDとシークレットが正しいことを確認します。
  • Identity ProviderのリダイレクトURIが、サポートチケットで提供されているものと一致していることを確認します。
  • 発行者URLが正しく、アクセス可能であることを確認します。