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

Posted

技术标签:

【中文标题】oAuth ASP.NET 成员资格提供程序【英文标题】:oAuth ASP.NET Membership Provider 【发布时间】:2010-11-15 14:14:26 【问题描述】:

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

谢谢。

【问题讨论】:

【参考方案1】:

自从你发布这个问题以来,图书馆已经走过了漫长的道路......我已经开始使用这个库来进行 Oauth - 它已经实现了 Facebook、Twitter、PayPal 和 Google+ 的集成:

OAuth2 Social Logins - Facebook, Google, Twitter, PayPal - ASP.NET MVC C# open source library

此外,如果向后兼容性对您来说不是问题,Microsoft 已开始支持流行的 OAuth 提供程序...请参阅这篇文章:

Microsoft OAuth2 OWIN/Katana integration with Facebook and Google+

【讨论】:

【参考方案2】:

我不确定您要查找的是 OAuth。

OAuth 用于通过使用令牌来委派授权。根据您的操作,您有两种情况:

    您的应用程序想要使用一些由提供商(例如 twitter 或 google)托管的用户数据。在这种情况下,您的应用程序将成为消费者 - 简而言之,用户需要登录并同意授权您的应用程序访问他们在提供程序上的数据,并且您将获得一个可以使用的访问令牌访问这些受保护的资源。 或者,您有一个应用程序,用户登录等这些服务的用户凭据。

有关 OAuth 的更多信息 - 请查看 OAuth.Net website。目前有 3 种可用于 .Net 的 OAuth 实现。

DevDefined.OAuth Madgex OAuth.Net DotNetOpenAuth

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

我猜您真正需要的是 OpenId,即您使用 *** 本身验证自己的方式。我建议阅读 *** OpenId case study here 并且可能是 .Net 的最佳 OpenId 实现目前是 DotNetOpenAuth 项目的一部分(正式名称为 DotNetOpenId,项目 is here 的谷歌代码站点)。

【讨论】:

现在可以在这里找到 DotNetOpenAuth 的评论:dotnetopenauth.net @bittercoder 我认为你用这个答案让人们失望了。虽然大多数人确实使用 oAuth 来授权 3rd 方 API,但考虑使用例如 SSO 自定义成员资格 asp.net 解决方案并非不合理。 Google Apps 域,其中授权令牌用作 asp.net 身份验证 (cookie) 令牌,以便可用于对 Google API 的后续回调。我有这种情况,我的 MVC 应用程序正在我的 google apps.domain 中调用 api。 oAuth 既是身份验证又是授权。 此响应是在 OAuth 2 以当前形式存在之前创建的(3 多年前!) - 我会说当时它是正确的。这些天来,我认为世界已经发生了翻天覆地的变化,大多数人对 OpenID 一无所知,将 OAuth 视为一种身份验证机制,甚至不一定了解 OAuth 背后的许多核心思想(委托身份验证/安全 API 访问的方式)。 我还要指出,这些天这些建议通常是无关紧要的,因为微软为 ASP.Net 的 v4.5 提供了对 OAuth 和 OpenID 的“盒装”支持 - 根据他们的说法“OAuth 和OpenID 允许您创建允许用户使用来自其他站点的凭据登录的站点,包括 Google、Yahoo、Facebook、Twitter 和 Windows Live。” - 我觉得这会破坏/沟通不畅,以这种方式使用 OAuth 只是 OAuth 的一小部分......虽然在某些情况下非常有用:)【参考方案3】:

你应该看看https://github.com/rustd/ASPNETTemplates,它有 asp.net 的默认项目模板,它演示了使用 OAUth 登录,然后扩展通用提供程序(webforms 模板,但你可以对 mvc 做同样的事情)来做角色等

【讨论】:

【参考方案4】:

我想你可能正在寻找DotNetOpenAuth。我没有使用过它,所以我不能确定它是否包含会员提供程序,但我希望它会包含。如果没有,它是开源的,所以无论如何都应该帮助你做你想做的事情。

【讨论】:

以上是关于oAuth ASP.NET 成员资格提供程序的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 和 ASP.NET 成员资格模板提供程序

如何为 ASP.NET MVC 2 创建自定义成员资格提供程序?

使用成员资格提供程序的 ASP.NET MVC 4 Web API 身份验证

ASP.Net MVC 2 中自定义成员资格提供程序中的角色分组

在 WCF 服务中使用 ASP.NET 成员资格提供程序身份验证

部署到 Azure 应用服务时,Asp.net 成员资格提供程序无法连接到本地 SQL Server