我正在使用jwt非对称实现进行oauth身份验证。我希望资源服务器能够在没有任何凭据的情况下调用授权服务器,以获取jks证书的公钥。
这是我在auth服务器上的corsconfigurationsourcebean
@Bean
public CorsConfigurationSource corsConfigurationSource() {
var config = new CorsConfiguration();
config = new CorsConfiguration();
config.setAllowedOrigins(List.of("http://localhost:9090/"));
config.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE"));
config.setAllowCredentials(false);
var source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
return source;
}
下面是资源服务器bean,它从身份验证服务器中查找密钥
@Bean
@Scope("singleton")
public String publicKey() {
HttpEntity<Void> httpEntity = new HttpEntity<>(new HttpHeaders());
var restTemplate = new RestTemplate();
var response = restTemplate.exchange(this.tokenUrl, HttpMethod.GET, httpEntity, Map.class);
try {
return (String) response.getBody().get("value");
} catch (NullPointerException nex) {
log.error("Public key is null.", nex);
return "";
}
}
我只希望来自端口9090的请求在没有凭据的情况下被允许,可能只允许指向以下路径的请求:/oauth/token\u key。如何实施?
还有另一个问题:这个解决方案可靠吗?或者它是否会带来一些与安全性相关的不必要的后果,从而暴露身份验证服务器?
谢谢您
暂无答案!
目前还没有任何答案,快来回答吧!