0

我正在尝试使用我的域名作为标识符来构建基于 OpenID 的个人在线身份。我希望能够完成这一切:

  • http://alvaro.es/我的标识符。
  • 能够透明地切换供应商。
  • 登录任何接受 OpenID 的第三方站点。
  • 能够提供个人详细信息(电子邮件、时区、头像...)并提示是否将它们发送到请求它们的站点。
  • 在我自己的(PHP 驱动的)站点中接受 OpenID,无需购买 SSL 托管。

我已经阅读了通常的文档,并且一直在评估几个 OpenID 提供商(Google、Yahoo、myOpenID...,甚至运行我自己的服务器)。事实上,我使用 OpenID 已经有一段时间了,并且:

  • 提供商提供非常稀缺的文档或根本没有。
  • 无论我选择哪个提供商,总会有登录失败的站点(通常没有错误消息)。
  • 我对提供者返回的标识符几乎没有控制权(或根本没有控制权)。
  • 我仍然无法理解这一切是如何运作的。

我正在寻找一般性建议,但我知道这可能是主观的,所以我会提出一些具体的问题。


到目前为止,我正在尝试将myOpenId作为提供者,将 LightOpenID作为消费者。我的问题是:

  1. 我的URL提供了一个 HTTP 标头:

     X-XRDS-Location: http://kalvaro.myopenid.com/?xrds=1
    

    ...以及以下 HTML 标记:

     <link rel="openid.server openid2.provider" href="http://www.myopenid.com/server">
     <link rel="openid.delegate openid2.local_id" href="http://kalvaro.myopenid.com">
    

    这是正确的吗?够了吗?

  2. myOpenID 提供Your Domains,这是一个注册您自己的域名的功能,但我不敢对其进行测试(它需要更改 DNS),并且配置表单建议我必须在http://openid.alvaro.es/usernamehttp://username.alvaro.es/作为标识符之间进行选择(不是http://alvaro.es/)。但是,没有此功能,Stackoverflow 仍然报告alvaro.es为我的标识符。我需要使用它吗?

  3. 在实现 LightOpenID 时,我将本地用户与$openid->identity(对象$openid的实例在哪里)进行匹配LightOpenID。此属性似乎是用户提供的 URL。这是正确的吗?

  4. 是否有比我选择的更充足的提供者或消费者库?

4

1 回答 1

2
  1. 它是正确的。这绰绰有余。虽然提供 X-XRDS-Location 是一件好事,因为它可以加速发现过程,但并不是绝对必要的。
  2. 据我了解,当您想在域中拥有多个帐户时,“您的域”很有用。无论如何,您根本不需要使用它。
  3. 它是正确的。url 也称为声明标识符,即用户声明的内容。
  4. 作为 LightOpenID 的作者,我的回答是显而易见的并且可能有偏见——我创建了它,因为我找不到一个好的现有库。

您可能想知道的其他事项:

  • 委派不适用于 Google 和任何其他使用 select_identifier 的提供商(即每个帐户都有相同的 url,然后提供商会要求您登录)。
  • Your delegation, as shown in 1., will let you switch providers transparently and log in to any site that supports OpenID, just as you want.
  • As for the personal details, it depends completely on the provider, whether it sends them or not, what kind of personal information it supports, etc.. For example, Google doesn't let you choose what to send, only whether to send something (and everything the website claims to require) at all.
  • Some implementations are buggy and indeed fail. Try logging in for a second time, it works sometimes.
  • The identifier returned by your provider shouldn't matter if you use delegation. The website you're logging into should use your claimed identifier.

As for how the openid works, see some answers to that question on SO.

于 2011-08-04T18:48:29.137 回答