Asp.net mvc 在.NET中使用FB Connect/Google OAuth登录
我想允许我的用户使用我的登录系统或FB Connect或Google登录登录我的网站。我不想只为这两个选项使用大型库(比如dotnetOpenAuth)——那么我应该如何实现这一点呢 附加问题-我应该如何将FB/Google用户绑定到我的内部用户系统?我想允许使用这两种方式登录(例如,我可以使用FB登录,然后使用Google登录,并且仍然绑定到同一个用户) 我正在使用ASP.NETMVC2Asp.net mvc 在.NET中使用FB Connect/Google OAuth登录,asp.net-mvc,openid,oauth-2.0,Asp.net Mvc,Openid,Oauth 2.0,我想允许我的用户使用我的登录系统或FB Connect或Google登录登录我的网站。我不想只为这两个选项使用大型库(比如dotnetOpenAuth)——那么我应该如何实现这一点呢 附加问题-我应该如何将FB/Google用户绑定到我的内部用户系统?我想允许使用这两种方式登录(例如,我可以使用FB登录,然后使用Google登录,并且仍然绑定到同一个用户) 我正在使用ASP.NETMVC2 谢谢 如果您不喜欢使用像这样的大型库,则必须手动实现OpenID协议。你将需要遵守 尽管如此,我还是建议您
谢谢 如果您不喜欢使用像这样的大型库,则必须手动实现OpenID协议。你将需要遵守 尽管如此,我还是建议您使用现有的库
DotnetOpenAuth
是.NET的参考库
还有一个小提示:OpenId和OAuth是不同的标准,旨在实现不同的功能:OpenId
用于身份验证,而OAuth
用于授权
至于识别可以从不同OpenID提供者登录的同一用户,您需要一些东西来识别他们。例如,使用DotnetOpenAuth,在创建对OpenID提供程序的身份验证请求时,您可能需要全名和电子邮件:
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
});
}
并使用此信息识别内部数据库中的用户
这就是我的想法:
FormsAuthentication.GetAuthCookie
并传递声明的身份对其进行身份验证。如果您的内部用户表中不存在声明的标识,则需要添加该标识。如果用户已经通过您站点的身份验证,则意味着他正在向其配置文件中添加替代OpenId提供程序,因此您将更新用户表并向其中添加新的提供程序也许你知道谷歌登录系统的一些小实现?谢谢。我只是担心它太复杂,而且100%可靠。是吗?:)@罗曼,它是可靠的,但确实不太容易设置
DotnetOpenAuth
附带了许多示例,而OpenIdRelyingPartyMvc
示例将向您展示将OpenId集成到现有ASP.NET MVC站点的基本步骤。认证过程分为两步:首先,您显示一个登录表单,提交该表单时,将创建一个OpenId认证请求给相应的提供者。然后,用户将被重定向,一旦他通过身份验证,他将被重定向回您的站点,您可以在那里检索他声明的身份,然后只需使用FormsAuthentication.GetAuthCookie
。非常感谢您提供的详细答案。这帮了大忙!