【问题标题】:Signature Attribute Values in SAML 2.0SAML 2.0 中的签名属性值
【发布时间】:2015-03-17 18:01:49
【问题描述】:

我正在创建从 IDP 到 SP 的 SAML 2.0 响应。我需要的是从我获得的证书中获取 SAML 2.0 属性的值。以下是 SAML 2.0 属性:

`<ds:SignatureValue> value from certificate </ds:SignatureValue>
 <ds:DigestValue> value from certificate </ds:DigestValue>
 `

还有谁能指导我,我需要在 SP 端执行哪些步骤才能成功验证给定证书生成的 SignatureValue。

谢谢!

【问题讨论】:

  • 您需要做的是签署响应。您没有为此使用任何框架或库吗?只是普通的 Java?

标签: java digital-signature x509certificate saml-2.0


【解决方案1】:

有一个关于如何使用java.xml.crypto.dsig API 验证 XML 数字签名的 Oracle 教程:

http://docs.oracle.com/javase/7/docs/technotes/guides/security/xmldsig/XMLDigitalSignature.html

不幸的是,我没有很容易找到要下载的代码示例。我确实找到了一些示例验证代码here

另一篇好文章是here

在某些时候,您需要从证书中获取您的 SP 的公钥,并将其提供给您的验证码——这在本教程的using KeySelectors 部分进行了介绍。您可以使用keytool 命令从证书中提取并将其添加到密钥库中。有时这来自离线的密钥/证书交换;有时,密钥本身作为 X.509 数据在 SAML 文档中出现在&lt;KeyInfo&gt; 中。

【讨论】:

  • 感谢苏格兰人提供如此详细的回答。我正在关注它。
  • 我已经查看了您的答案并按照您提到的链接进行操作。我现在已经成功签署了我的 SAML 2.0 xml 文档。但在 SP 方面,我无法验证签名。无论我尝试什么,我都会遇到异常:“org.opensaml.xml.validation.ValidationException:签名没有针对凭证的密钥进行验证”我正在使用 openSAML 进行验证。我已将密钥库加载到我的 java 代码中,获取证书并提取其公钥并将其与我的签名一起传递以进行验证,但没有成功。这里可能缺少什么?
  • 优秀;我很高兴它有所帮助。如果它导致了解决方案,请考虑接受它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
  • 2012-05-10
  • 2016-06-09
  • 2022-10-23
  • 2022-09-30
  • 1970-01-01
相关资源
最近更新 更多