gpt4 book ai didi

asp.net-mvc - 在 .NET 中使用 FB Connect/Google OAuth 登录

转载 作者:行者123 更新时间:2023-12-04 16:41:25 24 4
gpt4 key购买 nike

我想允许我的用户使用我的登录系统、FB Connect 或 Google 登录来登录我的网站。我不想只为这两个选项使用大型库(如 dotnetOpenAuth) - 那么我应该如何实现呢?

附加问题 - 我应该如何将 FB/Google 用户绑定(bind)到我的内部用户系统?我想允许同时使用它们登录(例如,我可以使用 FB 登录,然后使用 Google 登录,并且仍然绑定(bind)到同一个用户)。

我正在使用 ASP.NET MVC 2

谢谢!

最佳答案

如果您不喜欢使用大型库,例如 DotnetOpenAuth您将不得不手动实现 OpenID 协议(protocol)。 Here are the specifications您将需要遵守。

话虽如此,我建议您使用现有的库。 DotnetOpenAuth是.NET 的引用库。

还有一点说明:OpenId 和 OAuth 是不同的标准,旨在实现不同的目标:OpenId用于身份验证,而 OAuth是为了授权。

至于识别可以从不同 OpenID 提供商登录的同一用户,您将需要一些东西来识别它们。例如,使用 DotnetOpenAuth 在向 OpenID 提供者创建身份验证请求时,您可能需要 FullName 和电子邮件:

using (var openid = new OpenIdRelyingParty())
{
var request = openid.CreateRequest(Identifier.Parse(openid_identifier));

request.AddExtension(new ClaimsRequest
{
BirthDate = DemandLevel.NoRequest,
Email = DemandLevel.Require,
FullName = DemandLevel.Require
});
}

并使用此信息在您的内部数据库中识别用户。

所以这是这个想法:
  • 您创建一个内部数据库表,其中将包含您的站点用户。一开始这张 table 是空的。
  • 用户来到您的网站并希望使用它。他尚未通过身份验证,因此您向他索要他的凭据。您让他能够选择他的 OpenId 提供者并准备身份验证请求并将他重定向到他的提供者进行身份验证。
  • 用户通过他的提供商进行身份验证并被重定向回您的站点。此时您知道他声称的身份,并将用户添加到您的用户表中。现在用户可以随时返回您的站点并登录。
  • 您可以为经过身份验证的用户提供添加另一个 OpenId 提供程序的可能性(就像 StackOverflow 一样)。重要的想法是用户需要已经通过您的站点的身份验证才能执行此操作。因此,他可以输入他的替代 OpenId 提供者并被重定向到该提供者进行身份验证。一旦他进行身份验证,他就会被重定向回您的站点,并且由于他已经通过您的站点的身份验证,您可以将他的替代 OpenId 提供程序添加到用户表中。
  • 将处理来自 OpenId 提供程序的重定向的 Controller 操作应检查用户是否已通过您的站点的身份验证,如果没有,则使用 FormsAuthentication.GetAuthCookie 对其进行身份验证。并传递声称的身份。如果您的内部用户表中不存在声明的身份,则需要添加它。如果用户已经通过您的站点的身份验证,则意味着他正在向他的个人资料添加一个替代 OpenId 提供程序,因此您将更新您的用户表并将新的提供程序添加到其中。
  • 关于asp.net-mvc - 在 .NET 中使用 FB Connect/Google OAuth 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4706061/

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