DotNetopenAuth是否适合获取用户凭据

本文关键字:用户 获取 是否 DotNetopenAuth | 更新日期: 2023-09-27 18:26:01

我想创建一个能读取Gmails邮件头的网站。

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

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

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

DotNetopenAuth是否适合获取用户凭据

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

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

根据您用于身份验证的提供商(谷歌、雅虎、MyOpenId、推特等),您可能会要求提供其他信息,如用户的电子邮件地址和姓名,但不能保证您会得到这些信息。

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

OpenID的意义正如您所说:将身份验证委托给另一个,这样您就不必处理密码(如果有密码的话)。

让用户登录谷歌,然后在谷歌访问用户数据的网站不仅仅使用OpenID。他们还使用了另一个授权协议。谷歌支持一个专有的OAuth和一个更常见的标准OAuth。OpenID和OAuth可以组合在一起,这样用户只需访问谷歌一次即可登录,然后您的网站就可以获得所需的访问权限(如果用户同意)。

如果你看一下DotNetOpenAuth示例OpenIdRelyingPartyWebForms''loginPlusOAuth.aspx,你会看到一个用户登录谷歌的例子,这样网站就可以下载用户的谷歌地址簿。这可以很容易地更改为包括做其他事情的权限(如读取电子邮件标题),但您需要阅读谷歌文档(GData)来了解使用什么范围和调用API来获取这些信息。

在任何情况下,你都不应该自己收集用户的谷歌密码。我怀疑这无论如何都会违反谷歌的服务条款。