Heim > Java > javaLernprogramm > Wie konfiguriere ich mehrere HTTP-Sicherheitskonfigurationen in Spring Security für verschiedene Anwendungsabschnitte?

Wie konfiguriere ich mehrere HTTP-Sicherheitskonfigurationen in Spring Security für verschiedene Anwendungsabschnitte?

DDD
Freigeben: 2024-12-29 18:09:17
Original
456 Leute haben es durchsucht

How to Configure Multiple HTTP Security Configurations in Spring Security for Different Application Sections?

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:

  1. 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()
                ...
    }
    Nach dem Login kopieren
  2. 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()
                ...
    }
    Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage