IBM Cloud Docs
SAML 認証要求が失敗するのはなぜですか?

SAML 認証要求が失敗するのはなぜですか?

SAML 認証の問題が発生しました。

SAML メッセージ・シグニチャーを検証できないのはなぜですか?

アプリケーションをテストすると、以下のエラー・メッセージを受け取る。

The SAML message signature could not be validated

このエラーは、SAML によって送信された署名を App ID が検証できない場合に発生します。

この問題を解決するには、構成で**「インバウンド署名 (Inbound Signature)」「なし」**に設定されていることを確認します。

RelayState パラメーターが認証応答から欠落しているのはなぜですか?

RelayState パラメーターが認証応答にない。

App ID は、RelayState という非表示のパラメーターを認証要求の一部として送信します。 このパラメーターが応答に含まれていない場合は、ID プロバイダーがこのパラメーターを正しく返すように構成されていない可能性があります。 RelayState の形式は次のとおりです。

https://idp.example.org/SAML2/SSO/Redirect?SAMLRequest=request&RelayState=token

RelayState パラメーターをまったく変更せずに App ID に返すように、SAML プロバイダーが構成されていることを確認してください。

Name ID に関するエラーを受け取るのはなぜですか?

認証要求を送信すると、NameID に関するエラーを受け取る。

App ID は、サービス・プロバイダーとして、サービスおよび ID プロバイダーによるユーザーの識別方法を定義します。 App ID では、次の例に示すように、ユーザーは NameID 認証要求の NameID フィールドで識別されます。

<NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>

この問題を解決するには、ID プロバイダーの NameID の形式が E メール・アドレスに設定されていることを確認してください。 ID プロバイダー・レジストリー内のすべてのユーザーが有効な E メール・アドレス形式で設定されていることを確認してください。 そして、レジストリー内のユーザーが複数の E メールを持っている場合でも、有効な E メールが常に返されるように NameID フィールドが正しく定義されていることを確認します。

応答の復号の失敗

認証要求への応答として、以下のいずれかのエラー・メッセージを受け取る。

エラー・メッセージ 1:

Unexpectedly received an encrypted assertion. Please enable response encryption in your App ID SAML configuration.

エラー・メッセージ 2:

Could not decrypt SAML assertion. Ensure your SAML provider is configured with the App ID encryption.

ID プロバイダーが暗号化するように構成されている場合は、SAML 認証要求 (AuthnRequest) に署名するように App ID を構成する必要があります。 そして、対応する構成を予期するように ID プロバイダーを構成する必要があります。 これらのエラーは、以下のいずれかの理由で受け取る可能性があります。

  • ID プロバイダーの SAML 応答が暗号化されていることを予期するように、App ID が構成されていない。
  • App ID がアサーションを正しく復号できない。

エラー・メッセージ 1 を受け取った場合は、暗号化された応答を予期するように SAML 構成が設定されていることを確認します。 デフォルトでは、App ID は暗号化された応答を予期しません。 暗号化を構成するには、encryptResponseAPI** を使用して ** パラメーターを true に設定してください。

エラー・メッセージ 2 を受け取った場合は、証明書が正しいことを確認してください。 署名証明書は、App ID メタデータ XML ファイルから取得できます。 <KeyDescriptor use="signing"> を指定して鍵を使用していることを確認してください。 署名アルゴリズムとして `` を使用するように ID プロバイダーが構成されていることを確認してください。

レスポンダー・エラー・コード

認証要求を送信すると、以下の一般エラー・メッセージを受け取る。

urn:oasis:names:tc:SAML:2.0:status:Responder

App ID が初期認証要求を送信しますが、ID プロバイダーはユーザー認証を実行して応答を返す必要があります。 ID プロバイダーがこのエラー・メッセージを生成する理由として、いくつか考えられます。

このメッセージは、ID プロバイダーが以下の場合に表示されることがあります。

  • ユーザー名を見つけられない、または、検証できない。
  • 認証要求 (NameID) に定義されている AuthnRequest 形式をサポートしていない。
  • 認証コンテキストをサポートしていない。
  • 署名された認証要求を必要とする。または、固有の署名アルゴリズムを使用している。

この問題を解決するには、構成とユーザー名を確認します。 正しい認証コンテキストおよび変数が定義されていることを確認してください。 特定の方法で要求に署名する必要があるかどうかを確認してください。

サポートされない認証要求

サポートされない認証要求に関するメッセージを受け取る。

App ID は、認証要求を生成するときに、認証コンテキストを使用して、認証および SAML アサーションの品質を要求できます。

この問題を解決するには、認証コンテキストを更新します。 デフォルトでは、App ID は認証クラス urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport と比較 exact を使用します。 API を使用して、ユース・ケースに合うようにコンテキスト・パラメーターを更新できます。

SAML 要求署名の失敗

認証要求を検証できないことを示すエラーを受け取る。

SAML 認証要求 (AuthNRequest) に署名するように App ID を構成できますが、対応する構成を予期するように ID プロバイダーを構成する必要があります。

この問題を解決するには、次のようにします。

  • signRequestSAML IdP 設定 APItrue を使用して パラメーターを に設定することで、認証要求に署名するように IBM Cloud を構成します。 認証要求が署名されているかどうかを確認するには、要求 URL を調べます。 署名は照会パラメーターとして組み込まれます。 例: https://idp.example.org/SAML2/SSO/Redirect?SAMLRequest=request&SigAlg=value&Signature=value&RelayState=token

  • 正しい証明書を使用して ID プロバイダーが構成されていることを確認します。 署名証明書を取得するには、IBM Cloud ダッシュボードからダウンロードした IBM Cloud メタデータ XML ファイルを確認してください。 <KeyDescriptor use="signing"> を指定して鍵を使用していることを確認してください。

  • 署名アルゴリズムとして `` を使用するように ID プロバイダーが構成されていることを確認します。

なぜ認証方法が一致しないのですか?

提供された認証方法が要求された認証方法と一致しないというメッセージを受け取る。

以下に例を示します。

AADSTS75011: Authentication method ‘X509, Multifactor, X509Device’ by which the user authenticated with the service doesn't match requested authentication method 'Password, ProtectedTransport'.

App ID が認証要求を生成するとき、authenciation コンテキストを使用して、認証と SAML アサーションの品質を要求する。

デフォルトでは、 App ID は、『 Understanding SAML 』に記載されているように、 authnContexturn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportexact の比較を使用する。 この例では、 X509, Multifactor 認証方法を使用している。

この問題を解決するには、SAML authnContextclasscomparison の両方の値について、認証コンテキスト設定を更新します。 使用するケースに合わせてコンテキスト・パラメータを更新するには、 APIを 使用します。

また、以下の例に示すように、SAML 構成に空白の authnContext を設定することもできる。

  "authnContext": { }