在群集上部署时遇到401错误的问题。请注意,在本地开发过程中未发生该问题。仅在测试群集上部署一次后才会出现问题。目前,该项目仅处于开发/测试阶段。
后端配置(Spring属性文件):
server.port=8085
management.health.defaults.enabled=false
management.endpoint.health.show-details="ALWAYS"
management.server.port=${management.port:1234}
management.endpoints.enabled-by-default=true
management.endpoints.web.base-path=/
management.endpoints.web.exposure.include=health, prometheus
Angular:登录成功(使用相对URL到端口8085,一旦部署在集群上),但登录后,我的 Jmeter 板页面会调用acutator health和prometheus端点:
这些是URL:healthUrl:“http://localhost:1234/health”metricsUrl:“http://localhost:1234/prometheus”
Spring Security:
@Configuration
@EnableWebSecurity
public class ActuatorWebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.cors().configurationSource(corsConfigurationSource())
.and()
.authorizeRequests()
.requestMatchers(EndpointRequest.to(HealthEndpoint.class, InfoEndpoint.class)).permitAll()
.antMatchers("/**").authenticated()
.and().httpBasic()
.and()
.addFilterBefore(new ForwardedHeaderFilter(), UsernamePasswordAuthenticationFilter.class);
}
@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("*"));
configuration.setAllowCredentials(true);
configuration.setAllowedMethods(Arrays.asList("GET","POST","OPTIONS"));
configuration.setAllowedHeaders(Collections.singletonList("*"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
2条答案
按热度按时间gajydyqb1#
请为整个类提供安全配置,包括所有注解,以便我们更好地理解它。
tkclm6bt2#
下面是几个建议,以深入探讨这一点
1.假设你的prometheus本身是通过HTTPS提供服务的,你能发布你的tls配置吗?我怀疑有一些问题,你也可以重新检查你的Spring执行器配置在普罗米修斯文件。
1.你能检查一下prometheus文件中的metric,health,info路径吗?