我已经使用 Spring SAML 实现了 SSO,并且一切正常,可以与 idp.ssocircle.com 进行交互。
现在我正在尝试使用另一个身份提供者。我已经下载了 IdP 的元数据并将其链接到我的 spring XML 配置中。我还将服务提供者的元数据上传到 iDP 并将其链接到 spring XML 配置中。
我被重定向到 IdP 的登录页面,并且可以成功输入我的凭据。但是会出现这样的错误“签名未根据凭据的 key 进行验证”。
还有另一个 stackoverflow 帖子描述了一个类似的问题,参见 "HTTP Status 401 - Authentication Failed: Incoming SAML message is invalid" with Salesforce as IdP for implementating SSO
但是我在遵循解决方案时遇到了问题,因为 Fiddler 捕获的我的 SAML 响应不包含像“X509Certificate”这样的元素。
编辑(!):但我不得不说,我的身份提供者的元数据在“ds:keyInfo”中包含一个类似“ds:X509Certificate”的元素,其中包含一些内容。但是还有另一个空的“ds:keyInfo”-Element 和一个空的“ds:X509Data”-Element。
身份提供者的配置有问题吗?
谁能告诉我这里发生了什么?
完整的日志文件:https://drive.google.com/file/d/0B3RlRCEjz-cvZGQ5aldzaUc0blE/edit?usp=sharing
提前致谢,
和我
最佳答案
看来Response
消息使用与 IdP 元数据中包含的证书不同的证书进行签名。您应该让您的 IdP 告诉您他们用于签名的证书并将它们添加到他们的元数据文件中。根据您所说的,也可能是元数据文件不完整或已损坏。
另一种选择是将他们为您提供的证书添加到 samlKeystore.jks
(并记住别名)。然后定义别名为 signingKey
在 ExtendedMetadata
Spring 配置中的 IdP 元数据定义。您可以找到有关使用 ExtendedMetadata
的详细信息在 Spring SAML manual .
响应消息中未包含 key 这一事实并没有错,Spring SAML 从元数据和 ExtendedMetadata 配置中知道要使用哪些 key 。
关于spring - "Signature did not validate against the credential' s key ”,Junos 作为 IdP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24782638/