Junos 作为 IdP 的“签名未针对凭证的密钥进行验证”

Posted

技术标签:

【中文标题】Junos 作为 IdP 的“签名未针对凭证的密钥进行验证”【英文标题】:"Signature did not validate against the credential's key" with Junos as IdP 【发布时间】:2014-09-07 02:11:02 【问题描述】:

我已经使用 Spring SAML 实现了 SSO,并且一切正常,可以与 idp.ssocircle.com 交互。

现在我正在尝试使用另一个身份提供者。我已经下载了 IdP 的元数据并将其链接到我的 spring XML 配置中。我还将服务提供者的元数据上传到 iDP 并在 spring XML 配置中链接。

我被重定向到我的 IdP 的登录页面,并且可以成功输入我的凭据。但是会出现类似的错误“签名未针对凭据的密钥进行验证”。

还有另一个描述类似问题的 *** 帖子,请参阅 "HTTP Status 401 - Authentication Failed: Incoming SAML message is invalid" with Salesforce as IdP for implementating SSO

但我无法遵循该解决方案,因为 Fiddler 捕获的我的 SAML 响应不包含“X509Certificate”之类的元素。

Edit(!):但我不得不说,我的身份提供者的元数据在“ds:keyInfo”中包含一个类似“ds:X509Certificate”的元素,其中包含一些内容。但还有另一个空的“ds:keyInfo”-Element 和一个空的“ds:X509Data”-Element。

身份提供者的配置有问题吗?

谁能告诉我这里发生了什么?

完整的日志文件:https://drive.google.com/file/d/0B3RlRCEjz-cvZGQ5aldzaUc0blE/edit?usp=sharing

提前致谢,

安迪

【问题讨论】:

我想附上 saml 响应、日志条目和我的 xml 配置,但我没有足够的声誉。 您可以将日志上传到 Google Drive 或 Drop Box 等公共服务并发布链接。请确保按照 Spring SAML 手册中的说明启用调试级别日志记录,以便可以查看所有交换的消息。 完成。至少我可以附加两个链接。 是否所有信息都可用于回答这个问题? 【参考方案1】:

似乎Response 消息使用的证书与 IdP 元数据中包含的证书不同。您应该让您的 IdP 告诉您他们使用哪些证书进行签名并将它们添加到他们的元数据文件中。根据您的说法,也可能是元数据文件不完整或已损坏。

另一种选择是将他们提供给您的证书添加到samlKeystore.jks(并记住别名)。然后在 Spring 配置中 IdP 的元数据定义的 ExtendedMetadata 上将别名定义为 signingKey。您可以在Spring SAML manual 中找到有关使用ExtendedMetadata 的详细信息。

Response 消息中没有包含密钥这一事实并没有错,Spring SAML 从元数据和 ExtendedMetadata 配置中知道要使用哪些密钥。

【讨论】:

我已经解码了元数据中的证书,它确实是我的身份提供者元数据中的错误证书。我已将元数据文件替换为正确的文件,一切正常。谢谢!

以上是关于Junos 作为 IdP 的“签名未针对凭证的密钥进行验证”的主要内容,如果未能解决你的问题,请参考以下文章

Shibboleth SP 和 ADFS 作为 idP

使用 Spring SAML 作为 IDP 而不是 SP

为啥我不应该在 IDP 上下文中使用 IdToken 作为不记名令牌?

Azure Active Directory 如何支持将 Okta 作为 IDP 进行联合?

什么是junos_install_config替换模块?

没有完全实施 OpenAM 或 OpenSSO 的 OpenAM 或 OpenSSO fedlets 作为 SP 和 ADFS 作为 IdP?