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

SAMLのトラブルシューティング

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

このページでは、以下を使用する際に発生する可能性のある問題の解決策を紹介します:

SAMLデバッグツール

SAMLレスポンスはbase64でエンコードされています。それらをその場でエンコード解除するには、SAML-tracerブラウザー拡張機能(FirefoxChrome)を使用できます。

ブラウザプラグインをインストールできない場合は、代わりにSAMLレスポンスを手動で生成してキャプチャすることができます。

以下に特に注意してください:

  • サインインしているユーザーを識別するために使用するNameIDID。ユーザーが以前にサインインしている場合、これは保存されている値と一致する必要があります。
  • 応答署名を検証するために必要なX509Certificateの存在。
  • 設定を誤るとエラーが発生する可能性があるSubjectConfirmationConditions

SAMLレスポンスを生成

IDプロバイダーを使用してサインインを試みる際に、アサーションリストで送信される属性名と値をプレビューするには、SAMLレスポンスを使用します。

SAMLレスポンスを生成するには、次の手順を実行します:

  1. ブラウザデバッグツールのいずれかをインストールします。
  2. 新しいブラウザータブを開きます。
  3. SAMLトレーサーコンソールを開きます:
    • Chrome: ページのコンテキストメニューで、Inspectを選択し、開発者コンソールでSAMLタブを選択します。
    • Firefox: ブラウザーツールバーにあるSAMLトレーサーアイコンを選択します。
  4. GitLab.comグループの場合:
    • グループのGitLabシングルサインオンのURLに移動します。
    • 許可するを選択するか、サインインを試みます
  5. GitLab Self-Managedインスタンスの場合:
    • インスタンスのホームページに移動します
    • SAML Loginボタンを選択してサインインします
  6. SAMLレスポンスがトレーサーコンソールに表示されます。これは、このSAMLレスポンスの例に似ています。
  7. SAMLトレーサー内で、エクスポートアイコンを選択して、レスポンスをJSON形式で保存します。

SAMLレスポンスを手動で生成

概要については、GitLabサポートがアップロードしたブラウザプラグインを使用せずにSAMLレスポンスを手動で生成する(Google Chromeを使用)ビデオをご覧ください。

使用するブラウザーに関係なく、プロセスは次のようになります:

  1. 新しいブラウザーを右クリックし、Inspectを選択して、DevToolsウィンドウを開きます。

  2. ネットワークタブを選択します。Preserve logが選択されていることを確認します。

  3. ブラウザーページに切り替えて、SAMLシングルサインオンを使用してGitLabにサインインします。

  4. DevToolsウィンドウに戻り、callbackイベントをフィルターします。

  5. コールバックイベントのPayload(ペイロード)タブを選択し、右クリックして値をコピーします。

  6. この値を次のコマンドに貼り付けます: echo "<value>" | base64 --decode > saml_response.xml

  7. saml_response.xmlをコードエディタで開きます。

    XMLの「プリティファイア」がコードエディタにインストールされている場合は、応答を自動的にフォーマットして読みやすくすることができます。

SAMLサインインのRailsログを検索

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

SAMLサインインに関する詳細情報は、audit_json.logファイルにあります。

たとえば、system_accessを検索すると、ユーザーがSAMLを使用してGitLabにサインインしたときに表示されるエントリが見つかります:

{
  "severity": "INFO",
  "time": "2024-08-13T06:05:35.721Z",
  "correlation_id": "01J555EZK136DQ8S7P32G9GEND",
  "meta.caller_id": "OmniauthCallbacksController#saml",
  "meta.remote_ip": "45.87.213.198",
  "meta.feature_category": "system_access",
  "meta.user": "bbtest",
  "meta.user_id": 16,
  "meta.client_id": "user/16",
  "author_id": 16,
  "author_name": "bbtest@agounder.onmicrosoft.com",
  "entity_id": 16,
  "entity_type": "User",
  "created_at": "2024-08-13T06:05:35.708+00:00",
  "ip_address": "45.87.213.198",
  "with": "saml",
  "target_id": 16,
  "target_type": "User",
  "target_details": "bbtest@agounder.onmicrosoft.com",
  "entity_path": "bbtest"
}

