5

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

我对移动应用程序没有太多经验,这更像是一个设计问题:对于谁应该负责 facebook 身份验证,这两种场景中的哪一种(或者可能是第三种?)对您来说似乎更好:

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

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

4

1 回答 1

1

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

于 2013-03-27T12:51:03.650 回答