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
DDDOriginal
2024-12-29 18:09:17507Durchsuche

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()
                ...
    }
  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()
                ...
    }

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!

Stellungnahme:
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