SAMLグループリンクを設定している場合、ログには、削除されるグループメンバーシップの詳細も表示されます:

{
  "severity": "INFO",
  "time": "2024-08-13T05:24:07.769Z",
  "correlation_id": "01J55330SRTKTD5CHMS96DNZEN",
  "meta.caller_id": "Auth::SamlGroupSyncWorker",
  "meta.remote_ip": "45.87.213.206",
  "meta.feature_category": "system_access",
  "meta.client_id": "ip/45.87.213.206",
  "meta.root_caller_id": "OmniauthCallbacksController#saml",
  "id": 179,
  "author_id": 6,
  "entity_id": 2,
  "entity_type": "Group",
  "details": {
    "remove": "user_access",
    "member_id": 7,
    "author_name": "BB Test",
    "author_class": "User",
    "target_id": 6,
    "target_type": "User",
    "target_details": "BB Test",
    "custom_message": "Membership destroyed",
    "ip_address": "45.87.213.198",
    "entity_path": "group1"
  }
}

GitLabがSAMLプロバイダーから受信したユーザーの詳細も、auth_json.logで確認できます。次に例を示します:

{
  "severity": "INFO",
  "time": "2024-08-20T07:01:20.979Z",
  "correlation_id": "01J5Q9E59X4P40ZT3MCE35C2A9",
  "meta.caller_id": "OmniauthCallbacksController#saml",
  "meta.remote_ip": "xxx.xxx.xxx.xxx",
  "meta.feature_category": "system_access",
  "meta.client_id": "ip/xxx.xxx.xxx.xxx",
  "payload_type": "saml_response",
  "saml_response": {
    "issuer": [
      "https://sts.windows.net/03b8c6c5-104b-43e2-aed3-abb07df387cc/"
    ],
    "name_id": "ab260d59-0317-47f5-9afb-885c7a1257ab",
    "name_id_format": "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    "name_id_spnamequalifier": null,
    "name_id_namequalifier": null,
    "destination": "https://dh-gitlab.agounder.com/users/auth/saml/callback",
    "audiences": [
      "https://dh-gitlab.agounder.com/16.11.6"
    ],
    "attributes": {
      "http://schemas.microsoft.com/identity/claims/tenantid": [
        "03b8c6c5-104b-43e2-aed3-abb07df387cc"
      ],
      "http://schemas.microsoft.com/identity/claims/objectidentifier": [
        "ab260d59-0317-47f5-9afb-885c7a1257ab"
      ],
      "http://schemas.microsoft.com/identity/claims/identityprovider": [
        "https://sts.windows.net/03b8c6c5-104b-43e2-aed3-abb07df387cc/"
      ],
      "http://schemas.microsoft.com/claims/authnmethodsreferences": [
        "http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password"
      ],
      "email": [
        "bbtest@agounder.com"
      ],
      "firstname": [
        "BB"
      ],
      "name": [
        "bbtest@agounder.onmicrosoft.com"
      ],
      "lastname": [
        "Test"
      ]
    },
    "in_response_to": "_f8863f68-b5f1-43f0-9534-e73933e6ed39",
    "allowed_clock_drift": 2.220446049250313e-16,
    "success": true,
    "status_code": "urn:oasis:names:tc:SAML:2.0:status:Success",
    "status_message": null,
    "session_index": "_b4f253e2-aa61-46a4-902b-43592fe30800",
    "assertion_encrypted": false,
    "response_id": "_392cc747-7c8b-41de-8be0-23f5590d5ded",
    "assertion_id": "_b4f253e2-aa61-46a4-902b-43592fe30800"
  }
}

GitLab SAMLのテスト

