Skip to content

Commit e58ed4c

Browse files
committed
Secure Metrics
1 parent fdb2167 commit e58ed4c

2 files changed

Lines changed: 24 additions & 3 deletions

File tree

β€ŽExtra-Docker/Demo/demo-mvc_final/metricbeat.ymlβ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ metricbeat.modules:
77
period: 10s
88
hosts: ["app:8080"]
99
metrics_path: /actuator/prometheus
10+
username: "admin"
11+
password: "admin"
1012

1113
output.elasticsearch:
1214
hosts: ["elasticsearch:9200"]

β€ŽExtra-Docker/Demo/demo-mvc_final/src/main/java/com/codingnomads/demo_web/configurations/SecurityConfiguration.javaβ€Ž

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,26 @@ protected void doFilterInternal(HttpServletRequest request,
104104
};
105105
}
106106

107+
/**
108+
* Configuration for Actuator endpoints.
109+
* It uses Basic Auth for Metricbeat/observability tools.
110+
*/
111+
@Bean
112+
@Order(0) // Highest priority
113+
public SecurityFilterChain actuatorSecurity(HttpSecurity http, OncePerRequestFilter mdcFilter) throws Exception {
114+
http
115+
.securityMatcher("/actuator/**")
116+
.authorizeHttpRequests(auth -> auth
117+
.anyRequest().hasRole("ADMIN")
118+
)
119+
.httpBasic(Customizer.withDefaults())
120+
.csrf(AbstractHttpConfigurer::disable)
121+
.sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
122+
.addFilterAfter(mdcFilter, UsernamePasswordAuthenticationFilter.class);
123+
124+
return http.build();
125+
}
126+
107127
/**
108128
* Configuration for the REST API (/api/**).
109129
* It uses JWT (JSON Web Tokens) and is 'stateless', meaning the server doesn't remember the user between requests.
@@ -148,10 +168,9 @@ public SecurityFilterChain mvcSecurity(HttpSecurity http, OncePerRequestFilter m
148168
// Permit access to static resources without logging in
149169
.requestMatchers("/css/**", "/js/**", "/images/**", "/webjars/**", "/favicon.ico").permitAll()
150170
// Permit access to home, signup, and error pages
151-
.requestMatchers("/", "/signup", "/errors").permitAll()
152-
// Only users with ADMIN role can access /admin/** and Actuator
171+
.requestMatchers("/", "/signup", "/error").permitAll()
172+
// Only users with ADMIN role can access /admin/**
153173
.requestMatchers("/admin/**").hasRole("ADMIN")
154-
.requestMatchers(EndpointRequest.toAnyEndpoint()).permitAll()
155174
// Everything else requires the user to be logged in
156175
.anyRequest().authenticated())
157176
.formLogin(login -> login

0 commit comments

Comments
 (0)