我使用DotNetOpenAuth来识别Google用户。我目前正在检索他们的电子邮件地址并在我的数据库中保存该副本。但是,如果他们在Google帐户中更改了自己的电子邮件地址,该怎么办?然后我的副本无法再链接到他们的个人资料。
有没有办法通过DotNetOpenAuth唯一识别Google帐户?
答案 0 :(得分:2)
始终使用IAuthenticationResponse.ClaimedIdentifier
来唯一标识用户!
OpenID's security model is based on this design。在许多方面使用电子邮件地址不安全。任何提供商都可以发出肯定声明,声称用户拥有特定的电子邮件地址。 OpenID不会阻止OP对电子邮件地址撒谎,因此如果您只是使用电子邮件地址和用户密钥,那么您将对用户欺骗攻击持开放态度。即使OP不是不诚实的,你通常也不会相信它,因为你不知道OP是否验证了电子邮件地址,或者只是询问用户他们的电子邮件地址是什么。
即使您信任Google不撒谎,也有几个原因(其中一些可以减轻,但并不明显)不将电子邮件地址视为用户标识符。例如,Google允许用户更改其Google帐户背后的电子邮件地址。如果用户执行此操作然后返回到您的网站,则您的网站会将其标识为其他用户。更糟糕的是,如果其他用户后来声称他们的新Google帐户使用了回收的电子邮件地址,那么您的网站会将其识别为旧用户,并让新用户可以访问大量旧用户数据。
OpenID声明的标识符旨在避免所有这些麻烦。