SAMLのトラブルシューティングを行うには、次のいずれかを使用できます:

構成の検証

便宜上、サポートチームが使用するサンプルリソースをいくつか含めました。これらはSAMLアプリの設定を検証するのに役立つ場合がありますが、サードパーティ製品の現在の状態を反映することを保証するものではありません。

フィンガープリントを計算します

idp_cert_fingerprintを設定する場合は、可能な限りSHA256フィンガープリントを使用する必要があります。SHA1もサポートされていますが、推奨されていません。フィンガープリントを計算するには、証明書ファイルに対して次のコマンドを実行します:

openssl x509 -in <certificate.crt> -noout -fingerprint -sha256

<certificate.crt>を証明書ファイルの名前に置き換えます。

GitLab 17.11以降では、フィンガープリントアルゴリズムはフィンガープリントの長さに基づいて自動的に検出されます。

GitLab 17.10以前では、SHA1はデフォルトのフィンガープリントアルゴリズムです。SHA256フィンガープリントを使用するには、アルゴリズムを指定する必要があります:

idp_cert_fingerprint_algorithm: "http://www.w3.org/2001/04/xmlenc#sha256"

SSO証明書の更新

IDプロバイダーに使用される証明書が変更された場合(たとえば、証明書の更新時)、証明書フィンガープリントも更新する必要があります。証明書フィンガープリントは、IDプロバイダーのUIにあります。IDプロバイダーのUIで証明書を取得できない場合は、フィンガープリントの計算に関するドキュメントの手順に従ってください。

設定エラー

無効なオーディエンス

このエラーは、IDプロバイダーがGitLabをSAMLリクエストの有効な送信者および受信者として認識しないことを意味します。以下を必ずご確認ください:

  • IDプロバイダーサーバーの承認済みオーディエンスにGitLabコールバックURLを追加します。
  • issuer文字列の末尾の空白を避けてください。

キー検証エラー、ダイジェストの不一致、またはフィンガープリントの不一致

これらのエラーはすべて、SAML証明書と同様の場所から発生します。SAMLリクエストは、フィンガープリント、証明書、または検証ツールを使用して検証する必要があります。

この要件については、次の点を考慮してください:

  • フィンガープリントを使用する場合は、SHA256フィンガープリントを確認します:
    1. 証明書ファイルを再度ダウンロードしてください。
    2. フィンガープリントを計算します
    3. idp_cert_fingerprintで提供されている値とフィンガープリントを比較します。値は同じである必要があります。
  • 設定で証明書が提供されていない場合、フィンガープリントまたはフィンガープリント検証ツールを提供する必要があり、サーバーからの応答に証明書(<ds:KeyInfo><ds:X509Data><ds:X509Certificate>)が含まれている必要があります。
  • 証明書が設定で提供されている場合、リクエストに証明書を含める必要はなくなりました。この場合、フィンガープリントまたはフィンガープリント検証ツールはオプションです。

上記で説明したシナリオのいずれも有効でない場合、リクエストは前述のエラーのいずれかで失敗します。

クレームがないか、Email can't be blankエラー

IDプロバイダーサーバーは、GitLabがアカウントを作成するか、ログイン情報を既存のアカウントと照合するために、特定の情報を渡す必要があります。emailは、渡す必要のある最小限の情報量です。IDプロバイダーサーバーがこの情報を提供していない場合、すべてのSAMLリクエストは失敗します。

この情報が提供されていることを確認してください。

このエラーが発生する可能性のあるもう1つの問題は、IDプロバイダーによって正しい情報が送信されているものの、属性がOmniAuth infoハッシュの名前と一致しない場合です。この場合、SAMLレスポンスの属性名を対応するOmniAuth infoハッシュ名にマップするには、SAML設定でattribute_statementsを設定する必要があります。

ユーザーサインインバナーエラーメッセージ

メッセージ: SAML authentication failed: SAML NameID is missing from your SAML response.

