Mehrere HTTP-Sicherheitskonfigurationen in Spring Security
In Spring Security kann es vorkommen, dass Sie unterschiedliche Anmeldeseiten und Sicherheitskonfigurationen für unterschiedliche Anwendungen benötigen Abschnitte Ihrer Bewerbung. Um dies zu erreichen, können Sie den MultipleHttpSecurityConfig-Ansatz nutzen.
In Ihrem speziellen Fall haben Sie zwei verschachtelte Klassen, ProviderSecurity und ConsumerSecurity, innerhalb einer übergeordneten Klasse konfiguriert, die mit @EnableWebSecurity annotiert ist. Während die Sicherheitskonfiguration für /admin/** wie erwartet funktioniert, haben Sie festgestellt, dass die durch „/consumer/**“ eingeschränkten Seiten nicht wie vorgesehen gesichert werden.
Analyse
Ihr Problem ergibt sich aus der Tatsache, dass Ihre beiden Konfigurationen standardmäßig alle Anfragen autorisieren. Dies ermöglicht den Zugriff auf alle Seiten, unabhängig von den definierten Sicherheitsbeschränkungen. Um dies zu beheben, müssen Sie den Zugriff auf bestimmte URLs oder Anforderungsmuster explizit einschränken.
Lösung
Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:
Verwenden Sie die antMatcher-Methode in Ihrer ProviderSecurity-Konfiguration, um die URL-Muster zu definieren, die sie anwendet zu:
@Configuration @Order(1) public static class ProviderSecurity extends WebSecurityConfigurerAdapter{ @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/", "/home").permitAll() .antMatchers("/admin/login").permitAll() .anyRequest().hasRole("BASE_USER") // Restrict all other URLs .and() ... }
Geben Sie in Ihrer ConsumerSecurity-Konfiguration ebenfalls die URL-Muster an, die gesichert werden sollen:
@Configuration @Order(2) public static class ConsumerSecurity extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/consumer/login").permitAll() .anyRequest().hasRole("BASE_USER") // Restrict all other URLs .and() ... }
Durch Einschränkung des Zugriffs Durch die Verknüpfung mit bestimmten URL-Mustern können Sie die vorgesehene Sicherheit für Ihre Anwendung erzwingen.
Das obige ist der detaillierte Inhalt vonWie konfiguriere ich mehrere HTTP-Sicherheitskonfigurationen in Spring Security für verschiedene Anwendungsabschnitte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!