以 ADFS 作為 IDP 進行 SP 憑證更新時,SSO 登入失敗

以 ADFS 作為 IDP 進行 SP 憑證更新時,SSO 登入失敗。

在 IdP (ADFS) 上更新新的 SP 憑證時發生 SSO 失敗。

錯誤:回應中的狀態碼無效。

調查步驟:

  1. 擷取 SAML 追蹤以尋找 SAML 回應
使用者新增的影像
  • 開啟 Notepad++,如須安裝請按一下這裡
    • 貼上訊息,在 XML 語言中直接尋找 SAML 回應。
  1. 檢查來自 IdP 的 SAML 回應中是否存在屬性
  2. 如果看不到任何屬性,表示 Webex 並沒有從 IdP 接收到回應。 因此您必須從 IdP 端調查此問題
  3. 檢查 ADFS Webex 信賴憑證者配置 按一下這裡
  4. 如果配置看起來沒有問題,請檢查事件檢視器記錄
  5. 檢查 Windows 記錄中的 ADFS 錯誤:
  • 在 Windows 記錄中,尋找有無 ADFS 事件記錄錯誤碼 364。 事件詳細資料識別無效的憑證。 在這些情況下,不允許 ADFS 主機透過防火牆上的埠 80 來驗證憑證。
  • 允許 IdP 經由防火牆存取連接埠 80 而到達網際網路,使其能夠執行 CRL 檢查。
    • 如果連接埠已開啟,則依循 Microsoft 及其防火牆。
    • 如果防火牆上未開啟連接埠 80,或是 CRL 檢查無法運作,則停用 CRL
  1. 在 ADFS 伺服器上 > 按一下事件檢視器 > 應用程式 > ADFS > 管理 > 以您複製的登入時間戳記,搜尋錯誤記錄。 如果您看到下列錯誤:
錯誤: "Encountered error during federation passive request.
Additional Data
Protocol Name: Saml
Relying Party: https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx
Exception details:
Microsoft.IdentityServer.Service.SecurityTokenService.RevocationValidationException: MSIS3014: The encryption certificate of the relying party trust 'https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx' identified by thumbprint '754B9208F1F75C5CC962750F3675C5D129471D80' is not valid. It might indicate that the certificate has been revoked, has expired, or that the certificate chain is not trusted.
at Microsoft.IdentityModel.Threading.AsyncResult.End(IAsyncResult result)
at Microsoft.IdentityModel.Threading.TypedAsyncResult1.End(IAsyncResult result) at Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.Issue(RequestSecurityToken request, IList1& identityClaimSet, List1 additionalClaims) at Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.Issue(RequestSecurityToken request, List1 additionalClaims)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.Issue(HttpSamlRequestMessage httpSamlRequestMessage, SecurityTokenElement onBehalfOf, String sessionState, String relayState, String& newSamlSession, String& samlpAuthenticationProvider, Boolean isUrlTranslationNeeded, WrappedHttpListenerContext context, Boolean isKmsiRequested)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.RequestBearerToken(WrappedHttpListenerContext context, HttpSamlRequestMessage httpSamlRequest, SecurityTokenElement onBehalfOf, String relyingPartyIdentifier, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired, String& samlpSessionState, String& samlpAuthenticationProvider)at  Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSerializedToken(HttpSamlRequestMessage httpSamlRequest, WrappedHttpListenerContext context, String relyingPartyIdentifier, SecurityTokenElement signOnTokenElement, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired) at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSecurityToken(SamlSignInContext context, SecurityToken securityToken, SecurityToken deviceSecurityToken)
at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.Process(ProtocolContext context)
at Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext, PassiveProtocolHandler protocolHandler)
at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)"

解決方式如下:
  • 在 ADFS 上以管理員的身份開啟 Powershell,然後執行指令:
Get-AdfsRelyingPartyTrust -Identifier 'https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx'  | Set-AdfsRelyingPartyTrust -SigningCertificateRevocationCheck None -EncryptionCertificateRevocationCheck None
附註: 請務必輸入引號中的識別碼 URL,錯誤訊息中可以找到此識別碼 URL,請予以複製並貼上
 
  • 在 ADFS 上以管理員的身份開啟 Powershell,然後執行指令,
Get-AdfsRelyingPartyTrust -Name "Cisco Webex" | Set-AdfsRelyingPartyTrust -SigningCertificateRevocationCheck None-EncryptionCertificateRevocationCheck None
 
附註: 輸入的信賴憑證者信任的名稱,務必與客戶在其 ADFS 上建立的名稱相同,並且置於雙引號中。
  • 在 Control Hub 上測試 SSO 以進行驗證。

本文是否有幫助?