AEMでの SAML 関連の問題のトラブルシューティング

この記事では、AEMでの SAML (Security Assertion Markup Language)の問題のトラブルシューティング方法について説明します。 無限ループの問題、無効なアサーションの問題、その他の問題、およびそれらを解決するための対策に対処します。

説明 description

環境

Adobe Experience Manager

問題/症状

Adobe Experience Manager(AEM)での Security Assertion Markup Language (SAML)関連の問題をトラブルシューティングするには、どうすればよいですか?

解決策 resolution

無限ループの問題:

  • ds:signature が SAML アサーションの一部であるかどうかを確認します > そうでない場合は、IDP エンドで実行され、署名済みアサーションのチェックボックスをオンにします
  • SAML 応答の nameId 形式を確認します。形式は、SAML 設定で設定された nameId ポリシー形式と完全に一致する必要があります。
  • SAML 応答の SAML AudienceRestriction を確認します。このタグの値は、SAML 設定のエンティティ ID と完全に一致する必要があります
  • saml2 をチェックします:条件(NotBefore & NotOnOrAfter)、サーバーが ntp サーバーと同期していません。 ntpd を使用し、システム時刻を強制的に同期させます(ntpdate -s pool.ntp.org)。 テストの場合、クロック許容値を–1 に変更すると、クロック差が無視されます。
  • idp がアサーションに署名していないかどうかを確認します。 応答が署名され、アサーションは SAML 仕様に従って署名する必要があることを idp チームに依頼します。
  • IDP からのアサーションが暗号化されている場合、SAML トレーサーが出力しているかどうかを確認します。 ある場合、SAML 認証ハンドラーの設定では、暗号化チェックボックスを使用する必要があります

SAML 証明書が適切な形式かどうかを確認します。

  • SAML 応答から署名を取得し、証明書を修正します。つまり、65 行目より後で、Enter キーなどを押します。
  • 後でこれを使用して、AEM トラストストアにをインストールし、証明書の詳細を IDP と一致させることができます。

暗号化:

  • まず、常に暗号化なしで SAML 設定を完了します。 これが完了したら、暗号化を有効にします。 この方法を使用すると、問題のデバッグが簡単になります

Dispatcher:

  • SAML ログインリクエストがフィルターセクションで許可されていることを確認します。許可されていない場合は、/filter セクションを更新して、*/saml_login へのPOSTリクエストを許可します。

    /0100 { /type "allow" /method "POST" /url "*/saml_login" }

  • httpd.conf の web サーバーレベルで Mod ヘッダー(mod_header)の変更を確認します。以下の形式にする必要があります。

    < < < < < < ヘッダーは、常に Set-Cookie (.*) "$1; HTTPOnly; Secure" > > > > >

アサーションが無効:

1
2
com.adobe.granite.auth.saml.model.Assertion Invalid Assertion: Signature invalid. com.adobe.granite.auth.saml.SamlAuthenticationHandler Private key of SP not provided: Cannot sign Authn request
  • トラストストアに保存されている証明書に問題がある可能性があります。 これを解決するには、新しい idp_cert を削除して再度アップロードし、ユースケースを確認します。
  • SAML 応答を暗号化していない場合、「SP の秘密鍵が指定されていません:Authn リクエストに署名できません」エラーを無視できます。

秘密鍵を取得できません:

1
2
[ com.adobe.granite.security.user.internal.servlets.KeyStoreManagingServlet,1121, [ javax.servlet.Servlet] ] ServiceEvent REGISTERED saml.log:27.01.2019 14:16:13.642 *ERROR* [ qtp275633701-179] com.adobe.granite.auth.saml.SamlAuthenticationHandler KeyStore uninitialized. Cannot retrieve private key to decrypt assertions.
  • このエラーは、IDP がアサーションを暗号化しており、応答を復号化する秘密鍵がないことを意味します。 応答を暗号化する場合は、有効な秘密鍵をAEM キーストアにアップロードする必要があります。

SAML 関連のサポートチケットを発行する際に提供する情報:

  • SAML リクエスト
  • SAML 応答
  • SAML 設定
  • SAML のデバッグログ(com.adobe.granite.auth.saml)
  • Error.log
  • HAR[ 1] SAML 要求/応答を抽出するファイル

[ 1]HAR ファイルの生成 ​

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f