0

我正在尝试基于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}or http://www.google.de/profiles/{google-user}。获得这样一个字符串的规范方法是什么?

我认为另一个问题可能与我的主要问题有关,这就是为什么我也把它放在这里的原因。


另请参阅相关问题:标识符 URL 是否唯一?有哪些不同的术语?

4

1 回答 1

1

我收到的最终用户的第一个请求似乎是checkid_setup。在该响应中,我可以在该字段中指定一个唯一的 URL(我在我的问题中称之为唯一字符串openid.identity) 。

我现在已经在我的代码中做到了,它似乎工作。即我可以输入通用 OpenID 端点 URL(例如在 SourceForge 上),它会按照我在问题中建议的方式自动扩展它。

回答我的第二个问题:验证标识符 URL 本身似乎是唯一的,因此可以使用它。因此这有时看起来很神秘(例如在谷歌的情况下,它只是一些哈希)。因此,这可以在内部用于在不同用户之间进行区分。对于图形表示,我可以显示我也应该从 OpenID 身份验证中获得的真实用户名或邮件地址。

于 2010-07-16T00:09:01.313 回答