java / expert
Snippet
Dynamische Sicherheitsfilterketten für Multi-Tenancy
Fortgeschrittene Spring Security nutzt mehrere SecurityFilterChain-Beans mit spezifischen RequestMatchern. Dies ermöglicht die dynamische Anwendung unterschiedlicher Sicherheitsrichtlinien basierend auf Header-Daten oder Attributen, was für Multi-Tenant-Architekturen essenziell ist.
snippet.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Configuration@EnableWebSecuritypublic class MultiTenantSecurityConfig {@Bean@Order(1)public SecurityFilterChain tenantFilterChain(HttpSecurity http) throws Exception {return http.securityMatcher(request -> request.getHeader("X-Tenant-ID") != null).authorizeHttpRequests(auth -> auth.requestMatchers("/api/admin/**").hasRole("TENANT_ADMIN").anyRequest().authenticated()).addFilterBefore(new TenantIdentificationFilter(), UsernamePasswordAuthenticationFilter.class).build();}}
spring
Erklärung
1
.securityMatcher(request -> ...)
Definiert ein Lambda-basiertes Prädikat, um zu bestimmen, ob diese spezifische Filterkette die eingehende Anfrage verarbeiten soll.
2
@Order(1)
Stellt sicher, dass diese Kette vor der Standard-Sicherheitskette ausgewertet wird, was spezialisierte Interceptor-Logik ermöglicht.