SAML authentication failed: SAML NameID is missing from your SAML response. Please contact your administrator.というエラーが表示される場合があります。

この問題は、グループSSOを使用してGitLabにサインインしようとしたときに、SAMLレスポンスにNameIDが含まれていない場合に発生します。

この問題を解決するには、以下を実行します:

  • IdPアカウントにNameIDが割り当てられていることを確認するには、管理者に連絡してください。
  • SAMLデバッグツールを使用して、SAMLレスポンスに有効なNameIDがあることを確認します。

メッセージ: SAML authentication failed: Extern uid has already been taken.

SAML authentication failed: Extern uid has already been taken. Please contact your administrator to generate a unique external_uid (NameID).というエラーが表示される場合があります。

この問題は、グループSSOを使用して既存のGitLabアカウントをSAMLアイデンティティにリンクしようとしたときに、現在のNameIDを持つ既存のGitLabアカウントが存在する場合に発生します。

この問題を解決するには、管理者にIdPアカウントの一意のExtern UIDNameID)を再生成するように依頼してください。この新しいExtern UIDGitLab NameID制約に準拠していることを確認します。

SAMLログインでそのGitLabユーザーを使用したくない場合は、SAMLアプリからGitLabアカウントのリンクを解除できます。

メッセージ: SAML authentication failed: User has already been taken

サインインしているユーザーが別のアイデンティティにリンクされたSAMLを既に持っているか、NameIDの値が変更されています。考えられる原因と解決策を次に示します:

原因解決策:
特定のIDプロバイダーに対して、複数のSAMLアイデンティティを同じユーザーにリンクしようとしました。サインインに使用するアイデンティティを変更します。これを行うには、再度サインインする前に、このGitLabアカウントから以前のSAMLアイデンティティのリンクを解除します。
ユーザーがSSO識別をリクエストするたびにNameIDが変更されますNameIDを確認してくださいTransient形式で設定されていないか、後続のリクエストでNameIDが変更されていません。

メッセージ: SAML authentication failed: Email has already been taken

原因解決策:
同じメールアドレスを持つGitLabユーザーアカウントが存在する場合、そのアカウントはSAMLアイデンティティに関連付けられていません。GitLab.comでは、ユーザーは自分のアカウントをリンクする必要があります。GitLab Self-Managedインスタンスでは、管理者は、最初にサインインするときに、SAMLアイデンティティをGitLabユーザーアカウントに自動的にリンクするようにインスタンスを設定できます。

ユーザーアカウントは、次のいずれかの方法で作成されます:

  • ユーザー登録
  • OAuth経由でサインイン
  • SAML経由でサインイン
  • SCIMプロビジョニング

エラー: ユーザーは既に使用されています

これらのエラーが同時に発生するということは、IDプロバイダーによって提供されたNameIDの大文字と小文字の区別が、そのユーザーの以前の値と正確に一致しなかったことを示唆しています:

  • SAML authentication failed: Extern UID has already been taken
  • User has already been taken

NameIDが一貫した値を返すように設定することで、これを防ぐことができます。個々のユーザーに対してこれを修正するには、ユーザーの識別子を変更する必要があります。GitLab.comの場合、ユーザーはGitLabアカウントからSAMLのリンクを解除する必要があります。

GitLabアカウントをリンクしようとしているユーザーが、IDプロバイダーのSAMLアプリ内のユーザーとして追加されていることを確認します。

または、SAMLレスポンスでInResponseTo属性がsamlp:Responseタグにない可能性があります。これはSAML gemで想定されています。IDプロバイダーの管理者は、ログインがIDプロバイダーだけでなく、サービスプロバイダーによって開始されるようにする必要があります。

メッセージ: There is already a GitLab account associated with this email address.

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com

ユーザーがSAMLを手動で既存のGitLab.comアカウントにリンクしようとすると、このメッセージが表示されることがあります:

There is already a GitLab account associated with this email address.
Sign in with your existing credentials to connect your organization's account

