【问题标题】:Implementing OpenID consumer details实施 OpenID 消费者详细信息
【发布时间】:2011-01-24 02:12:59
【问题描述】:

对于 OpenID 智能模式,规范使用 Diffie-Hellman 密钥交换。我想知道是否可以重用公钥和私钥(假设它们没有被泄露),或者是否应该为每个请求生成它们。我正在使用 PHP 的 OpenSSL 库(我的代码:$key = openssl_pkey_new(array('private_key_type' => OPENSSL_KEYTYPE_DH));)来生成密钥,而且速度非常慢(生成密钥平均需要 22 秒——对于网站来说这是非常不可接受的)。如果无法重用密钥,有没有更快的方法可以使用 OpenSSL 生成密钥?由于对数学库等的依赖,我宁愿不手动完成。

编辑:明确地说,我正在寻找两个答案:我可以在 OpenID 关联模式下重用 Diffie-Hellman 密钥吗?如果没有,是否有比openssl_pkey_new() 更快的方式使用 OpenSSL 生成密钥,因为这需要非常长的时间。

【问题讨论】:

  • 哇,你为什么不使用 OpenID 库,而不是自己做 OpenID 事务?
  • 因为 a) 没有一个能满足我的需要,b) 我不喜欢使用我不懂的东西。 JanRain 库的设计非常糟糕,在我的设置中加载缓慢——更不用说它不支持 PHP 5.3.5(我不会妥协)。 LightOpenID 到处使用 preg 而不是正确的 XML DOM 方法,这让我很恼火(更不用说它仍然不支持智能模式身份验证的事实)。没有同时支持 PHP 5.3.5 和智能模式身份验证的库。
  • 我想到了这一点,这就是我使用 OpenSSL 的想法,但它过于彻底地嵌入到 Zend 框架中。

标签: php openid


【解决方案1】:

杰夫,

我想首先支持您自己构建此解决方案的决定。我同意其他解决方案(在大多数情况下)在几个方面都很薄弱。我还没有完全过渡到 PHP 5.3.5,但会紧随其后。

不管怎样,你的问题有几个答案:

  1. 是的,只要您能确保私钥和公钥不被泄露,您就可以重复使用它们。但是我自己总是对此有点偏执,所以我每天晚上使用 cron 作业重新生成我的密钥,然后使用会话跟踪来确保我没有在旧密钥下开始并在新密钥下完成的事务.. . 这个额外的步骤(每 24 小时更新一次)是不必要的,但可能有助于减轻您的担忧。

  2. 不,生成新密钥不应花费 22 秒。我的服务器需要 3-5 秒来创建这些(我仍然觉得太长了,因此当用户不受影响/等待时,cron 工作就在一边。你可能想看看你的日志,看看是否有是否有任何警告。您的 openssl.cnf 或服务器中的某些配置可能存在问题。我想如果您的服务器资源过多或您的处理器速度非常慢,则可能需要很长时间。您可以检查正在运行的内容在后台...也许一些失控的无限循环正在占用您的处理器和内存?是否可以选择重新启动?

祝你好运!

【讨论】:

  • 太棒了!我希望我可以使用相同的密钥,但我不确定——当谈到密码学时,我有点偏执,不是这方面的专家。我会检查我的服务器日志,但在与一个以服务器管理为生的朋友交谈后,我怀疑这只是 /dev/urandom 中缺少熵导致了问题。
【解决方案2】:

OpenID 智能模式

什么是 OpenID 智能模式? 如果您不是在谈论使用 openID,我想您可以停止阅读(尽管我认为您不应该再创建另一个 OpenID 提供程序。它们已经够多了)


。 我从未阅读过 openid 规范(长/复杂的阅读:$。我想在某个时候阅读/学习它),但是当 OpenID 身份验证需要 21 秒时(?)。然后我认为你做错了什么。 LightOpenID(real simple library) library(consumer) 在瞬间完成 OpenID 身份验证。我创建了this library which wraps LightOpenID+openid selector。您可以在 my hosting 上看到一个演示。

【讨论】:

  • OpenID 智能模式是您与提供者关联的地方,而不是要求提供者验证签名。我查看了(并基于我的消费者——是的,我正在制作消费者——基于)LightOpenID,但它不能满足我的需求(具体来说,它不支持关联)。需要明确的是:我不需要 22 秒来执行身份验证; openssl 生成 DH 密钥需要 22 秒。
  • @Jeff Hubbard 感谢您提供的信息。我真的很喜欢 LightOpenID。我可以毫不费力地进行 OpenID 身份验证。这对我来说已经足够了:P。 P.S:我发现这个有趣的链接寻找 op 关联 => blog.facilelogin.com/2008/05/…
猜你喜欢
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多