[JAVA] Spring Boot mit Spring Security Filter-Einstellungen und Suchtpunkten

Einstellungsbeispiel

Bei der Konfiguration von Filter in der Java-Konfiguration ist es zweckmäßig, "org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter" zu erben und die beiden Arten von Konfigurationsmethoden zu überschreiben.

Sie können einen Filter für die Authentifizierung in HttpSecurity hinzufügen und WebSecurity so einstellen, dass der Filter ignoriert wird.

SecurityConfig.java



@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private static final String[] STATIC_RESOURCES = {
        "/**/css/**", "/**/js/**", "/**/img/**",
    };

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //Filter zur Sicherheitsfilterkette hinzufügen
        http.addFilter(this.preAuthenticatedProcessingFilter());
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        //Legen Sie Pfade fest, die von der Sicherheitsfilterkette ausgeschlossen werden sollen
        web.ignoring().antMatchers(STATIC_RESOURCES);
    }

    //In der Sicherheitsfilterkette registrierte Filter sind nicht Bean-definiert
    public AbstractPreAuthenticatedProcessingFilter preAuthenticatedProcessingFilter() throws Exception {
        final SampleAuthFilter filter = new SampleAuthFilter();
        filter.setAuthenticationManager(this.authenticationManager());
        return filter;
    }
}

Es gibt viele Artikel und Websites von anderen Leuten hier, also muss ich mich nicht darum kümmern, es zu schreiben, aber ich bin schon eine Weile süchtig danach, also werde ich es schreiben.

Wo ich süchtig war

Selbst wenn die Ignoriereinstellung festgelegt ist, wird der Filter auf alle Anforderungen angewendet, einschließlich statischer Ressourcen, für die keine Authentifizierung erforderlich ist. Einige Tage lang fand ich etwas Freizeit und suchte nach "Federsicherheit ignoriert nicht funktioniert" usw., konnte jedoch aufgrund von Problemen wie dem Schreiben der Ignoriereinstellungen keine Lösung finden.

Rückblickend war der Kommentar hier in StackOverflow nur die Lösung, aber ich habe es nicht realisiert.

Ursache und Lösung

Die Ursache war, dass die Filterklasse mit "@ Component" versehen wurde. Gleiches gilt für das Hinzufügen von "@ Bean" zur Konfigurationsklasse. Infolgedessen wird es außerhalb der Sicherheitsfilterkette registriert.

Die Lösung besteht natürlich darin, sich nicht als Bean zu registrieren.

Einige Seiten haben Beispielcode mit @ Bean, daher dachte ich, dass einige Leute unter dem gleichen Problem leiden würden. Obwohl es nicht bestätigt ist, können Sie dieses Problem möglicherweise nicht lösen, wenn Sie Spring Boot (Starter-Web?) Nicht verwenden.

Ich habe einen Hinweis von der Lösung zum Ausschließen von "FilterRegistrationBean" in StackOverFlow erhalten und es geschafft, ihn zu lösen, aber ich kann ihn scheinbar nicht sehen, indem ich ihn nur aus der Quelle von "WebSecurityConfigurerAdapter" zurückverfolge. Funktionsweise von Spring Security in Hello World war sehr hilfreich.

Wenn ich es an einem anderen Tag nicht lösen konnte, flackerte der schlimmste Weg, "eine if-Anweisung auf der Filterseite hinzuzufügen" (lacht).

Referenz

Spring Security – security none, filters none, access permitAll Spring Security filter chain not ignoring specified path [duplicate] Funktionsweise von Spring Security in Hello World

Recommended Posts

Spring Boot mit Spring Security Filter-Einstellungen und Suchtpunkten
Verwendungshinweis zu Spring Security: Zusammenarbeit mit Spring MVC und Boot
HTTPS mit Spring Boot und Let's Encrypt
Erreichen Sie die BASIC-Authentifizierung mit Spring Boot + Spring Security
Hash-Passwörter mit Spring Boot + Spring Security (mit Salt, mit Stretching)
Versuchen Sie die LDAP-Authentifizierung mit Spring Security (Spring Boot) + OpenLDAP
[Einführung in Spring Boot] Authentifizierungsfunktion mit Spring Security
Erstellen Sie mit Spring Boot 2.0 einen Spring Cloud Config Server mit Sicherheit
Mit Spring Boot herunterladen
Versuchen Sie es mit einem DI-Container mit Laravel und Spring Boot
Wechseln Sie die Umgebung mit Spring Boot application.properties und @ Profile-Annotation
Implementieren Sie eine einfache Rest-API mit Spring Security mit Spring Boot 2.0
Erstellen Sie mit Spring Security 2.1 eine einfache Demo-Site mit Spring Security
Versuch, SSR Vue.js mit Spring Boot und GraalJS zu verwenden
Verbinden Sie Spring Boot und Angular typsicher mit OpenAPI Generator
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Spring Boot Hot Swapping-Einstellungen
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Anmeldefunktion mit Spring Security
Spring Boot beginnend mit Docker
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
Einstellungen für die Spring Boot-Leistung
Versuchen Sie es mit Spring Boot Security
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Behandeln Sie die Java 8-Datums- und Uhrzeit-API mit Thymeleaf mit Spring Boot
Implementieren Sie die REST-API mit Spring Boot und JPA (Infrastructure Layer).
Bis INSERT und SELECT für Postgres mit Spring Boot und Thymianblatt
Stellen Sie mit spring boot + spring jpa eine Verbindung zur Datenbank her und führen Sie die CRUD-Operation durch
Spring Boot-Anwendung, die DB-Verbindungseinstellungen mit Parametern angibt
Implementieren Sie die REST-API mit Spring Boot und JPA (Domain Layer Edition).
Domänengesteuerte Entwicklung mit Java und Spring Boot-Layer und Modulabteilung
Implementieren Sie eine einfache Rest-API mit Spring Security & JWT mit Spring Boot 2.0
Hash beim Spring-Boot das Passwort und verwenden Sie die Mitgliederregistrierung und die Spring-Sicherheit, um die Anmeldefunktion zu implementieren.
Einfache Entwicklung von Webanwendungen mit STS und Spring Boot. In 10 Minuten.
Einstellungen für den Spring Boot 2.x-Kontextpfad
Verwenden Sie die Standardauthentifizierung mit Spring Boot
Implementierte Authentifizierungsfunktion mit Spring Security ②
Überprüfungspunkte für den Spring Boot-Anwendungscode
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Hot Deploy mit Spring Boot-Entwicklung
Spring Boot Tutorial Verwenden der Spring Security-Authentifizierung
Ich habe versucht, einen OAuth-Client mit Spring Boot / Security (LINE-Anmeldung) zu implementieren.
Spring Boot Programmierung mit VS Code
Bis "Hallo Welt" mit Spring Boot
Erstellen Sie eine Anfrage-App mit Spring Boot
Teil 1: Versuchen Sie, die von Spring Security 5 unterstützte OAuth 2.0-Anmeldung mit Spring Boot zu verwenden
Implementierte Authentifizierungsfunktion mit Spring Security ①
Erhalten Sie Validierungsergebnisse mit Spring Boot
Vergleiche Hallo Welt! Mit Spring Boot mit Java, Kotlin und Groovy
(Intellij) Hallo Welt mit Spring Boot