【问题标题】:DSA signature check in SAML 2.0 with PHP使用 PHP 在 SAML 2.0 中进行 DSA 签名检查
【发布时间】:2012-08-28 00:34:26
【问题描述】:

我已经检查过 SO 并四处搜索,但到目前为止还没有找到答案。我使用 SAML 2.0 作为服务提供商,并嵌入了 php-saml - 首先使用了 simplesamlphp,但发现嵌入有点困难。

IdP-s 响应带有签名

<signaturemethod algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1">

看起来 xmlseclibs 不支持 dsa 签名。

问题 A:有什么建议可以用来验证 dsa 签名吗?

问题 B:只是好奇其他人为 SAML 使用什么库。我刚刚在 simplesamlphp 上花了大约 20 分钟,发现它完全依赖于它自己的 URL 结构并且是一个适当的网络服务器端点,而不仅仅是一个库。

干杯

【问题讨论】:

  • 作为一个更新,simplesamlphp 也在使用 xmlseclibs,所以那里也没有 DSA 支持

标签: php saml dsa xmlseclibs


【解决方案1】:

PingFederate(来自 Ping Identity)为您提供 DSA 作为选项(作为 IDP 和 SP)。虽然 XML 签名强制要求使用 DSAwithSHA1 签名算法,但 SAML V2.0 并不要求它,但建议使用它。

虽然 PF 不是一个代码库(它是一个完整的本地 SSO 解决方案),但它支持云计算所需的所有各种身份协议 (SAML 1.0/1.1/2.0/WS-Federation),并且可以很容易地挂接到通过 RESTful Web 服务或 PHP 库的 PHP 应用程序。

【讨论】:

  • 可能是一个无效的问题,但是如果“XML 签名要求使用 DSAwithSHA1 签名算法”,那么看起来被广泛使用的 PHP xmlseclibs 库为什么没有实现 DSA 加密?另外,有没有 PF 的免费替代品?
  • 你必须问那些写开源 PHP 东西的人为什么他们把它遗漏了。可能是因为 SAML2 规范不需要它。大多数商业 SAML 解决方案应该支持 DSA 和 RSA 密钥。您可能会找到一些“免费”的东西,但它不会像 PF 那样具有简单性、协议支持或技术支持选项。如果您只想调用外部服务,可以查看 PingOne。不是免费的,但实施起来非常快/容易/便宜,包括免费试用。
【解决方案2】:

PHP 库缺乏 DSA 支持的部分历史原因可能与此有关:

【讨论】:

  • 该错误已在 2008 年修复
猜你喜欢
  • 2011-08-17
  • 1970-01-01
  • 2012-05-10
  • 2022-10-23
  • 2015-12-01
  • 1970-01-01
  • 2013-11-27
  • 2012-03-31
  • 2017-02-16
相关资源
最近更新 更多