我正在使用 DotNetOpenAuth 来识别 Google 用户。我目前正在检索他们的电子邮件地址并将其副本保存在我的数据库中。但是,如果他们更改 Google 帐户中的电子邮件地址怎么办?然后我的副本无法再链接到他们的个人资料。
有没有办法通过 DotNetOpenAuth 唯一标识一个 Google 帐户?
我正在使用 DotNetOpenAuth 来识别 Google 用户。我目前正在检索他们的电子邮件地址并将其副本保存在我的数据库中。但是,如果他们更改 Google 帐户中的电子邮件地址怎么办?然后我的副本无法再链接到他们的个人资料。
有没有办法通过 DotNetOpenAuth 唯一标识一个 Google 帐户?
始终使用IAuthenticationResponse.ClaimedIdentifier
来唯一标识用户!
OpenID 的安全模型就是基于这种设计。使用电子邮件地址在许多方面都是不安全的。任何提供商都可以发出肯定的断言,声称用户拥有特定的电子邮件地址。OpenID 不会阻止 OP 对电子邮件地址撒谎,因此如果您只使用电子邮件地址和用户密钥,那么您很容易受到用户欺骗攻击。即使 OP 没有试图不诚实,您通常也不能信任它,因为您不知道 OP 是否验证了电子邮件地址,或者只是询问用户他们的电子邮件地址是什么。
即使您相信 Google 不会撒谎,也有几个原因(其中一些可以减轻,但并不明显)不将电子邮件地址视为用户标识符。例如,Google 允许用户更改其 Google 帐户背后的电子邮件地址。如果用户这样做然后返回到您的网站,您的网站会将他们识别为不同的用户。更糟糕的是,如果另一个用户后来为他们的新 Google 帐户申请了一个回收的电子邮件地址,您的网站会将他们识别为旧用户,并让新用户访问大量旧用户数据。
OpenID 声明标识符旨在避免所有这些麻烦。