我在Spring Boot中有一个rest应用程序,配置了安全性,并为其公开的服务实现了JWT令牌。但是,此应用程序还连接到其他第三方应用程序,这些应用程序也通过JWT和每个应用程序使用不同的令牌进行保护。
我的问题是:存储这些第三方令牌的最佳策略是什么?是否有类似SecurityContextHolder
的东西,但用于存储应用程序用于在其他服务上进行身份验证的令牌?
答案 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