Rom*_*man 5 openid asp.net-mvc oauth-2.0
我想允许我的用户使用我的登录系统或FB Connect或Google Login登录我的网站.我不想只为这两个选项使用大型库(如dotnetOpenAuth) - 那么我该如何实现呢?
其他问题 - 我应该如何将FB/Google用户绑定到我的内部用户系统?我想允许使用它们进行登录(例如,我可以使用FB登录,然后使用Google登录,并且仍然绑定到同一个用户).
我正在使用ASP.NET MVC 2
谢谢!
Dar*_*rov 15
如果您不喜欢使用像DotnetOpenAuth这样的大型库,则必须手动实现OpenID协议.以下是您需要遵守的规范.
话虽如此,我建议您使用现有的库.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
});
}
Run Code Online (Sandbox Code Playgroud)
并使用此信息来标识内部数据库中的用户.
所以这就是这个想法:
FormsAuthentication.GetAuthCookie并传递声明的身份对其进行身份验证.如果您的内部用户表中不存在声明的身份,则需要添加它.如果用户已经对您的站点进行了身份验证,则意味着他正在为其配置文件添加备用OpenId提供程序,因此您将更新用户表并向其添加新提供程序.| 归档时间: |
|
| 查看次数: |
4085 次 |
| 最近记录: |