diff --git a/pom.xml b/pom.xml
index 6c917fc..4d036c4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,11 +7,11 @@
opensabre-base-dependencies
io.github.opensabre
- 1.1.3
+ 1.1.4
base-sysadmin
- 1.1.3
+ 1.1.4
jar
base-sysadmin
@@ -65,6 +65,18 @@
io.github.opensabre
opensabre-starter-governance
+
+ io.github.opensabre
+ opensabre-starter-security
+
+
+ io.github.opensabre
+ opensabre-starter-webmvc
+
+
+ io.github.opensabre
+ opensabre-starter-monitoring
+
io.github.opensabre
opensabre-starter-eda
@@ -77,17 +89,6 @@
org.springframework.boot
spring-boot-starter-oauth2-resource-server
-
-
- org.springdoc
- springdoc-openapi-starter-webmvc-ui
- 3.0.3
-
-
- com.github.xiaoymin
- knife4j-openapi3-ui
- 4.5.0
-
org.springframework.boot
diff --git a/src/main/java/io/github/opensabre/sysadmin/internaltoken/config/InternalTokenManagementSecurityConfiguration.java b/src/main/java/io/github/opensabre/sysadmin/internaltoken/config/InternalTokenManagementSecurityConfiguration.java
index afea936..e384802 100644
--- a/src/main/java/io/github/opensabre/sysadmin/internaltoken/config/InternalTokenManagementSecurityConfiguration.java
+++ b/src/main/java/io/github/opensabre/sysadmin/internaltoken/config/InternalTokenManagementSecurityConfiguration.java
@@ -1,5 +1,7 @@
package io.github.opensabre.sysadmin.internaltoken.config;
+import io.github.opensabre.security.actuator.ActuatorMonitoringAccess;
+import io.github.opensabre.security.webmvc.InternalTokenAuthenticationFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@@ -10,6 +12,7 @@
import org.springframework.security.oauth2.jwt.Jwt;
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
import org.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter;
+import org.springframework.security.oauth2.server.resource.web.authentication.BearerTokenAuthenticationFilter;
import org.springframework.security.web.SecurityFilterChain;
/**
@@ -21,7 +24,9 @@ public class InternalTokenManagementSecurityConfiguration {
private static final String MANAGEMENT_PATH = "/security/internal-token/keys/**";
@Bean
- public SecurityFilterChain sysadminSecurityFilterChain(HttpSecurity http)
+ public SecurityFilterChain sysadminSecurityFilterChain(
+ HttpSecurity http,
+ InternalTokenAuthenticationFilter internalTokenAuthenticationFilter)
throws Exception {
http
.csrf(csrf -> csrf.disable())
@@ -29,9 +34,13 @@ public SecurityFilterChain sysadminSecurityFilterChain(HttpSecurity http)
session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests(authorize -> authorize
.requestMatchers(MANAGEMENT_PATH).hasAuthority("ADMIN")
+ .requestMatchers(ActuatorMonitoringAccess.metricPathArray())
+ .hasAuthority(ActuatorMonitoringAccess.AUTHORITY)
.anyRequest().permitAll())
.oauth2ResourceServer(resourceServer -> resourceServer
- .jwt(jwt -> jwt.jwtAuthenticationConverter(jwtAuthenticationConverter())));
+ .jwt(jwt -> jwt.jwtAuthenticationConverter(jwtAuthenticationConverter())))
+ .addFilterBefore(internalTokenAuthenticationFilter,
+ BearerTokenAuthenticationFilter.class);
return http.build();
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index ef6b56e..bf966c8 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -77,7 +77,7 @@ management:
endpoints:
web:
exposure:
- include: '*'
+ include: health,info,metrics,prometheus,internalTokenKeyStatus
tracing:
sampling:
probability: 1.0