Spring Boot Sping Boot 后端与Angular前端从Prometheus和健康端点获取状态和指标,但401

wf82jlnq  于 2023-05-28  发布在  Spring
关注(0)|答案(2)|浏览(156)

在群集上部署时遇到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;
    }
}
gajydyqb

gajydyqb1#

请为整个类提供安全配置,包括所有注解,以便我们更好地理解它。

tkclm6bt

tkclm6bt2#

下面是几个建议,以深入探讨这一点
1.假设你的prometheus本身是通过HTTPS提供服务的,你能发布你的tls配置吗?我怀疑有一些问题,你也可以重新检查你的Spring执行器配置在普罗米修斯文件。
1.你能检查一下prometheus文件中的metric,health,info路径吗?

相关问题