gpt4 book ai didi

c# - DotNetOpenAuth ClaimedIdentifier 更改?我应该在数据库中存储什么来识别用户

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:18 26 4
gpt4 key购买 nike

this这样的问题还挺多的和 this所有声明都声称 ClaimedIdentifier 应该用于唯一标识每个用户。

成功登录后,我将 ClaimedIndentifier 存储在数据库中。每当用户登录时,我都会遍历我的记录以查找 ClaimedIdentifier。但是我注意到 ClaimedIdentifiers 正在改变。我应该在数据库中存储什么来识别我的用户。我正在使用 Google 帐户。这就是我检索将其存储到数据库中的方式

OpenIdRelyingParty rp = new OpenIdRelyingParty();
IAuthenticationResponse r = rp.GetResponse();
UserController.addUser(new UserController.User(r.ClaimedIdentifier.ToString(), 0));

最佳答案

这不是 DotNetOpenAuth 独有的问题。这是谷歌的行为。 Google 的 OpenID 提供商发布所谓的成对唯一标识符。只要您的 OpenID 领域不变,它们对于给定用户将始终相同

如果您在没有明确向 DotNetOpenAuth 的 OpenIdRelyingParty.CreateRequest 方法提供领域的情况下登录用户,DotNetOpenAuth 仅使用当前的 Web 应用程序根 URL。这是一个合理的默认设置,但如果您的网站可以通过多种方式访问​​(例如 http 和 https,或者有和没有 www. 主机名),那么默认域将根据用户碰巧使用的 URL 而有所不同到达您的登录页面。当领域发生变化时,Google 生成的声明标识符也会发生变化。

然后,解决方法是选择一个 领域(如果可以的话,最好选择具有 https 方案的领域)并将其显式提供给 CreateRequest 方法。您还必须确保同一方法的 return_to 参数与您选择的领域共享一个公共(public)根。例如,如果您选择的领域是: https://www.mysite.com/然后你必须确保你的 return_to 是基于那个的。就像是: https://www.mysite.com/login.aspx

如果用户浏览到http://mysite.com/login.aspx ,那将是 return_to 的默认 URL,它与您选择的领域不匹配。

总的来说,它可能看起来像这样:

var request = relyingParty.CreateRequest(
"https://www.google.com/accounts/o8/id",
"https://www.mysite.com/",
new Uri("https://www.mysite.com/login.aspx"));

请注意,您的 return_to 不需要每个请求都需要与领域完全相同。因此,您可以有多个登录页面 URL,每个登录页面 URL 都将其自己的 URL 指定为 return_to 参数。但是所有 return_to URL 都必须基于领域 URL。

随着该更改始终应用于您允许用户登录的所有位置,您应该会看到来自 google 的一致声明的标识符。不幸的是,您已经使用其他领域获得的声明标识符与您在此修复后获得的标识符不匹配。如果您需要合并这些用户帐户,并且您有用户的电子邮件地址,您可以尝试基于此进行合并。但要非常注意这一步。只有当您确定您存档的电子邮件地址属于这些用户时,才能安全地完成此操作。如果您在用户登录时通过 OpenID 获得了这些电子邮件地址,并仔细检查它来自您信任的 OpenID 提供商并验证了电子邮件,那么您可能没问题。请注意,仅将 Google OP 标识符硬编码到 CreateRequest不能保证只有 Google 用户登录。为确保这一点,您必须检查当肯定断言出现时,IAuthenticationResponse.Provider.Uri 属性匹配 https://www.google.com/accounts/o8/ud

关于c# - DotNetOpenAuth ClaimedIdentifier 更改?我应该在数据库中存储什么来识别用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14617078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com