oAuth ASP.NET成员资格提供程序

Eri*_*bia 37 asp.net openid asp.net-mvc oauth

是否有任何建议的资源来实现使用oAuth的自定义成员资格提供程序?目标是让用户使用现有的oAuth凭据登录我的ASP.NET MVC应用程序.用户通过身份验证后,我想利用内置的ASP.NET授权功能.

谢谢.

Bit*_*der 45

我不确定你要找的是OAuth.

OAuth用于通过使用令牌委派授权.根据您正在做的事情,您有两种情况:

  1. 您的应用程序想要使用由提供商托管的一些用户数据(比如twitter或google).在这种情况下,您的应用程序将成为消费者 - 简而言之,用户需要登录并同意授权您的应用程序访问提供程序上的数据,并且您将获得可以使用的访问令牌获得对这些受保护资源的访问权限.
  2. 或者,您有一个应用程序,具有登录等用户.并且您希望提供(即您是提供者)访问您的用户的某些受限信息到第三方应用程序(消费者)而不会将您的用户凭据暴露给那些服务.

有关OAuth的更多信息 - 请访问OAuth.Net网站.目前有3个OAuth实现可用于.Net.

由于OAuth的工作方式,我无法想象你如何拥有一个"OAuth"成员资格提供者 - 它真正用于保护API,并且通常的目标是在更细粒度的级别委派授权,即为消费者应用程序提供访问权限只是一个用户的地址簿数据,而不让他们访问电子邮件档案,他们的日历等 - 这不适合基于会员/角色的安全模型.

我猜你真正想要的是OpenId,即你使用Stackoverflow本身验证自己的方式.我建议阅读#1 这里的OpenID的案例研究,可能对于.NET的最好的OpenID项目正在实施的一部分DotNetOpenAuth项目(这正式称为DotNetOpenId,谷歌的代码网站项目就在这里).

  • @bittercoder我认为你把这个答案放在了一边.虽然大多数人都使用oAuth来授权第三方API,但考虑使用例如Google Apps域的SSO自定义成员asp.net解决方案并不合理,其中授权令牌用作asp.net身份验证(cookie)令牌,以便它可以用于后续回调到Google API.我确实有这种情况,我的MVC应用程序在我的谷歌apps.domain中调用apis.oAuth是身份验证和授权. (5认同)
  • 我还要指出,这些天这些建议通常是无关紧要的,因为微软在 ASP.Net v4.5 的“盒子里”提供了对 OAuth 和 OpenID 的支持——根据他们的说法“OAuth 和 OpenID 让你创建允许用户的网站使用来自其他网站的凭据登录,包括 Google、雅虎、Facebook、Twitter 和 Windows Live。” - 我觉得这削弱/不好传达以这种方式使用 OAuth 只是 OAuth 的很小一部分......尽管在某些情况下非常有用:) (2认同)

Cod*_*nis 6

我想你可能正在寻找DotNetOpenAuth.我没有使用它,所以我无法确定它是否包含会员提供商,但我希望它确实如此.如果没有,它是开源的,所以应该帮助你完成你想要做的事情.