0

我已经使用 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 示例站点中的其他任何地方使用。

4

1 回答 1

1

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

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

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

于 2013-04-04T17:01:38.880 回答