この問題を解決するには、ユーザーが正しいGitLabパスワードを使用してサインインしていることを確認する必要があります。ユーザーは、次の両方に該当する場合、最初にパスワードをリセットする必要があります:

  • アカウントはSCIMによってプロビジョニングされました。
  • 初めてユーザー名とパスワードでサインインします。

メッセージ: SAML Name ID and email address do not match your user account

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com

ユーザーが「SAML Name IDとメールアドレスがユーザーアカウントと一致しません」というエラーを受け取ることがあります。管理者にお問い合わせください。」これは、次の意味をもちます:

  • SAMLによって送信されたNameID値が、既存のSAMLアイデンティティextern_uid値と一致しません。NameIDとextern_uidの両方で、大文字と小文字が区別されます。詳細については、ユーザーSAMLアイデンティティの管理を参照してください。
  • SAMLレスポンスにメールアドレスが含まれていないか、メールアドレスがユーザーのGitLabメールアドレスと一致しませんでした。

回避策として、GitLabグループオーナーがSAML APIを使用して、ユーザーのSAML extern_uidを更新します。extern_uidの値は、SAMLIDプロバイダー(IdP)によって送信されるName ID値と一致する必要があります。IdPの設定によっては、生成された一意のID、メールアドレス、またはその他の値になる場合があります。

エラー: Certificate element missing in response (ds:x509certificate)

このエラーは、IdPがSAMLレスポンスにX.509証明書を含めるように設定されていないことを示唆しています:

Certificate element missing in response (ds:x509certificate) and not cert provided at settings

X.509証明書は、レスポンスに含める必要があります。この問題を解決するには、SAMLレスポンスにX.509証明書を含めるようにIdPを設定します。

詳細については、IdPでのSAMLアプリの追加設定に関するドキュメントを参照してください。

その他のユーザーサインインの問題

NameIDの検証

トラブルシューティングでは、認証済みユーザーは誰でもAPIを使用して、GitLabが既に自分のユーザーにリンクしているNameIDhttps://gitlab.com/api/v4/userにアクセスし、アイデンティティのextern_uidを確認することで検証できます。

GitLab Self-Managedインスタンスの場合、管理者はusers APIを使用して同じ情報を確認できます。

グループにSAMLを使用する場合、適切な権限を持つロールのグループメンバーは、members APIを使用して、グループのメンバーのグループSAMLアイデンティティ情報を表示できます。

これは、SAMLデバッグツールでメッセージをエンコード解除することにより、IDプロバイダーから送信されているNameIDと比較できます。ユーザーを識別するには、これらを一致させる必要があります。

ログイン「ループ」でスタック

(GitLab.comの場合)GitLabシングルサインオンのURL、または(GitLab Self-Managedインスタンスの場合)インスタンスURLが、IDプロバイダーのSAMLアプリで「ログインURL」(または同様の名前のフィールド)として設定されていることを確認します。

GitLab.comの場合、またはユーザーがSAMLを既存のGitLab.comアカウントにリンクする必要がある場合は、GitLabシングルサインオンのURLを指定し、最初にサインインするときにSAMLアプリを使用しないようにユーザーに指示します。

ユーザーが404を受け取る

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com

サインインが成功した後にユーザーが404を受信した場合は、IP制限が設定されているかどうかを確認します。IP制限設定は、次のように設定されます:

グループのSAMLSSOは有料機能であるため、サブスクリプションの期限が切れると、GitLab.comでSAML SSOを使用してサインインするときに404エラーが発生する可能性があります。すべてのユーザーがSAMLを使用してサインインしようとしたときに404を受信する場合は、このSAML SSOネームスペースで使用されているアクティブなサブスクリプションがあることを確認してください。

「verify configuration」を使用するセットアップ中に404が表示された場合は、正しいSHA-1で生成されたフィンガープリントを使用していることを確認してください。

