用于移动应用的REST API上的OAuth

zaf*_*s.m 5 rest asp.net-mvc mobile oauth asp.net-web-api

正在开发移动应用程序的后端,使用ASP.NET MVC 4 Web Api构建RESTful API。该应用程序将在iOS和Android上运行。我的用户将只能使用其Facebook帐户登录,并且只有在登录后,他们才能使用全部功能。

我在移动应用程序方面没有太多经验,这更多是一个设计问题:对于您应该由谁负责facebook身份验证,这两种方案(或也许是第三种方案)中的哪一种似乎更好?

  1. 移动客户端负责。无需访问后端,它直接与Facebook对话,允许用户输入其凭据,当它从Facebook获得令牌时,它将首次访问后端,并在每次请求中将令牌传递给后端。
  2. 后端API负责。移动客户端尝试从中访问资源。后端没有从客户端获得身份验证令牌,因此它将重定向到Facebook登录。用户输入凭据,facebook通过令牌将其回复给后端。然后,后端愿意回答有关所需资源的客户端响应。

当然,第二种情况意味着后端应使用DotNetOpenAuth之类的程序包来处理OAuth,而在第一种情况下,这些都发生在移动客户端中。

Pab*_*aro 1

我认为第一种方法更正确,因为它更好地模拟了 http 的无状态本质(它相当于传统的 http 身份验证方法,如基本身份验证)。您将在每次调用时将 facebook OAuth 令牌发送到 Web api。否则,服务器需要使用诸如 cookie 之类的机制以某种方式保留有关经过身份验证的用户的状态,这首先看起来不正确。仅当服务器需要使用需要身份验证的其他服务时,我才会使用服务器端身份验证,但它看起来确实像您这里的情况。