"签名没有验证凭据的密钥"与Junos作为IdP

时间:2014-07-16 13:52:00

标签: spring spring-security saml-2.0 spring-saml

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

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

我被重定向到我的IdP的登录页面,并且可以成功输入我的凭据。但是出现这样的错误“Signature没有验证凭据的密钥”。

还有另一个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

提前致谢,

岸堤

1 个答案:

答案 0 :(得分:2)

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

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

响应消息中未包含密钥的事实没有错,Spring SAML知道元数据和ExtendedMetadata配置中要使用的密钥。