ユーザーが初めてサインインしようとしたときに、GitLabシングルサインオンURLが設定されていない場合、404が表示されることがあります。ユーザーアクセスセクションで概説されているように、グループメンバーシップのオーナーはユーザーにURLを提供する必要があります。

トップレベルグループがメールドメインでメンバーシップを制限しており、許可されていないメールドメインを持つユーザーがSSOでサインインしようとすると、404が表示されることがあります。ユーザーは複数のアカウントを持っている可能性があり、そのSAML IDは、会社のドメインとは異なるメールアドレスを持つ個人アカウントにリンクされている可能性があります。これを確認するには、以下を確認してください:

  • トップレベルグループがメールドメインでメンバーシップを制限していること。
  • トップレベルグループの監査イベントで、以下を確認してください:
    • そのユーザーに対してSigned in with GROUP_SAML authentication(GROUP_SAML認証でサインイン)アクションが表示されること。
    • 作成者名を選択して、ユーザーのユーザー名がSAML SSOに設定したユーザー名と同じであることを確認します。
      • ユーザー名がSAML SSOに設定したユーザー名と異なる場合は、個人アカウントからSAML IDのリンクを解除するようにユーザーに依頼してください。

すべてのユーザーがIDプロバイダー(IdP)へのサインイン後に404を受信している場合:

IdPへのサインイン後に一部のユーザーが404エラーを受信する場合は、まず、ユーザーがグループに追加されてすぐに削除された場合に返される監査イベントを確認してください。または、ユーザーが正常にサインインできても、トップレベルグループのメンバーとして表示されない場合:

  • ユーザーがSAMLIDプロバイダーに追加され、SCIMが設定されていることを確認します。

  • SCIM APIを使用して、ユーザーのSCIM IDのactive属性がtrueであることを確認します。active属性がfalseの場合は、次のいずれかを実行して、問題を解決できる可能性があります:

    • SCIMIDプロバイダーでユーザーの同期をトリガーします。たとえば、Azureには「オンデマンドのプロビジョニング」オプションがあります。

    • SCIMIDプロバイダーでユーザーを削除して再度追加します。

    • 可能であれば、ユーザーにアカウントのリンクを解除してから、アカウントをリンクしてもらいます。

    • 内部SCIM APIを使用して、グループのSCIMトークンを使用してユーザーのSCIM IDを更新します。グループのSCIMトークンが不明な場合は、トークンをリセットし、新しいトークンでSCIMIDプロバイダーアプリを更新します。リクエスト例:

      curl --request PATCH "https://gitlab.example.com/api/scim/v2/groups/test_group/Users/f0b1d561c-21ff-4092-beab-8154b17f82f2" --header "Authorization: Bearer <SCIM_TOKEN>" --header "Content-Type: application/scim+json" --data '{ "Operations": [{"op":"Replace","path":"active","value":"true"}] }'

ログイン後の500エラー

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed、GitLab Dedicated

SAMLサインインページからリダイレクトされたときにGitLabで「500エラー」が表示される場合は、次の原因が考えられます:

  • GitLabがSAMLユーザーのメールアドレスを取得できませんでした。IDプロバイダーが、emailまたはmailのクレーム名を使用して、ユーザーのメールアドレスを含むクレームを提供していることを確認してください。
  • identity provider_cert_fingerprintまたはidentity provider_certファイルに対するgitlab.rbファイルの証明書セットが正しくありません。
  • gitlab.rbファイルがidentity provider_cert_fingerprintを有効にするように設定されており、identity provider_certが提供されているか、またはその逆です。

ログイン後の422エラー

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed、GitLab Dedicated

SAMLサインインページからリダイレクトされたときにGitLabで「422エラー」が表示される場合は、IDプロバイダーでAssertion Consumer Service(ACS)URLが誤って設定されている可能性があります。

ACS URLがhttps://gitlab.example.com/users/auth/saml/callbackを指していることを確認してください。ここで、gitlab.example.comはGitLabインスタンスのURLです。

