适用于移动应用的REST API OAuth

时间:2013-03-26 21:58:47

标签: asp.net-mvc rest mobile oauth asp.net-web-api

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

我对移动应用程序没有多少经验,这更像是一个设计问题:两个场景中的哪一个(或者可能是第三个?)似乎更好地设计了谁应该负责facebook身份验证:< / p>

  1. 移动客户端负责。在没有访问后端的情况下,它直接与Facebook通话,允许用户输入他的凭证,当它从Facebook获得令牌时,它首次点击后端,在每个请求中将令牌传递给它。
  2. 后端API负责。移动客户端尝试从中访问资源。后端没有从客户端获取身份验证令牌,因此它重定向到Facebook登录。用户输入凭据并且facebook回复传递令牌的后端。然后,后端愿意回答客户对所需资源的回应。
  3. 当然,第二种情况意味着后端应该使用像DotNetOpenAuth这样的包处理OAuth,而在第一种情况下,这些都发生在移动客户端。

1 个答案:

答案 0 :(得分:1)

我认为第一种方法更正确,因为它更好地模拟了http的无状态特性(它将等同于传统的http auth方法,如Basic Auth)。您将在每次通话时将facebook OAuth令牌发送到web api。否则,服务器需要使用诸如cookie之类的机制以某种方式保持关于经过身份验证的用户的状态,这在第一时间看起来不正确。我只会在服务器需要使用需要身份验证的其他服务时使用服务器端身份验证,但它确实如此。