oAuth ASP.NET Membership Provider

38
有没有推荐的资源可以实现一个自定义的会员提供程序,该提供程序使用oAuth?目标是让用户使用其现有的oAuth凭据登录我的ASP.NET MVC应用程序。用户通过认证后,我想利用内置的ASP.NET授权功能。

谢谢。
4个回答

47
我不确定你所寻找的是OAuth。
OAuth用于通过令牌进行授权委托。根据你的需求,有两种情况:
1.你的应用程序想要使用由提供者(如Twitter或Google)托管的一些用户数据。在这种情况下,你的应用程序将成为使用者 - 简而言之,用户需要登录并同意授权你的应用程序访问提供者上他们的数据,然后你将获得一个可以用来访问受保护资源的访问令牌。
2.或者你有一个应用程序,有用户登录等功能。你想向第三方应用程序提供(即你是提供者)访问你的用户的某些受限信息,而不会向那些服务透露你的用户凭据。
要了解有关OAuth的更多信息,请查看OAuth.Net网站。目前有3个面向.NET的OAuth实现可用:
- DevDefined.OAuth - Madgex OAuth.Net - DotNetOpenAuth 由于OAuth的工作方式,我无法想象你如何拥有一个“OAuth”成员资格提供程序。它真的旨在用于保护API,并且通常的目标是以更细粒度的级别委派授权,即向使用者应用程序授予访问用户地址簿数据而不让其访问电子邮件归档、日历等 - 这与成员/角色基于安全模型不太兼容。我猜你真正需要的是OpenId,即你在Stackoverflow上进行身份验证的方式。建议阅读Stackoverflow的OpenId案例研究这里,目前最好的.Net OpenId实现可能是DotNetOpenAuth项目的一部分(该项目以前称为DotNetOpenId,该项目的Google代码网站在此处)。

只是留下一条评论,DotNetOpenAuth现在可以在这里找到:http://www.dotnetopenauth.net/ - Peder Rice
5
@bittercoder我认为你的回答让人感到不满意。虽然大多数人主要使用oAuth来授权第三方API,但考虑到使用例如Google Apps域的SSO自定义成员资格asp.net解决方案是合理的,其中授权令牌用作asp.net身份验证(cookie)令牌,以便可以用于后续对Google API的回调。我正好遇到这种情况,我的MVC应用程序正在调用我的Google Apps域中的API。OAuth既是认证也是授权。 - jenson-button-event
1
这个回应是在 OAuth 2 现在的形式出现之前创建的(3 年前!)- 我会说在那时它是正确的。如今,我认为世界已经翻转了,大多数人对 OpenID 不了解,认为 OAuth 是一种身份验证机制,甚至不知道 OAuth 背后许多核心思想(委托身份验证/安全访问 API 的方式)。 - Bittercoder
2
我还要指出,这些建议在现在已经不太相关了,因为微软在ASP.Net的v4.5版本中已经提供了对OAuth和OpenID的支持。他们在宣传中称:"OAuth和OpenID可以让您创建允许用户使用其他网站的凭据进行登录的网站,包括Google、Yahoo、Facebook、Twitter和Windows Live。"我觉得这种说法有点削弱了或者说没有很好地阐述OAuth的用途,尽管在某些情况下确实非常有用 :) - Bittercoder

6

我认为你可能正在寻找DotNetOpenAuth。我没有使用过它,所以无法确定它是否包含成员提供程序,但我认为它应该包括。如果没有,它是开源的,因此应该可以帮助你实现你想要做的事情。


2
你应该看一下https://github.com/rustd/ASPNETTemplates,它包含了asp.net的默认项目模板,演示了如何使用OAUth进行登录,并扩展通用提供程序(webforms模板,但你也可以为mvc做同样的事情),以实现角色等功能。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接