当通过 ADFS 将 SP 证书更新为 IDP 时 SSO 登录失败
当通过 ADFS 将 SP 证书更新为 IDP 时 SSO 登录失败。
当更新 IdP (ADFS) 上的新 SP 证书时 SSO 失败。
错误:响应中的状态代码无效。
调查步骤:
- 捕获SAML跟踪以查找SAML响应:
- 将 SAML Message Decoder 插件添加到浏览器:
对于 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
依赖方: https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx
例外详细信息:
协议名称: SAML
依赖方: https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx
例外详细信息:
Microsoft.IdentityServer.Service.SecurityTokenService.RevocationValidationException: MSIS3014: 由拇指指纹标识的信赖方信任的加密证书“754B9208F1F75C5CC962750F3675C5D129471D80”https://idbroker.webex.com/39xxxx4ea-4xxe-416e-bd4f-4cxxxxxxx'无效。 这可能表示证书已撤销、已到期或证书链不可信。
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)"
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,复制并粘贴。
- 政府版Webex (FedRAMP) Control Hub必须使用https://admin-usgov.webex.com/。
或
- 在 ADFS 上以管理员身份打开 Powershell,然后运行命令:
Get-Adfs PartyTrust -名称"Cisco Webex"| 设置-Adfs PartyTrust -SignCertificateRev Check None -EncryptionCertificateRev Check None
注:确保输入回复方信任的名称与客户在其ADFS上创建的名称相同,并以双引号形式输入。
- 在 Control hub 上测试 SSO 以进行验证。
这篇文章对您有帮助吗?