DotNetopenAuth很适合获取用户凭据吗?

时间:2012-02-28 21:29:00

标签: c# dotnetopenauth

我想创建一个读取一个Gmails标题的网站。

如果我使用dotNetopenAuth进行身份验证 - 我最终会获得用户用户和密码以满足我的应用程序需求吗?

似乎答案是否定的 - 出于安全原因这就是OpenId的原因。

但是,我知道这样做的网站。怎么样?

2 个答案:

答案 0 :(得分:2)

如果您使用OpenID或OAuth等协议,则无法访问用户的用户ID或密码。

相反,您将收到用户的唯一标识符,除了告诉您受信任的提供商已验证用户已成功登录其提供商的帐户时,这只会告诉您。您的工作是将该唯一标识符与您的应用程序的用户记录相匹配。

根据您用于身份验证的提供商(Google,Yahoo,MyOpenId,Twitter等),您可以请求其他信息,例如用户的电子邮件地址和姓名,但您无法保证得到这些信息。

但在任何情况下,您都不会看到他们的密码。如果您需要,那么您必须编写应用程序以使用自己的身份验证提供程序,例如内置ASP.NET Membership provider

答案 1 :(得分:1)

OpenID就像你说的那样:将身份验证委托给另一个人,这样你就不必处理密码(如果有的话)。

让用户使用Google登录,然后在Google上访问该用户数据的网站不仅仅使用OpenID。他们还使用了其他授权协议。 Google支持专有的和更常见的标准OAuth。可以组合OpenID和OAuth,以便用户只访问Google一次以登录,然后您的网站获得所需的访问权限(如果用户批准)。

如果您查看DotNetOpenAuth示例OpenIdRelyingPartyWebForms \ loginPlusOAuth.aspx,您将看到用户登录Google的示例,并通过这样做,让网站能够下载用户的Google地址簿。这可以很容易地更改为包含执行其他操作的权限(例如阅读电子邮件标题),但您需要阅读Google文档(GData)以了解要使用的范围以及API来调用以获取此信息

在任何情况下,您都不应自行收集用户的Google密码。我怀疑这无论如何都违反了Google的服务条款。