存储OpenID端点,OP本地标识符和领域?

时间:2011-09-05 08:22:47

标签: openid

我即将创建一个数据库表来存储OpenID登录。我想除了声明的标识符之外,我将包括这三列:

你存储这些字段吗?

您认为存储这些字段是否合理?,原因如下:

  • OpenID端点:您知道哪个OpenID提供商对用户进行了身份验证。也许在将来你会发现一个提供商不是那么值得信赖,然后我认为很好知道 someuser.example.com 是否被该提供商认证了。

    < / LI>
  • OP-Local Identifier:我认为它允许我跟踪用户,即使她更改了用户提供的标识符。 (例如,如果她的用户提供的标识符是example.com/username,但她将其更改为somewhereelse.com/username,那么我认为OP-Local Identifier将保持不变(假设用户继续使用相同的OpenID提供程序)

  • 领域:我正在构建一个多租户webapp,如果我存储了这个领域,那么知道两个看似不同的OpenID标识符是否代表同一个人会更容易。 (Google uses directed identities:您的声明ID因领域而异。因此,同一位用户可以拥有多个不同的声明ID。)

  • 版本:如果以后出现某些安全问题,使用某些OpenID版本,那么最好知道哪些用户可能会受到影响。

  • 领域和端点,用于统计数据收集。

(你能想到我应该存储的其他一些OpenID相关值吗?例如,我想识别提供者。为此,它足以存储端点?我不需要存储提供者的名字?)

1 个答案:

答案 0 :(得分:2)

  • OpenID端点:值得信赖?提供商如何值得信赖(或不信任)?它没有断言它不拥有的数据,所以它不可能说谎。它是否像你期望的那样表现是另一回事。此外,由于某种原因,提供商可以为每个用户提供不同的端点(例如,/server-username)。
  • OP-Local Identifier:你不应该(因为规范是这样说的),但是,在极少数情况下,它会成功。但是,改变您的提供者比改变您的身份更为常见。如果您真的想要更改自己的身份,更改提供商(或注册其他帐户)并不难。当用户丢失承载所声称身份的域名时,将会有所帮助的一种情况。但是,提供商更有可能停止提供服务,您还需要为此做好准备(例如,通过提供为单个用户存储多个ID,如SO)。如果你已经为此做好了准备,那么它将提供帮助的单一案例将被另一种机制所覆盖。
  • 领域:我不明白这对你有什么帮助。从谷歌,你得到两个完全独立的标识符,除非你需要一个电子邮件地址(为什么你需要这个领域呢?),否则无法关联它们。
  • 版本:不太可能,版本可能随新请求而变化(因为提供商可能会更新)。不过,如果您真的想知道哪些用户可能会受到影响,并希望他们通过阅读您网站上的内容获得任何收益,那么是的,它可能会有用。

您已经说过要识别提供商。但是,正如我上面提到的,如果提供者采取措施避免这种情况,则不可能这样做。例如,您可以存储它的域名,但这并不完美,因为在同一域下可能有其他提供商(例如,有几个人在共享主机上托管他们自己的提供商)。

总之,我的观点是,由于上述原因,存储这些是一个坏主意。