2016-02-26 85 views
1

我想用Spring来设置一个REST-API。为了保护它,我目前正在使用Spring Security oAuth2和JWT令牌。我的REST-API应用程序将是AuthorizationServer和ResourceServer。带智威汤逊的Spring Security Oauth2是否真的无状态?

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

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

如果我的想法错了,或者我错过了一些重要的细节,请纠正我。但对我来说,这种行为似乎击败了智威汤逊的目的。

+1

您确定您的JwtAccessTokenConverter实现在启动时生成了一个随机密钥吗?你的spring配置中没有私钥/公钥吗? –

+0

谢谢你的回答。是的,我敢肯定。我使用的是Spring实现,你可以在这里找到https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/main/java/org/springframework/security/ oauth2/provider/token/store/JwtAccessTokenConverter.java您可以在第81和85行看到它是如何生成的。 –

回答

0

谢谢你到目前为止的答案,但我只是想出了自己。

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

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