我想允许我的用户使用我的登录系统或FB Connect或Google Login登录我的网站。我不想只为这两个选项使用大型库(如dotnetOpenAuth) - 那么我该如何实现呢?
其他问题 - 我应该如何将FB / Google用户绑定到我的内部用户系统?我想允许使用它们登录(我可以使用FB登录,然后使用Google登录,并且仍然绑定到同一个用户)。
我正在使用ASP.NET MVC 2
谢谢!
答案 0 :(得分:15)
如果您不喜欢使用像DotnetOpenAuth这样的大型库,则必须手动实施OpenID协议。 Here are the specifications你需要遵守。
话虽如此,我建议您使用现有的库。 DotnetOpenAuth
是.NET的参考库。
还有一个小小的评论:OpenId和OAuth是不同的标准,旨在实现不同的目标:OpenId
用于身份验证,OAuth
用于授权。
就识别可能从不同OpenID提供商登录的同一用户而言,您需要一些东西来识别它们。例如,在向OpenID提供程序创建身份验证请求时使用DotnetOpenAuth,您可能需要FullName和Email:
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提供程序,因此您将更新用户表并向其添加新提供程序。