Heim >Java >javaLernprogramm >Warum schlagen meine rollenbasierten Spring Security-Autorisierungen fehl?
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!