存储令牌以访问Spring Boot上的其他应用程序

时间:2018-07-25 08:05:15

标签: spring-boot spring-security

我在Spring Boot中有一个rest应用程序,配置了安全性,并为其公开的服务实现了JWT令牌。但是,此应用程序还连接到其他第三方应用程序,这些应用程序也通过JWT和每个应用程序使用不同的令牌进行保护。

我的问题是:存储这些第三方令牌的最佳策略是什么?是否有类似SecurityContextHolder的东西,但用于存储应用程序用于在其他服务上进行身份验证的令牌?

1 个答案:

答案 0 :(得分:0)

配置

OAuth2RestOperations restTemplate

您可以将令牌保留在客户端中

public OAuth2RestOperations restTemplate() {
    OAuth2RestTemplate template = new OAuth2RestTemplate(resource(), new 
    DefaultOAuth2ClientContext(accessTokenRequest));
    AccessTokenProviderChain provider = new 
    AccessTokenProviderChain(Arrays.asList(new AuthorizationCodeAccessTokenProvider()));
    provider.setClientTokenServices(clientTokenServices());
    return template;
}

如spring security oauth docs here

中所述
  

在客户端中保留令牌

     

客户端不需要持久化令牌,但是每次重新启动客户端应用程序时,不需要用户批准新的令牌授予就可以了。 ClientTokenServices接口定义了为特定用户持久保存OAuth 2.0令牌所必需的操作。提供了JDBC实现,但是如果您愿意实现自己的服务,则可以在持久数据库中存储访问令牌和关联的身份验证实例。如果要使用此功能,则需要为OAuth2RestTemplate提供一个经过特殊配置的TokenProvider