Spring Security SAML IdP 元数据证书和签名

Posted

技术标签:

【中文标题】Spring Security SAML IdP 元数据证书和签名【英文标题】:Spring Security SAML IdP Metadata Certificate and Signature 【发布时间】:2015-03-27 06:35:15 【问题描述】:

我看过很多问题,包括https://***.com/a/25384924/1317559。我有 IdP 元数据和证书,但似乎无法获得 Spring,所以请查看。

将证书添加到密钥库:keytool -importcert -alias adfssigning -keystore samlKeystore.jks -file certificate.crt 在元数据中有多个证书(2 个不同的)和一​​个 SignatureValue。 我尝试使用相同的 keytool 命令添加签名值,但它不是证书。 我还尝试添加在元数据中找到的 2 个证书。

我启用了调试日志,这是我得到的:

使用 KeyInfo 派生凭据成功验证签名 正在尝试建立对 KeyInfo 派生凭据的信任 提供的可信名称为 null 或空,跳过名称评估 尝试对不受信任的凭据进行 PKIX 路径验证:[subjectName='O=novell,OU=accessManager,CN=test-signing'] PKIX 路径构造因不受信任的凭据失败:[subjectName='O=novell,OU=accessManager,CN=test-signing']:无法找到到所请求目标的有效证书路径 无法通过 PKIX 验证签名凭据建立签名信任 未能建立对 KeyInfo 派生凭据的信任 无法使用任何 KeyInfo 派生凭据验证签名和/或建立信任 PKIX 验证签名失败,无法解析有效且受信任的签名密钥 元数据条目http://idp.ppd.com/nidp/saml2/metadata 的签名信任建立失败 过滤来自http://idp.ppd.com/nidp/saml2/metadata 的元数据时出错 org.opensaml.saml2.metadata.provider.FilterException:元数据条目的签名信任建立失败 在 org.opensaml.saml2.metadata.provider.SignatureValidationFilter.verifySignature(SignatureValidationFilter.java:312)

【问题讨论】:

此问题已修复。事实上有很多问题。我正在使用 Spring SAML 示例应用程序:需要将公共证书(签名后的第一个证书,在 idp 元数据中)添加到 Other sources, security 下的 samlKeystore.jks。密码是 nalle123 。不要在 securityContext.xml 文件中添加任何内容。 【参考方案1】:

Spring SAML 手册在chapter 7.2.4 中描述了元数据信任验证。一种选择是禁用信任检查,或从元数据中手动删除签名 XML。正如您所发现的,要导入 samlKeystore.jks 的证书是用于生成元数据签名的证书,而不是特定 SP 或 IDP 实体的签名/加密证书。

【讨论】:

感谢弗拉基米尔的建议。在您的其他帖子中也找到了很多帮助。 我想问另一个问题,但似乎我不能:我将我的 SP 元数据发送给托管 IdP 的人,但他们一方的 ID 或 entityID 存在格式问题。这两者都是:urn:test:sso:degicom:com。现在我需要更改格式并为两者赋予不同的值。但是如何更改 ID? 正确的方法是打开一个全新的问题,而不是更新现有的问题。您可以在 bean MetadataGenerator 中设置 ID 元素,它有一个属性“ID”。另外,请确保您使用的是 Spring SAML 1.0.0.RELEASE,以前的版本有一个错误,可能会在自动生成的 ID 中包含不可接受的字符 - 也许这就是您遇到的问题。 我被阻止提出新问题。感谢您解决第二个问题弗拉基米尔!我将这个标记为答案,尽管我下面的答案实际上是第一个问题的解决方案。【参考方案2】:

另外值得注意的是:不要更改签名文件 - 当我重新格式化 ADFS 生成的单行时发生了这种情况。 显然改变了文件的签名。

【讨论】:

【参考方案3】:

此问题已修复。事实上有很多问题。我正在使用 Spring SAML 示例应用程序:

需要在Other sources, security下的samlKeystore.jks中添加公共证书(签名后的第一个,在idp元数据中)。 密码是 nalle123 。 不要在 securityContext.xml 文件中添加任何内容。

【讨论】:

嗨,Yster,我面临着类似的问题。您能否详细说明如何解决这些问题?主要是以下几点我没有得到。密码是 nalle123 。不要在 securityContext.xml 文件中添加任何内容。

以上是关于Spring Security SAML IdP 元数据证书和签名的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring Security saml 的 IDP 会话超时

Spring Security SAML IdP 元数据证书和签名

Spring security Saml - SP 和 IDP 的时间差

如何在 Spring Security SAML 示例中配置 IDP 元数据和 SP 元数据?

Spring Security SAML 中的刷新会话

Spring Security SAML 请求在证书中包含 ^M 个字符