ACS URLが正しくても、まだエラーが発生する場合は、他のトラブルシューティングセクションを確認してください。

許可されていないメールでの422エラー

「メールアドレスはサインアップできません」という422エラーが表示されることがあります。通常のメールアドレスを使用してください。」

このメッセージは、ドメイン許可リストまたは拒否リストの設定からドメインを追加または削除する必要があることを示している可能性があります。

この回避策を実装するには:

  1. 左側のサイドバーの下部で、管理者を選択します。
  2. 設定 > 一般を選択します。
  3. 新規登録の制限を展開します。
  4. サインアップに許可されたドメインサインアップに拒否されたドメインに、必要に応じてドメインを追加または削除します。
  5. 変更を保存を選択します。

SAML経由でサインインするときのユーザーがブロックされる

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed、GitLab Dedicated

SAML経由でサインインするときにユーザーがブロックされる最も可能性の高い理由は次のとおりです:

  • 設定で、gitlab_rails['omniauth_block_auto_created_users'] = trueが設定されており、これはユーザーが初めてサインインするときです。
  • required_groupsが設定されていますが、ユーザーはそのメンバーではありません。

Googleワークスペースのトラブルシューティングのヒント

SAMLアプリのエラーメッセージに関するGoogleワークスペースドキュメントは、サインイン中にGoogleからエラーが表示された場合にデバッグに役立ちます。次の403エラーに特に注意してください:

  • app_not_configured
  • app_not_configured_for_user

メッセージ: The member's email address is not linked to a SAML account

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com

このエラーは、SAML SSOの強制が有効になっているGitLab.comグループ(またはサブグループ、またはグループ内のプロジェクト)にユーザーを招待しようとしたときに表示されます。

ユーザーをグループに招待しようとした後にこのメッセージが表示された場合:

  1. ユーザーがSAMLIDプロバイダーに追加されていることを確認します。
  2. ユーザーに既存のGitLab.comアカウントにSAMLをリンクするように依頼します(ある場合)。それ以外の場合は、ユーザーにIDプロバイダーのダッシュボードからGitLab.comにアクセスするか、手動でサインアップして、新しいアカウントにSAMLをリンクして、GitLab.comアカウントを作成するように依頼します。
  3. ユーザーがトップレベルグループのメンバーであることを確認します。

さらに、サインイン後に404を受信するユーザーのトラブルシューティングを参照してください。

メッセージ: The SAML response did not contain an email address.

このエラーが表示された場合:

The SAML response did not contain an email address.
Either the SAML identity provider is not configured to send the attribute, or the
identity provider directory does not have an email address value for your user

このエラーは、次の場合に表示されます:

  • SAML応答に、ユーザーのメールアドレスがemail(メール)またはmail(メール)属性に含まれていない場合。
  • ユーザーがアカウントにSAMLをリンクしようとしたが、ID検証プロセスをまだ完了していない場合。

サポートされているメール属性を送信するようにIDプロバイダーが設定されていることを確認してください:

<Attribute Name="email">
  <AttributeValue>user@example.com‹/AttributeValue>
</Attribute>

http://schemas.xmlsoap.org/ws/2005/05/identity/claimshttp://schemas.microsoft.com/ws/2008/06/identity/claims/などのフレーズで始まる属性名は、GitLab 16.7以降ではデフォルトでサポートされています。

<Attribute Name="http://schemas.microsoft.com/ws/2008/06/identity/claims/emailaddress">
  <AttributeValue>user@example.com‹/AttributeValue>
</Attribute>

グローバルSAMLグループメンバーシップロックでサービスアカウントを追加できません

  • 提供形態: GitLab Self-Managed、GitLab Dedicated

グローバルSAMLグループメンバーシップロックが有効になっている場合、管理者のみがUIを介してグループメンバーとサービスアカウントを管理できます。グループのオーナーがサービスアカウントを管理する必要がある場合は、代わりにグループメンバーAPIを使用できます。