当通过 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,复制并粘贴。
  • 政府版Webex (FedRAMP) Control Hub必须使用 broker-f.webex.com 而不是 broker.webex.com


 

  • 在 ADFS 上以管理员身份打开 Powershell,然后运行命令:
Get-Adfs PartyTrust -名称"Cisco Webex"| 设置-Adfs PartyTrust -SignCertificateRev Check None -EncryptionCertificateRev Check None
:确保输入回复方信任的名称与客户在其ADFS上创建的名称相同,并以双引号形式输入。
 
  • 在 Control hub 上测试 SSO 以进行验证。
这篇文章对您有帮助吗?