Spring Oauth Token 存储机制

Posted

技术标签:

【中文标题】Spring Oauth Token 存储机制【英文标题】:Spring Oauth Token storing mechanism 【发布时间】:2017-01-07 03:06:29 【问题描述】:

我正在尝试实现 Spring OAuth。我是新手,我正在尝试了解它是如何工作的。

我的问题:

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

【问题讨论】:

【参考方案1】:
    如果您服务器上的端点受 oauth 保护,那么是的,您必须在每个请求中传递令牌 - 可能在“Authorization: Bearer token”标头中。在春季,它通过使用不同的 restTemplate - OAuth2RestTemplate 自动获取并添加到请求中解决。 您只需将 JSESSIONID 存储在 cookie 中。然后从存储中读取会话(如果您使用弹簧会话项目/等,则安装tomcat的磁盘/redis) 访问令牌的寿命应该相对较短。还应该有可用的撤销端点,以便您可以在有理由相信它已被泄露时使特定令牌无效。

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

【讨论】:

谢谢你的回答。你能否给我更多关于 JSESSIONID 如何实现的细节?给我任何链接。 它是spring用来处理会话的默认cookie名称。尝试在你的 spring 控制器的 session 中存储任何东西。你应该会在 firebug 中看到这个 cookie。

以上是关于Spring Oauth Token 存储机制的主要内容,如果未能解决你的问题,请参考以下文章

小结:token放在header中好处,HTTP Header详解(OAuth JWT等)

带有jdbc令牌存储的spring boot oauth2给出oauth_access_token关系不存在

Spring Security OAuth2 将 access_token 存储在 cookie 中

后端架构token授权认证机制:spring security JSON Web Token(JWT)简例

后端架构token授权认证机制:spring security JSON Web Token(JWT)简例

Spring Security 实战内容:OAuth2授权回调的处理机制