4

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

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

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

还有另一个 stackoverflow 帖子描述了一个类似的问题,请参阅“HTTP 状态 401 - 身份验证失败:传入的 SAML 消息无效”,使用 Salesforce 作为 IdP 来实施 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

提前致谢,

和我

4

1 回答 1

8

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

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

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

于 2014-07-17T14:55:54.397 回答