我正在尝试基于SMF用户帐户实现自己的OpenID端点。我的代码基于phpMyOpenID和一些SMF授权代码。
到目前为止一切正常。我可以使用端点在任何站点上登录/注册。如果我没有登录SMF,它将要求我登录,如果SMF登录成功,则接受它。
但是,似乎不同的SMF登录之间没有区别。即另一位用户报告说他试图使用X站点上的端点,使用他的SMF帐户登录并登陆我站点X上的用户帐户(我之前在该站点上注册了OpenID端点)。
我想我必须以某种方式发送SMF登录信息,或者根据SMF登录信息使其以某种方式独特。因为我要做的事情可能微不足道,我以为我会问这里 - 也许我还需要解决更多的事情。
代码(只是PHP),如果你想看一下,就在这里: http://github.com/albertz/smf-openid-server
或者只是描述我需要做些什么才能使每个SMF登录都独一无二。
我计划的另一个项目是多人C ++游戏中的OpenID客户端。主机可以选择只允许通过OpenID进行身份验证的人员登录。此外,我希望只允许某些人登录。基于OpenID登录获取唯一字符串的常用方法是什么?在这种情况下,我想到了类似http://{smf-openid-endpoint}/{smf-user}
或http://www.google.de/profiles/{google-user}
的内容。获得这样一个字符串的规范方法是什么?
我认为这个问题可能与我的主要问题有关,这就是为什么我也把它放在这里。
另请参阅相关问题:Is the identifier URL unique? What are the different terms?
答案 0 :(得分:1)
似乎我收到的最终用户的第一个请求是checkid_setup。在该回复中,我可以在openid.identity
字段中指定一个唯一的网址(在我的问题中我称之为唯一字符串)。
我现在已经在我的代码中完成了它,它似乎工作。即我可以输入一般的OpenID端点URL(例如在SourceForge上),它会按照我在问题中建议的方式自动扩展它。
回答我的第二个问题:似乎经过验证的标识符URL本身是唯一的,因此可以使用它。因此,这有时看起来很神秘(例如在谷歌的情况下,它只是一些哈希)。因此,这可以在内部用于不同用户之间的差异。对于图形表示,我可以显示我应该从OpenID身份验证中获得的真实用户名或邮件地址。