【问题标题】:Is Spring Security Oauth2 with JWT really stateless?带有 JWT 的 Spring Security Oauth2 真的是无状态的吗?
【发布时间】:2016-06-09 19:10:41
【问题描述】:

我正在尝试使用 Spring 设置 REST-API。为了保护它,我目前使用带有 JWT 令牌的 Spring Security oAuth2。我的 REST-API 应用程序将 AuthorizationServer 和 ResourceServer 合二为一。

我现在的问题是,一旦生成了令牌,在我的 REST-API 应用程序重新启动后就不再有效。当我运行它的 2 个实例时也是如此。在其中一个上生成并有效的令牌在另一个上无效。

我发现 JwtAccessTokenConverter 的实现是在启动时随机生成一个signingKey/verifierKey。这当然解释了我的观察,但给我留下了一个问题:这怎么可能是无状态的?

如果我的想法有误,或者我错过了一些重要的细节,请纠正我。但现在对我来说,这种行为似乎违背了 JWT 的目的。

【问题讨论】:

  • 您确定您的 JwtAccessTokenConverter 实现在启动时会随机生成一个密钥吗?您的 spring 配置中没有私钥/公钥吗?
  • 感谢您的回答。是的,我敢肯定。我正在使用你可以在这里找到的 spring 实现github.com/spring-projects/spring-security-oauth/blob/master/… 你可以在第 81 行和第 85 行看到它是如何生成的。

标签: java spring rest spring-security jwt


【解决方案1】:

到目前为止,感谢您的回答,但我只是自己想通了。

随机生成的签名/验证者密钥只是一个默认值,可能不应该使用。不幸的是,这并没有真正记录在案。 我现在在启动时手动设置这些键。结果是,我的令牌在我的所有 REST-API 实例上都有效,并且在重新启动后仍然有效。

我猜随机值更像是一个“安全默认值”,这样人们就不会意外使用相同的已知密钥。

【讨论】:

    猜你喜欢
    • 2014-08-19
    • 2016-11-09
    • 2016-03-21
    • 2017-11-09
    • 2015-07-15
    • 2015-11-23
    • 2020-01-12
    • 2018-01-29
    • 2018-06-27
    相关资源
    最近更新 更多