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

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

我的问题:

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

【问题讨论】:

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


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

    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。
    猜你喜欢
    • 2015-11-10
    • 2018-04-26
    • 2016-08-25
    • 2017-08-31
    • 2017-08-31
    • 2015-05-28
    • 2018-10-16
    • 2023-03-08
    • 2015-05-19
    相关资源
    最近更新 更多