Spring Oauth Token 存储机制

Spring Oauth Token storing mechanism

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

我的问题:

  1. OAuth 在身份验证后生成令牌,用户发出的每个请求都必须使用此令牌。我们需要将此 access_token 附加到每个 REST API 调用以访问资源。我听起来正确吗?
  2. 我们是否需要在客户端存储此令牌(使用 cookie)?或者有没有这样我们就不需要在客户端存储这个令牌并且可以在服务器端处理?
  3. 如果我们必须在客户端存储令牌,最好的方法是什么?我经历了这个 link
  1. 如果您服务器上的端点受 oauth 保护,那么是的,您必须在每个请求中传递令牌 - 可能在 "Authorization: Bearer {token}" header 中。在 spring 中,它通过使用不同的 restTemplate 解决了 - OAuth2RestTemplate 自动获取它并添加到请求中。
  2. 您只需将 JSESSIONID 存储在 cookie 中。然后 spring 从商店读取 session(安装 tomcat 的光盘/ redis 如果您使用 spring session 项目/等)
  3. 访问令牌应该是比较短命的。还应该有可用的撤销端点,以便您可以在有理由相信特定令牌已被泄露时使其无效。

3.a) 在客户端存储一些数据还有另一个问题。它是关于在移动原生应用程序上存储 clientId、clientSecret。 Android 应用程序代码可以很容易地进行逆向工程,因此任何人都可以尝试使用您的 oauth 应用程序来获取令牌。在这些情况下,建议使用不同的授权类型 "password" - 检查 https://aaronparecki.com/2012/07/29/2/oauth2-simplified#other-app-types