12

我正在使用 RESTful API 将服务器端 Web 应用程序转换为单页 JavaScript 应用程序。目前。用户可以使用 Facebook、Twitter、Google 等或通过电子邮件和密码进行身份验证。如何允许在 RESTful API 上运行相同形式的身份验证?我猜它看起来像这样:

  1. 在客户端向提供者进行身份验证。
  2. 从 Oauth 响应中获取一些内容并将其传递给我服务器上的 API 以换取访问令牌。
  3. 对后续 API 调用使用基于令牌的身份验证。

我在正确的轨道上吗?如果是这样:

  1. 是否有一个 JS 库可以处理多个提供程序,或者每个提供程序都需要包含 Facebook 的 JS SDK 之类的东西?
  2. 生成令牌的 API 应该是什么样子?特别是,我需要 Oauth 提供者提供什么以及如何在服务器上验证它?
4

2 回答 2

7

我建议生成 API 访问密钥或专门为您的 API 使用单独的 OAuth 流。从概念上讲,您需要将创建帐户的行为与您的服务分开,并连接远程帐户。您可能会完成您所描述的内容,但这会令人困惑。

为了使客户端中的 OAuth 更容易,请查看oauth.io

于 2013-08-05T21:16:31.927 回答
5

您可以更轻松地在服务器端而不是在客户端处理针对身份提供者的身份验证过程。因此,您的 REST 服务器应该支持它自己的身份验证方法(也可以基于 OAuth),并将其传输给第三方提供商。所以流程看起来像这样:

  1. 从客户端 (JS) 启动登录过程 - 调用您的 REST 身份验证端点,指定您要登录的网络(例如 myserver.com/login?provider=facebook)。

  2. 在服务器端处理登录过程 - 重定向到提供者登录端点,接收登录回调,处理响应(获取 facebook 会话令牌等)。

  3. 发出您自己的用户会话(或令牌,如果您正在执行 OAuth),并回复您的 JS 客户端。

有几个社交登录库可以帮助您,请查看http://hybridauth.sourceforge.net/用于 PHP 或http://code.google.com/p/socialauth/用于 Java。

还有一些商业解决方案可以让你的生活更轻松(我在Gigya工作,所以我有偏见),但前提是你有预算。

于 2013-08-06T18:10:27.643 回答