【问题标题】:Spring OAuth2 Password Flow , Return JWT inside HTTP Only Cookie?Spring OAuth2密码流,在HTTP Only Cookie中返回JWT?
【发布时间】:2017-05-30 17:54:23
【问题描述】:

我正在使用 AuthorizationServerConfigurerAdapter 配置我的 OAuth2 密码流,我成功地创建了 JWT 令牌。我在我的 Spring REST 后端中使用我的 OAuth2,并将它与我的 Angular 2 前端配对。

我已经阅读了几篇文章(例如https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage),其中人们将 JWT 放在返回到 Angular 前端的仅 HTTP cookie 中,以防止 XSS 脚本,我对此很感兴趣。我很困惑如何集成或拦截我返回的 jwt,并将其放在仅 http 的 cookie 中并返回。

有什么建议吗?

约翰

【问题讨论】:

  • 您链接到的文章似乎建议在 cookie 标头中将令牌发送回资源​​服务器,这消除了您可能从 XSS 获得的任何保护。您需要在授权(或非 Cookie)标头中发送令牌,即使您真的坚持将它们存储在 cookie 中,并且要做到这一点,cookie 不是非 HTTP,这在一定程度上破坏了对象。
  • 嗨@DaveSyer,我们只是围绕这篇文章进行了同样的讨论。当您说“在 cookie 标头中发送令牌会删除您可能从 XSS 获得的任何保护”时,您是否介意详细说明您的意思?我们认为这种 cookie 方法相当繁琐,我们希望充分了解其中的注意事项。谢谢!

标签: spring rest jwt oauth2


【解决方案1】:

我根本不建议使用密码流,尤其是在浏览器客户端中。 OAuth2 旨在避免这种情况,从而避免将用户凭据提供给不受信任的代理。如果你放弃密码授权,你会发现会话 cookie 和你的 JWT cookie 提案一样安全,而且它开箱即用,在客户端或服务器上没有任何有趣的事情。

【讨论】:

  • 谢谢赛尔先生。为了让我的 spring rest 服务器端保持无状态,我可以使用隐式授权来代替吗?提取重定向 uri 上的哈希片段后,我应该将其安全地存储在哪里以备将来使用?
  • 这就是隐式授权的设计目的,但它会给您在客户端中的令牌存储问题。可能最好不要存储它而不是使用本地存储。或者只是使用 cookie(放弃“无状态”的幻想)。
  • 感谢您抽出宝贵时间回答我的问题。
猜你喜欢
  • 2018-09-20
  • 2021-12-03
  • 2021-06-29
  • 2023-03-24
  • 2014-12-25
  • 2022-01-08
  • 1970-01-01
  • 2016-03-12
  • 2018-01-15
相关资源
最近更新 更多