Heim > Java > javaLernprogramm > Warum schlagen meine rollenbasierten Spring Security-Autorisierungen fehl?

Warum schlagen meine rollenbasierten Spring Security-Autorisierungen fehl?

Barbara Streisand
Freigeben: 2024-12-09 02:28:09
Original
962 Leute haben es durchsucht

Why Are My Spring Security Role-Based Authorizations Failing?

Rollenautorisierung in Spring Security korrigieren

Spring Security bietet robuste Autorisierungsmechanismen, falsche Konfigurationen können jedoch zu Sicherheitslücken führen. Dieser Artikel befasst sich mit einem häufigen Problem, bei dem Benutzer mit eingeschränkten Rollen auf Ressourcen zugreifen können, die für Administratoren reserviert sind.

Das bereitgestellte Code-Snippet konfiguriert Spring Security sowohl mithilfe der In-Memory-Authentifizierung als auch der JDBC-Authentifizierung. Während das Problem auf die Auswahl von Benutzername, Passwort und 1 von Benutzern zurückzuführen ist, bei denen username=? Abfrage, der eigentliche Schuldige liegt woanders.

Das Problem ergibt sich aus der Reihenfolge der Matcher in der MethodeauthorizeRequests(). Spring Security wertet Matcher nacheinander aus und der erste Match bestimmt die Autorisierungsentscheidung. In diesem Fall wird der folgende Matcher:

.anyRequest().authenticated()
Nach dem Login kopieren

vor dem rollenbasierten Matcher platziert:

.antMatchers("/users/all").hasRole("admin")
Nach dem Login kopieren

Dadurch werden alle Anfragen autorisiert, solange der Benutzer authentifiziert ist , unabhängig von ihrer Rolle. Um dieses Problem zu beheben, ordnen Sie die Matcher neu an, sodass der rollenbasierte Matcher Vorrang hat:

protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf().disable()
        .httpBasic()
        .and()
        .authorizeRequests()
            .antMatchers("/users/all").hasRole("admin")
            .anyRequest().authenticated()
            .and()
        .formLogin()
        .and()
        .exceptionHandling().accessDeniedPage("/403");
}
Nach dem Login kopieren

Mit dieser überarbeiteten Konfiguration wird Benutzern mit nur der Rolle „Benutzer“ der Zugriff auf „/users/all“ verweigert. während Benutzer mit der Rolle „Administrator“ Zugriff haben.

Es ist wichtig, sich bei der Konfiguration der Spring Security-Autorisierung die Reihenfolge der Matcher zu merken, um sicherzustellen, dass die beabsichtigten Sicherheitsrichtlinien eingehalten werden durchgesetzt.

Das obige ist der detaillierte Inhalt vonWarum schlagen meine rollenbasierten Spring Security-Autorisierungen fehl?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage