在MVC / WAPI中使用OAuth和自定义数据库架构

时间:2013-10-25 15:11:46

标签: c# oauth

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

问题在于SimpleMembership拖动的额外数据包行李。已经有一个自定义成员资格提供程序和架构,我不希望看到那些丑陋的webpages_Membership等表。外部auth模块应该适应我的环境,而不是相反。

我整天都在搜索,想方设法自定义开箱即用的东西,但似乎不太可能。

我是否需要将自己的OAuthWebSecurity风格用于随处获取?

该项目目前处于VS2012领域,但很快将转向VS2013。有没有什么可以让我的情况从迁移中受益?我试图寻找一些有关这方面的见解,但在我读到的任何地方“哦,看看这个魔术盒的一切都很容易,我们不会再透露了。”

1 个答案:

答案 0 :(得分:2)

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

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

    流程非常清晰,可以使用手动重定向和HttpClient手动实现它来调用配置文件web api。但是,你真的不需要。

    有两种可能的方法。

    首先,你以某种方式设法驯服提供的mvc-oauth流程,以便你在上面的流程的第4步中挂钩。不是让流程从内置数据库表中自动选择用户,而是手动完成。

    其次,您切换到DotnetOpenAuth库,它提供了一个清晰的API,并且不依赖于任何内置的基础结构元素。他们有清晰,随时可用的示例,您下载他们的示例,并立即有一个工作的应用程序,进行Facebook身份验证和阅读facebooks apis。

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