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

Warum schlagen meine rollenbasierten Spring Security-Autorisierungen fehl?

Barbara Streisand
Barbara StreisandOriginal
2024-12-09 02:28:09954Durchsuche

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

vor dem rollenbasierten Matcher platziert:

.antMatchers("/users/all").hasRole("admin")

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");
}

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!

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