使用您自己的域提供可靠的OpenID的提示

时间:2011-08-04 08:47:17

标签: php openid lightopenid

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

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

我已阅读the usual doc并且我一直在评估几个OpenID提供商(Google,Yahoo,myOpenID ......甚至running my own server)。事实是我已经使用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提供您的域名,这是一个注册您自己的域名的功能,但我不敢测试它(它需要更改DNS),配置表单建议我有在http://openid.alvaro.es/usernamehttp://username.alvaro.es/之间选择作为标识符(不是http://alvaro.es/)。但是,如果没有此功能,Stackoverflow仍会将alvaro.es报告为我的标识符。我需要使用吗?

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

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

1 个答案:

答案 0 :(得分:1)

  1. 这是对的。这绰绰有余。虽然提供X-XRDS-Location是一件好事,因为它会逐步完成发现过程,但并不是必需的。
  2. 据我所知,当您想要在您的域中拥有多个帐户时,“您的域名”非常有用。无论如何,你根本不需要使用它。
  3. 这是对的。该网址也称为声明标识符,即用户声称的内容。
  4. 作为LightOpenID的作者,我的答案显而易见且可能存在偏见 - 我创建了它,因为我找不到一个好的现有库。
  5. 您可能想知道的其他事项:

    • 代表团不会与Google以及使用select_identifier的任何其他提供商合作(即每个帐户都有相同的网址,然后提供商会要求您登录)。
    • 如图1所示,您的代表团将允许您透明地切换提供程序,并根据需要登录到支持OpenID的任何站点。
    • 至于个人详细信息,完全取决于提供商,是否发送,支持哪种个人信息等。例如,Google不允许您选择要发送的内容,只是发送一些东西(以及网站声称需要的一切)。
    • 有些实现是错误的,确实失败了。尝试第二次登录,有时会有效。
    • 如果您使用委托,则提供商返回的标识符无关紧要。您登录的网站应使用您声明的标识符。

    至于openid如何工作,请参阅answers to that question on SO