Ändern Sie die Bere für die Security Security Security Security Security SecuryFilterchain basierend auf einer EigenschaJava

Java-Forum
Anonymous
 Ändern Sie die Bere für die Security Security Security Security Security SecuryFilterchain basierend auf einer Eigenscha

Post by Anonymous »

Ich möchte die tatsächliche SecurityFilterChain -Bean basierend auf einer zu befietsstarken Eigenschaft konfigurieren. >

Code: Select all

@Configuration
@EnableWebSecurity
class SecurityConfiguration {

@Bean
SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
httpSecurity.authorizeHttpRequests(authorize -> authorize.anyRequest().permitAll()).csrf(AbstractHttpConfigurer::disable);
return httpSecurity.build();
}

@Bean
public SecurityFilterChain securityFilterChainX509(HttpSecurity httpSecurity) throws Exception {
httpSecurity.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.x509()
.subjectPrincipalRegex("CN=(.*?)(?:,|$)");
return httpSecurity.build();
}

@Bean
public SecurityFilterChain securityFilterChainJWT(HttpSecurity httpSecurity) throws Exception {

}

[...]

}
< /code>
Ich klebe hier nur ein Beispiel, aber stellen Sie sich vor, diese Datei ist voll von SecurityFilterchain -Bohnen mit vielen Authentifizierungstypen. Anwendungsfall ist, dass jede der Instanzen derselben App über eine eigene Sicherheitskonfiguration verfügt. Die SecurityFilterchainx509 -Bean, während dieselbe App, die in Frankreich bereitgestellt wurde, das Benutzername -Kennwort überprüfen müsste, während die in Japan bereitgestellte App eine andere Art von Authorte usw. usw. usw. benötigen würde. Wir verwenden einen eher "seltsamen" Ansatz, den wir basierend auf [b] Profilen [/b].    @Bean
@Profile({"canada", "brazil"})
SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
httpSecurity.authorizeHttpRequests(authorize -> authorize.anyRequest().permitAll()).csrf(AbstractHttpConfigurer::disable);
return httpSecurity.build();
}

@Bean
@Profile({"usa", "egypt"})
public SecurityFilterChain securityFilterChainX509(HttpSecurity httpSecurity) throws Exception {
httpSecurity.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.x509()
.subjectPrincipalRegex("CN=(.*?)(?:,|$)");
return httpSecurity.build();
}

@Bean
@Profile({"germany"})
public SecurityFilterChain securityFilterChainJWT(HttpSecurity httpSecurity) throws Exception {

}
< /code>
Während dieser Ansatz funktioniert, hat er Nachteile. Wir müssen: < /p>

 viele Anwendungsprofile beibehalten. Eigenschaften, nur um die richtige Bohne zu bekommen. < /li>
 Wenn wir uns ändern müssen Der Code auch.
Gibt es einen Weg ohne Profil, aber mit einer konfigurierbaren Eigenschaft, so etwas wie < /p>
@Value("${the.security.bean.to.use}")
private String configuredSecurityBeanToUse;
So konfigurieren Sie die tatsächliche SecurityFilterchain -Bean?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post