以 ADFS 作為 IDP 進行 SP 憑證更新時,SSO 登入失敗
以 ADFS 作為 IDP 進行 SP 憑證更新時,SSO 登入失敗。
在 IdP (ADFS) 上更新新的 SP 憑證時發生 SSO 失敗。
錯誤:回應中的狀態碼無效。
調查步驟:
- 擷取 SAML 追踪以尋找 SAML 回應:
- 新增SAML 訊息解碼器 瀏覽器的外掛程式:
若使用 Chrome:https://chrome.google.com/webstore/detail/saml-message-decoder/mpabchoaimgbdbbjjieoaeiibojelbhm?hl=en
若使用 Firefox: https://addons.mozilla.org/en-US/firefox/addon/saml-message-decoder-extension/ - 開啟外掛程式,並按一下複製此訊息。
- 開啟 Notepad++,以安裝 按一下這裡。
- 貼上訊息,在 XML 語言中直接尋找 SAML 回應。
- 檢查屬性是否存在於來自 IdP 的 SAML 回應中。
- 如果看不到任何屬性,表示 Webex 並沒有從 IdP 接收到回應。因此,需要從 IdP 端調查問題。
- 若要檢查 ADFS Webex 依賴方設定,按一下這裡。
- 當設定看起來正常時,請檢查事件檢視程式記錄。
- 檢查 Windows 記錄中的 ADFS 錯誤:
- 在 Windows 記錄中,尋找有無 ADFS 事件記錄錯誤碼 364。事件詳細資料識別無效的憑證。在這些情況下,不允許 ADFS 主機透過防火牆上的埠 80 來驗證憑證。
- 允許 IdP 透過防火牆對連接埠 80 進行存取,使其能夠執行 CRL 檢查。
- 如果連接埠已開啟,請追踪 Microsoft 及其防火牆。
- 如果防火牆上未開啟連接埠 80 或 CRL 檢查不起作用,請停用 CRL。
- 在 ADFS 伺服器上 > 按一下事件檢視器 > 應用程式 > ADFS > 管理 > 以您複製的登入時間戳記,搜尋錯誤記錄。如果您看到以下錯誤:
錯誤:「在同盟被動請求期間發生錯誤。
其他資料
通訊協定名稱:Saml
Relying Party:https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx
Exception details:
通訊協定名稱: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)
在 Microsoft.IdentityModel.Threading.TypedAsyncResult1.End(IAsyncResult 結果) 在 Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.Issue(RequestSecurityToken request, IList1& identityClaimSet, List1 AdditionalClaims) 在 Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.Issue(RequestSecurityToken)請求,列出 1 個附加聲明)
在 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.Issue(HttpSamlRequestMessage httpSamlRequestMessage, SecurityTokenElement onBehalfOf, 字串 sessionState, 字串中繼狀態, 字串&newSamlSession, 字串& samlpAuthenticationProvider, Boolean isUrlTranslationNeeded, WrappedHttpListenerContext 內容, Boolean isKmsiRequested)
在 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.RequestBearerToken(WrappedHttpListenerContext 內容,HttpSamlRequestMessage httpSamlRequest,SecurityTokenElement onBehalfOf,StringrelyingPartyIdentifier,Boolean isKmsiRequested,Boolean isApplicationProxyTokenRequired,String& samlpSessionState,String& samlpAuthenticationProvider) Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSerializedToken(HttpSamlRequestMessage httpSamlRequest, WrappedHttpListenerContext 內容, 字串relyingPartyIdentifier, SecurityTokenElement signOnTokenElement, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired) 在 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSecurityToken(SamlInContext,SamlSignContext SecurityToken securityToken, SecurityToken deviceSecurityToken)
在 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.Process(ProtocolContext 內容)
在 Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext,PassiveProtocolHandler protocolHandler)
在 Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext 內容)」
在 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.Issue(HttpSamlRequestMessage httpSamlRequestMessage, SecurityTokenElement onBehalfOf, 字串 sessionState, 字串中繼狀態, 字串&newSamlSession, 字串& samlpAuthenticationProvider, Boolean isUrlTranslationNeeded, WrappedHttpListenerContext 內容, Boolean isKmsiRequested)
在 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.RequestBearerToken(WrappedHttpListenerContext 內容,HttpSamlRequestMessage httpSamlRequest,SecurityTokenElement onBehalfOf,StringrelyingPartyIdentifier,Boolean isKmsiRequested,Boolean isApplicationProxyTokenRequired,String& samlpSessionState,String& samlpAuthenticationProvider) Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSerializedToken(HttpSamlRequestMessage httpSamlRequest, WrappedHttpListenerContext 內容, 字串relyingPartyIdentifier, SecurityTokenElement signOnTokenElement, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired) 在 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.BuildSignInResponseCoreWithSecurityToken(SamlInContext,SamlSignContext SecurityToken securityToken, SecurityToken deviceSecurityToken)
在 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.Process(ProtocolContext 內容)
在 Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext,PassiveProtocolHandler protocolHandler)
在 Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext 內容)」
以下是解決方案:
- 在 ADFS 上以管理員的身份開啟 Powershell,然後執行指令:
Get-AdfsRelyingPartyTrust -Identifier 'https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx ' | Set-AdfsRelyingPartyTrust -SigningCertificateRe吊銷檢查 無 -EncryptionCertificateRe吊銷檢查 無
附註:
- 確保以引號輸入識別碼 URL,並且可以在錯誤訊息中找到識別碼 URL,複製並貼上它。
- Webex for Government (FedRAMP) Control Hub 必須使用 https://admin-usgov.webex.com/。
或
- 在 ADFS 上以管理員的身份開啟 Powershell,然後執行指令:
Get-AdfsRelyingPartyTrust -名稱「Cisco Webex」| Set-AdfsRelyingPartyTrust -SigningCertificateRe吊銷檢查 無 -EncryptionCertificateRe吊銷檢查 無
附註:確保輸入的回覆方信任名稱與客戶在其 ADFS 上建立的名稱相同,並用雙引號括住。
- 在 Control Hub 上測試 SSO 以進行驗證。
本文是否有幫助?