我们使用RestEasy实现了RESTful API。现在我们计划构建自己的OAuth实现,并将其与我们的Rest API集成。
我不完全了解OAuth如何处理对API的每个请求的授权。我的理解如下:
这会对性能产生影响,因为我们正在使用第二台服务器验证每个API请求的令牌。这种理解是否正确?
答案 0 :(得分:1)
这取决于您将如何定义REST API。 OAUTH调用基本上有以下组件。
用户:谁提出请求。
提供商:谁持有用户信息并提供访问权限的apis。
消费者:谁要求用户授权消费者向api发出请求。
基本工作流程如下,
用户尝试从Consumer访问受限资源。
消费者要求用户分享一些关于他的信息。(范围)
用户选择他的身份提供者。
提供者应该知道消费者。(通常消费者将自己注册为提供者门户网站中的应用程序/网站)
消费者使用consumer_key和范围重定向到提供者。
用户授权该应用程序并授予对其部分资源的访问权限。
提供商创建一个令牌并重定向回消费者。
消费者交换此令牌及其标识以获取用户的access_token。
Consumer使用access_token向提供者发出授权请求,并询问有关用户的信息。
提供商将这些信息发送给消费者。
消费者验证信息并且用户已登录系统。
现在每个令牌都是针对作用域生成的,并且有效期间会有效。令牌验证将成为提供商的响应的一部分。
在您的系统中,您可以针对令牌存储用户数据,这样我们就不需要请求Provider发送这些信息。但如果您不想存储用户信息,肯定会有其他电话。