Spring boot 如何在资源服务器使用的keyUri中使用服务id来获取JWT验证器密钥?
我有一个OAuth资源服务器,由Spring云安全保护 使用的OAuth令牌是JWT令牌,因此资源服务器需要一个验证器密钥来检查令牌的签名 为了简化配置,我希望资源服务器从授权提供程序(也是一个spring引导服务,带有Spring boot 如何在资源服务器使用的keyUri中使用服务id来获取JWT验证器密钥?,spring-boot,spring-security-oauth2,spring-cloud,Spring Boot,Spring Security Oauth2,Spring Cloud,我有一个OAuth资源服务器,由Spring云安全保护 使用的OAuth令牌是JWT令牌,因此资源服务器需要一个验证器密钥来检查令牌的签名 为了简化配置,我希望资源服务器从授权提供程序(也是一个spring引导服务,带有@EnableAuthorizationServer)获取验证器密钥 例如,如果我给出授权提供程序的直接url(使用spring.oauth2.resource.jwt.keyUri),这就很好了 问题是当我想在该值中提供服务id而不是IP或DNS时,例如 在我看来,问题在于Jw
@EnableAuthorizationServer
)获取验证器密钥
例如,如果我给出授权提供程序的直接url(使用spring.oauth2.resource.jwt.keyUri),这就很好了
问题是当我想在该值中提供服务id而不是IP或DNS时,例如
在我看来,问题在于JwtTokenServicesConfiguration中的第225行,具体而言:
private RestTemplate keyUriRestTemplate = new RestTemplate();
如果keyUriRestTemplate是自动连接的,我可以提供自己的负载平衡rest模板,或者如果下面的JwtAccessTokenConverter方法上有@ConditionalOnMissingBean(JwtAccessTokenConverter.class),我也可以提供自己的负载平衡逻辑
有没有一种方法可以做我想做的事情,而不必在我的应用程序中重新创建整个ResourceServerTokenServicesConfiguration类,只需进行这个小小的修改?有一个更简单更干净的解决方案: 只需放弃spring cloud security所做的自动配置,并提供您自己的tokenServices实现,该实现提供了JwtAccessTokenConverter,您已经为其密钥提供了LoadBalanced RestTemplate。很可能您最终会希望在配置中提供其他细节