【问题标题】:Store OpenID endpoint, OP-Local Identifier and realm?存储 OpenID 端点、OP-Local 标识符和领域?
【发布时间】:2011-09-05 08:22:46
【问题描述】:

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

您是否存储这些字段?

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

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

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

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

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

  • 领域和端点,用于统计收集目的。

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

【问题讨论】:

    标签: openid


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

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

    总而言之,出于上述原因,我认为存储这些是一个坏主意。

    【讨论】:

    • 嗨喵!非常感谢您的详细解答!
    • 好吧,存储 OP-Local Identifier 是没有意义的。我在the spec 中没有找到任何说明我不应该存储它的地方。 -- 实际上,也许我还是会存储它,以防我从数据挖掘的角度以某种奇怪的方式找到它。如果没有,ALTER TABLE DROP COLUMN 很快就会完成,在未来的某一天。
    • 我没有提到我打算存储一些数据用于统计收集目的。例如。我可能想知道哪些领域的登录次数最多,哪些端点和/或提供者是最常见的。 (我在问题中添加了一个列表项。)
    • 可信赖的端点:实际上我认为提供商可以比其他提供商“更值得信赖”。例如。谷歌验证谷歌邮件地址。当然,这不是 OpenID 规范的一部分。 -- 我认为我实际上已经读到,从 Google 端点获得的 Gmail 电子邮件地址保证归拥有声明 ID 的人所有。 -- 有un值得信赖的供应商吗?如果邪恶的 Mallory 设置提供程序来利用我使用的 OpenID 客户端中的一些已知错误怎么办?要获得对用户帐户的访问权限?
    • 提供者始终可以让自己访问用户的帐户,因为是否对用户进行身份验证由提供者决定。所以用户确实应该信任他的提供者。但是,您的网站不应该那么在意。至于收集统计数据——在这种情况下存储领域可能是一个好主意(尽管它与 OpenID 并不真正相关)。此外,虽然没有具体说明您不应该存储 OP-Local ID,但声明应该使用声明的标识符——这就是我的意思,尽管可能不是很清楚。
    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多