C# DotNetOpenAuth-如何唯一地识别Google用户?

C# DotNetOpenAuth-如何唯一地识别Google用户?,c#,asp.net-mvc,dotnetopenauth,C#,Asp.net Mvc,Dotnetopenauth,我正在使用DotNetOpenAuth识别谷歌用户。我目前正在检索他们的电子邮件地址,并将其副本保存在我的数据库中。但是,如果他们更改了Google帐户中的电子邮件地址,该怎么办?那么我的副本就不能再链接到他们的个人资料了 有没有办法通过DotNetOpenAuth唯一标识Google帐户?始终使用iaAuthenticationResponse.ClaimedIdentifier来唯一标识用户 。使用电子邮件地址在许多方面都是不安全的。任何提供者都可以发出肯定的断言,声称用户拥有特定的电子邮件

我正在使用DotNetOpenAuth识别谷歌用户。我目前正在检索他们的电子邮件地址,并将其副本保存在我的数据库中。但是,如果他们更改了Google帐户中的电子邮件地址,该怎么办?那么我的副本就不能再链接到他们的个人资料了


有没有办法通过DotNetOpenAuth唯一标识Google帐户?

始终使用
iaAuthenticationResponse.ClaimedIdentifier
来唯一标识用户

。使用电子邮件地址在许多方面都是不安全的。任何提供者都可以发出肯定的断言,声称用户拥有特定的电子邮件地址。OpenID不能防止OP在电子邮件地址上撒谎,因此如果您只使用电子邮件地址和用户密钥,那么您将非常容易受到用户欺骗攻击。即使OP没有试图不诚实,你也不能普遍信任它,因为你不知道OP是否验证了电子邮件地址,或者只是问用户他们的电子邮件地址是什么

即使你相信谷歌不会撒谎,也有几个理由(其中一些可以缓解,但并不明显)不将电子邮件地址作为用户标识符。例如,谷歌允许用户更改其谷歌账户后面的电子邮件地址。如果用户这样做,然后返回到您的网站,您的网站会将他们标识为不同的用户。更糟糕的是,如果另一个用户后来为他们的新谷歌账户申请了一个可回收的电子邮件地址,你的网站会将他们识别为老用户,并让新用户访问一堆老用户数据


OpenID声明的标识符是为了避免所有这些麻烦而设计的。

你是说一个用户完全改变了他们的谷歌用户名吗?我不认为你可以这样做,仍然被认为是同一个谷歌用户。看,他们的帐户电子邮件确实无法更改。但是如果我收到联系电子邮件呢?如果我(例如)改为使用Flickr进行身份验证,那么电子邮件的更改是可能的呢?哦,好的。那么您可能应该存储ClaimedIdentifier。请看,如果您可以详细说明原因或提供更多信息的参考,这将非常有用。我已根据要求添加了一些原因和指向OpenID2.0规范相关部分的链接。