【问题标题】:Purpose of ProviderUserName column in DotNetOpenAuth sampleDotNetOpenAuth 示例中 ProviderUserName 列的用途
【发布时间】:2013-03-26 12:35:34
【问题描述】:

我使用 Microsoft 预定义模板在 Visual Studio 中创建了一个 ASP.NET 网站。这是为了帮助我了解 ASP.NET 中的 OpenID。

在示例站点中包含的 SQL 数据库中,有一个名为 UsersOpenAuthAccounts 的表,其中包含一个名为 ProviderUserName 的列。

谁能告诉我这个专栏的目的?在我的测试中,这似乎存储了我登录 OpenID 站点时使用的用户名(例如,我的 Google 用户名 - 我的电子邮件地址)。但是,我还看到 ProviderUserId 列包含 IAuthenticationResponse.ClaimedIdentifier 值,例如

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

...这将用于根据 OpenID 提供程序识别用户以供将来请求。

因此,包含ProviderUserName 列有什么意义吗?它实际上并未在 Microsoft 示例站点中的其他任何地方使用。

【问题讨论】:

    标签: asp.net openid dotnetopenauth asp.net-4.5 google-openid


    【解决方案1】:

    ProviderUserName 是……一个坏主意(IMO)。

    OpenID Claimed Identifier 是检查返回用户的正确字符串。它降低了使用其他任何东西的安全性,包括电子邮件地址。如果您只对 OpenID 登录感兴趣,那么您可能只想丢弃 ASP.NET 提供的代码并直接使用 DotNetOpenAuth 的 OpenIdRelyingParty 并自己处理用户表。它将与您当前的代码一样简单,但没有不必要的列。

    ASP.NET 团队的附加列和外观类为您提供了混合 OpenID 登录和 OAuth 登录的能力,这使您也可以在您的站点上接受 Twitter 和 Facebook 帐户。 OAuth 的设计初衷不是一种身份验证协议,因此使用它的人必须自己构思用户名。为了使其全局唯一,它必须由发布该用户名的提供者作为前缀。所以你有 ProviderName(“twitter”或“google”)和一个 ProviderUsername,它是来自 OAuth 服务提供商的帐户的用户名(或用户 ID)。

    【讨论】:

    • "直接使用DotNetOpenAuth的OpenIdRelyingParty,自己处理users表"。是的,这是我的计划,因为我正在将 OpenId 功能集成到已经获得授权的现有应用程序中。感谢您提供非常明确的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多