我有一个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 安全性