7

我正在为服务开发一个公共 HTTP 后端 API。最重要的是,有一个让用户登录的网络应用程序,应该使用后端 API 来满足用户请求。API 支持 OAuth2,Web 应用程序是单页应用程序,带有大量 javascript。

我关心的是浏览器和网络应用程序应该如何与 API 对话。我找到了两种可能的方法。

浏览器直接使用API

当用户输入他的凭据进行登录时,Web 应用程序将它们传递给 API 并获得一个 OAuth access_token,它直接传递给浏览器并存储在一些 cookie 中。然后,对 API 的每个请求都是通过 JSONP 直接从浏览器发出的。当用户注销时,Web 应用程序会销毁会话。

浏览器与 Web 应用程序对话,后者与 API 对话

当用户输入他的凭据进行登录时,Web 应用程序会将它们传递给 API 并获得 OAuth access_token。使用用户创建会话,并且 access_token 存储在会话中。当浏览器需要与 API 通信时,它会通过 Web 应用程序。Web 应用程序在会话中使用访问令牌,调用 API,并将响应传递给浏览器。

两种方式在性能和安全性权衡方面各有利弊。你怎么看?

PS:据我所知,twitter 直接从浏览器使用它的公共 API,但通过会话 cookie 进行身份验证。这意味着他们的 API 也支持 cookie 会话?

4

1 回答 1

0

Dan,

The options you mentioned are the commonly used options. You have a presentation layer(UI) and a business layer(API) Which one to choose is a question of how many layers you want in your application based on the complexity and extendability you may need in future. You may want to introduce a middle layer if there is a big gap between your API layer and your UI. If the gap is high you will want a layer for the extra processing , abstracting the complexities and to keep your UI layer clutter free.

But if all you need, is a simple processing in your UI layer on top of API layer go for Option 1

于 2013-11-17T10:27:08.747 回答