1

我需要将外部登录支持(Facebook,可能还有其他)集成到 Web 项目中。默认的 MVC4 模板可以正常工作,我可以与 Facebook 交互。

问题在于SimpleMembership拖累的额外数据库行李。已经有一个自定义成员资格提供程序和模式,我不想看到那些丑陋的webpages_Membership等表。外部身份验证模块应该适应我的环境,而不是相反。

我整天都在寻找方法来定制开箱即用的东西,但似乎不可能。

我是否需要推出自己的口味OAuthWebSecurity才能得到这个?

该项目目前处于 VS2012 领域,但很快将转移到 VS2013。有什么可以让 OAuth 明智地让我的情况受益于迁移吗?我也试图寻找一些关于这一点的见解,但我在任何地方都读到“哦,看看这个魔法盒让一切变得多么简单,我们不会进一步透露”。

4

1 回答 1

2

坦率地说,当涉及到 Oauth2 身份验证时,我不知道默认的 MVC4 项目提供了什么,但流程确实是基本的。让我先解释一下,假设您通过电子邮件匹配用户(这非常有用):

  1. 您的网站重定向到 Facebook,要求使用选定的个人资料进行身份验证
  2. Facebook 验证您的用户并使用唯一代码重定向回您的应用程序
  3. 您的服务器使用代码获取所谓的访问令牌(长字符串)
  4. 使用访问令牌,您可以调用各种 Web api,包括返回用户电子邮件、姓名和名字的方法
  5. 使用返回的信息,您可以在数据库中使用相同的电子邮件搜索用户
  6. 您使用找到的用户的用户名手动发出表单 cookie

流程非常清晰,可以使用手动重定向和 HttpClient 手动实现它来调用配置文件 Web api。但是,您实际上不必这样做。

有两种可能的方法。

首先,您设法驯服了提供的 mvc-oauth 流程,以便您在上述流程的第 4 步进行挂钩。您无需让流程自动从内置数据库表中选择用户,而是手动进行。

其次,您切换到 DotnetOpenAuth 库,它提供了清晰的 API,并且不依赖于任何内置的基础设施元素。他们有清晰的、可立即使用的示例,您下载他们的示例并立即拥有一个可运行的应用程序,该应用程序执行 facebook 身份验证并读取 facebooks api。

我推荐第二种方法,当您有特定的 DotnetOpenAuth 问题时可以回来。该库是常用的,有关 facebook 集成等基本案例的问题应该由某人回答(如果我发现你的问题,包括我自己)。

于 2013-10-25T17:52:49.707 回答