OAuth如何处理授权?

时间:2014-08-20 10:45:43

标签: performance rest architecture oauth-2.0

我们使用RestEasy实现了RESTful API。现在我们计划构建自己的OAuth实现,并将其与我们的Rest API集成。

我不完全了解OAuth如何处理对API的每个请求的授权。我的理解如下:

  1. 在进行任何REST API调用之前,OAuth服务器会对用户进行身份验证。
  2. 每个REST API调用都将包含一个令牌。 REST API服务器使用OAuth服务器验证此令牌。如果令牌有效,则服务器将返回响应。
  3. 这会对性能产生影响,因为我们正在使用第二台服务器验证每个API请求的令牌。这种理解是否正确?

1 个答案:

答案 0 :(得分:1)

这取决于您将如何定义REST API。 OAUTH调用基本上有以下组件。

用户:谁提出请求。

提供商:谁持有用户信息并提供访问权限的apis。

消费者:谁要求用户授权消费者向api发出请求。

基本工作流程如下,

  1. 用户尝试从Consumer访问受限资源。

  2. 消费者要求用户分享一些关于他的信息。(范围)

  3. 用户选择他的身份提供者。

  4. 提供者应该知道消费者。(通常消费者将自己注册为提供者门户网站中的应用程序/网站)

  5. 消费者使用consumer_key和范围重定向到提供者。

  6. 用户授权该应用程序并授予对其部分资源的访问权限。

  7. 提供商创建一个令牌并重定向回消费者。

  8. 消费者交换此令牌及其标识以获取用户的access_token。

  9. Consumer使用access_token向提供者发出授权请求,并询问有关用户的信息。

  10. 提供商将这些信息发送给消费者。

  11. 消费者验证信息并且用户已登录系统。

  12. 现在每个令牌都是针对作用域生成的,并且有效期间会有效。令牌验证将成为提供商的响应的一部分。

    在您的系统中,您可以针对令牌存储用户数据,这样我们就不需要请求Provider发送这些信息。但如果您不想存储用户信息,肯定会有其他电话。