java—在SpringSecurity中允许来自特定来源的未经验证的调用

fiei3ece  于 2021-06-27  发布在  Java
关注(0)|答案(0)|浏览(192)

我正在使用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。如何实施?
还有另一个问题:这个解决方案可靠吗?或者它是否会带来一些与安全性相关的不必要的后果,从而暴露身份验证服务器?
谢谢您

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题