我即将创建一个数据库表来存储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相关值吗?例如,我想识别提供者。为此,它足以存储端点?我不需要存储提供者的名字?)
答案 0 :(得分:2)
/server-username
)。您已经说过要识别提供商。但是,正如我上面提到的,如果提供者采取措施避免这种情况,则不可能这样做。例如,您可以存储它的域名,但这并不完美,因为在同一域下可能有其他提供商(例如,有几个人在共享主机上托管他们自己的提供商)。
总之,我的观点是,由于上述原因,存储这些是一个坏主意。