Spring 安全 SAML IdP 元数据证书和签名
Spring Security SAML IdP Metadata Certificate and Signature
我看了很多问题,包括 。我有 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 派生凭据的信任
- 无法验证签名and/or使用任何 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 手册描述了 chapter 7.2.4 中的元数据信任验证。一种选择是禁用信任检查,或从元数据中手动删除签名 XML。就像您发现的那样,要导入到 samlKeystore.jks 的证书是用于生成元数据签名的证书,而不是特定 SP 或 IDP 实体的 signing/encryption 证书。
此问题已修复。其实问题很多。我正在使用 Spring SAML 示例应用程序:
- 需要将 public 证书(签名后的第一个,在 idp 元数据中)添加到其他来源,安全下的 samlKeystore.jks。
- 密码是nalle123。
- 不要在 securityContext.xml 文件中添加任何内容。
还值得注意:不要更改已签名的文件 - 当我重新格式化 ADFS 生成的单行文件时发生在我身上。
显然更改了文件的签名。
我看了很多问题,包括 。我有 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 派生凭据的信任
- 无法验证签名and/or使用任何 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 手册描述了 chapter 7.2.4 中的元数据信任验证。一种选择是禁用信任检查,或从元数据中手动删除签名 XML。就像您发现的那样,要导入到 samlKeystore.jks 的证书是用于生成元数据签名的证书,而不是特定 SP 或 IDP 实体的 signing/encryption 证书。
此问题已修复。其实问题很多。我正在使用 Spring SAML 示例应用程序:
- 需要将 public 证书(签名后的第一个,在 idp 元数据中)添加到其他来源,安全下的 samlKeystore.jks。
- 密码是nalle123。
- 不要在 securityContext.xml 文件中添加任何内容。
还值得注意:不要更改已签名的文件 - 当我重新格式化 ADFS 生成的单行文件时发生在我身上。 显然更改了文件的签名。