Spring 引导安全认证 - 未发送身份验证标头



我有一个Spring启动应用程序,其中端点通过Kerberos进行身份验证。

只要我从我的服务器作为主机发送请求,一切正常: https://hostname.domain.com/test 发送 发布 https://hostname.domain.com/endpoint

但是当我将主机名更改为另一个主机名时,它停止工作。

https://hostname2.domain.com/test 发送 发布 https://hostname.domain.com/endpoint

客户端不发送身份验证标头(尝试匿名(,因此身份验证失败。用户仍在同一台计算机上,只是在同一域内的另一台主机上。

我允许 cors 进行这样的测试,但它并没有解决问题:

@Bean
CorsConfigurationSource corsConfigurationSource () {
UrlBasedCorsConfigurationSource source;
source = new UrlBasedCorsConfigurationSource();
CorsConfiguration configuration = new CorsConfiguration();
List<String> all = Collections.singletonList("*");
configuration.setAllowedOrigins(all);
configuration.setAllowedMethods(all);
configuration.setAllowedHeaders(all);
source.registerCorsConfiguration("/**", configuration);
return source;
}

由于某种原因,客户端忽略了 WWW-Authenticate:协商并且不使用身份验证标头回复。

我不太喜欢这些网络问题,所以我可能会在这里混淆一些事情,但我希望你能理解这个问题。

发现问题。您需要禁用选项方法的身份验证。

有关其他信息,请参阅以下问题:

授权标头未与带有选项方法的 http 请求角度 6 一起发送

禁用 OPTIONS HTTP 方法的 Spring 安全性

最新更新