当通过 ADFS 将 SP 证书更新为 IDP 时 SSO 登录失败

当通过 ADFS 将 SP 证书更新为 IDP 时 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 > 管理 > 在您复制登录的时间戳记下搜索错误日志。 如果您看到以下错误:
错误: “联合被动请求期间遇到错误。
附加数据
协议名称: 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)"

以下是解决方案:
  • 在 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 以进行验证。

这篇文章对您有帮助吗?