我要创建一个datatbase表来存储OpenID登录的。 我想我会包括这三列中,除了声明的标识符:
- 该OpenID端点
- 在OP-本地标识符
- 境界
- 中的OpenID版本(1或2)
你存储这些领域?
你认为这是合理的存储这些领域?有以下原因:
该OpenID端点:那么你知道哪些OpenID提供认证的用户。 也许将来你会发现一个供应商也不是那么非常值得信赖的,然后我觉得这是很好的了解,如果someuser.example.com是由该供应商认证。
在OP-本地标识符:我觉得它让我保持用户的轨道,哪怕她改变用户提供的标识符。 (例如,如果她的用户提供的标识符是example.com/username,但她改变它somewhereelse.com/username,那么我认为OP-本地标识符将保持不变(假设用户使用相同的OpenID提供者继续) 。
境界:我建立一个多租户web应用程序,如果我储存的境界,它会更容易知道,如果两个看似不同的OpenID标识符可能代表同一个人。 ( 谷歌使用执导身份 :您主张通过ID境界不同所以相同的用户可以有许多不同的ID声称。)
版本:在某些情况下,安全问题似乎在未来,一些OpenID的版本,那么它可能是很好的知道哪些用户可能会受到影响。
统计收集目的,境界和终点。
(你能想出一些其他OpenID的相关值的我应该存放?比如,我想,以确定供应商。要做到这一点,就足以存储端点?我并不需要存储供应商的名字吗?)
- 该OpenID端点:值得信赖? 如何是一个值得信赖的供应商(或没有)? 它不是断言它没有自己的数据任何东西,所以它不可能撒谎。 无论它表现为你希望它是任何另一回事。 此外,供应商可能会由于某些原因,有不同的端点为每个用户(例如,
/server-username
)。 - 在OP-本地标识符:你不应该(因为规范是这么说的),但是请注意,在极少数情况下,它会成功。 然而,更经常地改变你的供应商,而不是改变你的身份。 如果你真的想改变你的身份,改变供应商(或注册不同的帐户)并不难。 一种情况,这将有助于将是当用户将失去承载声称的身份的域名。 然而,这对于供应商停止提供它的服务更容易,你也需要为准备(例如,通过提供存储多个ID为单个用户,像这样)。 如果你早已做好了准备,单情况下,这将有助于被其他机制覆盖。
- 境界:我不明白怎么会来帮助您。 从谷歌,你会得到两个完全独立的标识,没有任何可能性,它们相互关联,除非你需要一个电子邮件地址(和为什么您需要的境界呢?)。
- 版本:不太可能了,版本可能与新的要求(因为一个供应商可能会更新)改变。 不过,如果你真的想知道,你的用户可能会受到影响,并以某种方式希望他们在自己的网站阅读有关获得任何东西,那么是的,这可能是有用的。
你说你要确定供应商。 然而,正如我上面提到的,它不可能这样做,如果提供者采取措施避免这种情况。 你可以,例如,存储它的域名,但是这不是完美的,因为有可能是同一个域下的其他供应商(例如,几个人托管自己的提供一个共享的主机)。
总之,我的看法是,存储这些是一个坏主意,原因如上所述。