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

Php 使用自己的域提供可靠OpenID的提示,php,openid,lightopenid,Php,Openid,Lightopenid,我正在尝试使用我的域名作为标识符,构建一个基于个人OpenID的在线身份。我希望能够完成这一切: 制作http://alvaro.es/我的标识符 能够透明地切换提供程序 登录任何接受OpenID的第三方站点 能够提供个人详细信息(电子邮件、时区、头像…),并得到提示是否将其发送到请求这些信息的网站 在我自己的(PHP支持的)站点中接受OpenID,而无需购买SSL主机 我已经阅读并评估了几个OpenID提供商(Google、Yahoo、myOpenID…甚至)。事实上,我已经使用OpenI

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

  • 制作<代码>http://alvaro.es/我的标识符
  • 能够透明地切换提供程序
  • 登录任何接受OpenID的第三方站点
  • 能够提供个人详细信息(电子邮件、时区、头像…),并得到提示是否将其发送到请求这些信息的网站
  • 在我自己的(PHP支持的)站点中接受OpenID,而无需购买SSL主机
我已经阅读并评估了几个OpenID提供商(Google、Yahoo、myOpenID…甚至)。事实上,我已经使用OpenID一段时间了,并且:

  • 供应商提供的文档非常稀少,或者根本没有
  • 无论我选择哪个提供商,总会有登录失败的站点(通常没有错误消息)
  • 我对提供者返回的标识符几乎没有控制权(或者根本没有控制权)
  • 我还是不明白这一切到底是怎么回事
我在寻找一般性的建议,但我明白这可能是主观的,所以我会提出一些具体的问题


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

  • My提供了一个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">
    
    
    
    对吗?够了吗

  • myOpenID提供了你的域名,这是一项注册你自己域名的功能,但我还不敢测试它(它需要更改DNS),配置表表明我必须在
    http://openid.alvaro.es/username
    http://username.alvaro.es/
    作为标识符(非
    http://alvaro.es/
    )。但是,Stackoverflow仍然将
    alvaro.es
    报告为我的标识符,但没有此功能。我需要用它吗

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

  • 是否有比我选择的更合适的提供者或消费者库

  • 这是正确的。这已经足够了。虽然提供X-XRDS-Location是一件好事,因为它分离了发现过程,但并不十分必要
  • 据我所知,“您的域”在您想要在域中拥有多个帐户时非常有用。无论如何,你根本不需要使用它
  • 这是正确的。url也称为声明的标识符,即用户声明的标识符
  • 作为LightOpenID的作者,我的答案是显而易见的,可能是有偏见的——我创建了它,因为我找不到一个好的现有库
  • 您可能想知道的其他事项:

    • 委派不会与谷歌和任何其他使用select_标识符的提供商合作(即每个帐户都有相同的url,然后提供商要求您登录)
    • 您的委派(如1所示)将允许您透明地切换提供程序,并根据需要登录到支持OpenID的任何站点
    • 至于个人信息,完全取决于提供商、是否发送、支持何种个人信息等。。例如,谷歌不允许你选择发送什么,只允许你选择是否发送某些东西(以及网站声称需要的所有东西)
    • 有些实现有缺陷,而且确实失败了。尝试第二次登录,它有时会起作用
    • 如果使用委托,提供者返回的标识符应该无关紧要。您登录的网站应使用您声明的标识符

    关于openid的工作原理,请参阅一些。

    答案非常清楚,非常感谢。我永远都不会完全理解OpenID,但我想我终于找到了在我的网站上实现它的最低限度。