- Upgrade ActuatorSecurityConfig to @Order(Ordered.HIGHEST_PRECEDENCE) at class level
to ensure filter chain is evaluated before auto-configured management security
- Replace string-based securityMatcher with EndpointRequest.toAnyEndpoint() for
proper Spring Boot actuator endpoint matching
- Add belt-and-suspenders permitAll() for /actuator/health and /actuator/info in
SecuirtyConfig so health endpoints are accessible even if filter chain ordering fails
- Root cause: SecuirtyConfig catch-all (no securityMatcher) was intercepting actuator
requests on the separate management port (management.server.port=8081) and
redirecting to OIDC login before ActuatorSecurityConfig filter chain could apply
- Add spring-boot-starter-actuator dependency
- Configure management port (8081) separate from application port (8080)
- Expose /actuator/health and /actuator/info endpoints publicly
- Block other actuator endpoints without authentication
- Add ActuatorSecurityConfig for actuator-specific security rules
- Update Docker Compose to expose management port (5003:8081)
- Update Dockerfile to expose ports 8080 and 8081
- Add actuator configuration to all profile-specific properties files