2

我正在开发一个由几个组件组成的系统:

  1. RESTful 服务- 必须可从移动设备访问的公共 API。(ASP.NET 网络 API)
  2. ASP.NET MVC 4 网站,也使用这些服务。
  3. 移动应用程序

Site\app 用户应该能够使用他们的 Facebook 帐户登录那里。我目前对该过程的理解如下:

  1. site\app 向 Facebook 发出请求以获取访问令牌。一旦用户确认将他\她的详细信息传递给我的应用程序,我的站点\应用程序就会收到身份验证令牌。

  2. site\app 将令牌传递给我的 RESTful API

  3. API 通过向 facebook 发送带有密钥的请求来验证令牌。然后用户可以被创建\认证,api为用户生成访问令牌。每次用户尝试访问 API 时,我都没有看到任何发出请求的理由。

我正在考虑实现这一点的最佳方法。ASP.NET MVC 4 具有开箱即用的 OAuth 支持,但它仅在您在 MVC 应用程序中执行所有操作时才有效。DotNetOpenAuth 已内置 FacebookClient 类,但它假设相同的想法。出于安全原因,我不想在 API 之外公开秘密。

作为最后的选择,我们可以通过直接向 facebook 发出请求来实现这一点,但我想知道是否有更好的选择?DotNetOpenAuth 可以用于这两个步骤的过程吗?

4

1 回答 1

0

Asp.Net Web api 支持外部登录,这是通过 Owin 管道支持的。所有流行的社交网络都有提供程序,并且可以轻松地为您的 api 设置。在这种情况下,应用程序的流程如下

  1. 该站点/应用程序向您的 api 请求支持的登录提供程序(您的 api 可以支持多个社交网络,并且还具有自己的用户名/密码登录)。
  2. 如果用户选择通过 facebook 登录,那么我们会向 api 发出请求,这会将用户重定向到 facebook 登录。
  3. 成功登录后,facebook 令牌将被发送到 api,api 将用自己的令牌包装这个 facebook 令牌,并将其连同电子邮件、姓名等其他详细信息一起发送回站点/应用程序。
  4. 使用从 facebook 获得的电子邮件/详细信息,我们使用 api 注册用户。

您可以在此处找到实现相同的示例

于 2014-10-25T15:13:17.933 回答