Maison > Java > javaDidacticiel > Pourquoi mes autorisations basées sur les rôles Spring Security échouent-elles ?

Pourquoi mes autorisations basées sur les rôles Spring Security échouent-elles ?

Barbara Streisand
Libérer: 2024-12-09 02:28:09
original
954 Les gens l'ont consulté

Why Are My Spring Security Role-Based Authorizations Failing?

Correction de l'autorisation de rôle dans Spring Security

Spring Security offre des mécanismes d'autorisation robustes, mais des configurations incorrectes peuvent entraîner des vulnérabilités de sécurité. Cet article aborde un problème courant selon lequel les utilisateurs dotés de rôles limités peuvent accéder aux ressources réservées aux administrateurs.

L'extrait de code fourni configure Spring Security en utilisant à la fois l'authentification en mémoire et l'authentification JDBC. Alors que le problème est attribué au nom d'utilisateur sélectionné, au mot de passe, 1 des utilisateurs où username=? requête, le véritable coupable se trouve ailleurs.

Le problème vient de l'ordre des matchers dans la méthode authorizeRequests(). Spring Security évalue les correspondants dans l'ordre et la première correspondance détermine la décision d'autorisation. Dans ce cas, le matcher suivant :

.anyRequest().authenticated()
Copier après la connexion

est placé avant le matcher basé sur les rôles :

.antMatchers("/users/all").hasRole("admin")
Copier après la connexion

De ce fait, toutes les requêtes sont autorisées tant que l'utilisateur est authentifié , quel que soit leur rôle. Pour résoudre ce problème, réorganisez les matchers afin que le matcher basé sur le rôle soit prioritaire :

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");
}
Copier après la connexion

Avec cette configuration révisée, les utilisateurs ayant uniquement le rôle "user" se verront refuser l'accès à "/users/all". tandis que les utilisateurs avec le rôle « admin » y auront accès.

Il est important de se rappeler l'ordre des correspondants lors de la configuration de l'autorisation Spring Security pour garantir que les politiques de sécurité prévues sont appliqué.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal