Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 如何在资源服务器使用的keyUri中使用服务id来获取JWT验证器密钥?_Spring Boot_Spring Security Oauth2_Spring Cloud - Fatal编程技术网

Spring boot 如何在资源服务器使用的keyUri中使用服务id来获取JWT验证器密钥?

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

我有一个OAuth资源服务器,由Spring云安全保护

使用的OAuth令牌是JWT令牌,因此资源服务器需要一个验证器密钥来检查令牌的签名

为了简化配置,我希望资源服务器从授权提供程序(也是一个spring引导服务,带有
@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。很可能您最终会希望在配置中提供其他细节