【问题标题】:How do I identify OpenID username when identifier has no username in it?当标识符中没有用户名时,如何识别 OpenID 用户名?
【发布时间】:2011-02-03 06:09:04
【问题描述】:

我正在尝试在我的网站上实施 openID 并通读 Plaxo 和关于 SO 的问题。我目前能够使用这些库对我的用户进行身份验证。但我注意到一些提供商喜欢

我正在尝试实现一个类似于 Plaxo 的系统,我将在其中建立多对一的帐户关系。但是如何区分使用上述 openID url 的用户呢?我什至看到有单独的谷歌和谷歌个人资料。那么,在用户不提供用户名或者我应该说唯一的 openID 的情况下,他们如何识别用户?

【问题讨论】:

    标签: openid google-openid


    【解决方案1】:

    OpenID 的设计目的不是为了在提供程序上公开用户的“用户名”。为您提供了一个经过验证的 URL,作为他们的身份,但该 URL 应被视为不透明的字符串。

    如果需要,则需要手动提示用户或使用属性交换(这两种方法都不安全,顺便说一句)。

    【讨论】:

    • +1。然而,小的更正:属性交换与 Sreg 用户名数据一样安全(两者都可以签名)
    • 所以我将使用服务器作为身份验证的字符串。
    【解决方案2】:

    当您收到 openid 回复时,会有一个参数“openid.identity”,每个帐户都是唯一的。这是一个很长的半随机字符串,所以对显示没有用处:

    https://www.google.com/accounts/o8/id?id=AItOawnlHWwIas84v37...
    

    如果提供了这些属性,您可以尝试根据“昵称”字段或电子邮件地址的本地部分生成一个漂亮的可显示用户名。最后的可能性是询问用户。

    【讨论】:

    • 例如 StackOverflow 会生成一个像 user12345 这样的假用户名,而不是要求用户在他们的个人资料中更改它。
    • 我需要 openid.identity 还是 openid.claimed_id?互联网上的许多人都说使用claimed_id 而不是身份。一个例子:http://stackoverflow.com/a/3364025/1114457
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 2017-12-23
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多