Spring Security集成Prometheus配置后仍遇401未授权问题求助
解决Actuator端点401未授权问题
以下是几个排查和修复方向:
1. 修正端点路径匹配规则
你的Spring Security配置里用了/api/actuator/**,但从YAML配置看,没有设置Actuator的基础路径为/api/actuator,默认的Actuator路径是/actuator。所以需要把请求匹配规则改成:
authorizeHttpRequests { it.requestMatchers("/actuator/**").permitAll() // 补充剩余请求的授权规则,比如: it.anyRequest().authenticated() }
如果确实需要将Actuator路径改为/api/actuator,需在YAML配置中添加:
management: endpoints: web: base-path: /api/actuator
2. 确保Spring Security配置完整
你提供的Kotlin代码片段不完整,authorizeHttpRequests块必须包含对所有剩余请求的处理规则(比如it.anyRequest().authenticated()),否则Spring Security会默认拦截所有未明确放行的请求,包括Actuator端点。
3. 检查多SecurityFilterChain的优先级
如果项目中定义了多个SecurityFilterChain Bean,需确保针对Actuator的配置优先级更高。可以通过@Order(Ordered.HIGHEST_PRECEDENCE)注解标记对应的Security配置类,让它优先执行。
4. 放弃依赖management.security.enabled属性
虽然你配置了management.security.enabled=false,但自定义Spring Security配置会覆盖这个属性的效果。更可靠的方式是通过Spring Security的授权规则明确放行Actuator端点,而非依赖该属性。
内容的提问来源于stack exchange,提问作者work work
相关产品推荐
相关产品推荐

