疑難排解AEM中的SAML相關問題

本文說明如何疑難排解AEM的SAML (安全性宣告標籤語言)問題。 它可解決無限回圈問題、無效判斷提示問題等,以及解決這些問題的措施。

說明 description

環境

Experience Manager

問題/症狀

如何疑難排解Adobe Experience Manager (AEM)的安全宣告標籤語言(SAML)相關問題?

解決方法 resolution

無限回圈問題:

  • 檢查ds:signature是否為SAML判斷提示>的一部分,如果不是,這將會在IDP端完成,並勾選已簽署判斷提示的核取方塊
  • 檢查SAML回應中的nameId格式,格式應完全符合nameId原則格式(在SAML設定中設定)
  • 檢查SAML回應中的SAML AudienceRestriction,此標籤的值應該與SAML設定中的實體ID完全相符
  • 檢查saml2:條件(NotBefore & NotOnOrAfter),伺服器未與ntp伺服器同步。 使用ntpd並強制其同步處理系統時間(ntpdate -s pool.ntp.org)。 若要進行測試,請將時鐘公差變更為–1,這會忽略時鐘差異。
  • 檢查idp是否未簽署宣告。 詢問IDP團隊回應已簽署,並且宣告需要根據saml規格簽署。
  • 如果來自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的私密金鑰:無法簽署驗證請求」錯誤。

無法擷取私密金鑰:

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
  • 要解壓縮SAML要求/回應的HAR[ 1]檔案

[ 1] 正在產生HAR檔案

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