Spring Oauth Token存储机制

时间:2016-08-30 17:56:25

标签: spring rest spring-security oauth-2.0 spring-security-oauth2

我正在尝试实现Spring OAuth。我是新手,我正在努力了解它的工作原理。

我的问题:

  1. OAuth在身份验证后生成令牌,此令牌必须用于用户发出的每个请求。我们需要将此access_token附加到每个REST API调用以访问资源。我听起来不对吗?
  2. 我们是否需要在客户端存储此令牌(使用cookie)?或者是否存在以至于我们不需要在客户端存储此令牌并且可以在服务器端处理?
  3. 如果我们必须在客户端存储令牌,那么最好的方法是什么?我已经完成了这个link

1 个答案:

答案 0 :(得分:0)

  1. 如果服务器上的端点受oauth保护,那么是的,您必须为每个请求传递令牌 - 可能在“Authorization:Bearer {token}”标头中。在春天,它通过使用不同的restTemplate解决 - OAuth2RestTemplate自动获取它并添加到请求。
  2. 您只需将JSESSIONID存储在Cookie中。然后从商店(安装了tomcat的光盘/ redis,如果你使用春季会议项目/等)弹出读取会话
  3. 访问令牌应该是相对较短的生活。还应该有revoke端点可用,这样当有理由相信它被泄露时,您可以使特定令牌无效。
  4. 3.a)在客户端存储一些数据还有另一个问题。它关于在移动本机应用程序上存储clientId,clientSecret。 Android应用程序代码可以非常容易地进行逆向工程,因此任何人都可以尝试使用您的oauth应用程序获取令牌。在这些情况下,它建议使用不同的授权类型“密码” - 检查https://aaronparecki.com/2012/07/29/2/oauth2-simplified#other-app-types