Heim  >  Artikel  >  Java  >  Wie funktioniert der Authentifizierungs- und Autorisierungsprozess von Spring Security?

Wie funktioniert der Authentifizierungs- und Autorisierungsprozess von Spring Security?

WBOY
WBOYOriginal
2024-04-17 16:33:01591Durchsuche

Spring Security bietet Authentifizierungs- und Autorisierungsmechanismen, darunter: Authentifizierung: Überprüfen Sie die Gültigkeit von Benutzeranmeldeinformationen mithilfe eines Authentifizierungsanbieters, z. B. mithilfe von Benutzername und Kennwort oder LDAP-Authentifizierung. Autorisierung: Verwenden Sie einen Zugriffsentscheidungsmanager, um Benutzerberechtigungen und die angeforderte URL zu vergleichen, um zu bestimmen, ob Zugriff basierend auf einer Zugriffsentscheidung gewährt werden soll, z. B. AffirmativeBased (jede passende Rolle erlaubt Zugriff) oder ConsensusBased (alle passenden Rollen erlauben Zugriff). Praktischer Fall: RBAC (rollenbasierte Zugriffskontrolle): Verwenden Sie UserDetailsService zum Definieren von Rollen, verwenden Sie RoleHierarchyVoter zum Einrichten der Rollenhierarchie und verwenden Sie AffirmativeBased für den Zugriff auf den Entscheidungsmanager zur Autorisierung.

Spring Security 的身份验证和授权流程是如何工作的?

Authentifizierungs- und Autorisierungsprozess für Spring Security.

Authentifizierung Dienst (Benutzer mithilfe benutzerdefinierter Logik authentifizieren )

LDAPAuthenticationProvider (Authentifizierung über LDAP)

  • Der Client sendet eine Authentifizierungsanfrage an den Authentifizierungsserver, die den Benutzernamen und das Passwort enthält.
  • Der Authentifizierungsserver übergibt die Anmeldeinformationen an den entsprechenden Authentifizierungsanbieter.
  • Der Authentifizierungsanbieter prüft die Gültigkeit der Anmeldeinformationen und gibt ein authentifiziertes UserDetails-Objekt zurück.
  1. Autorisierung
  2. Nach erfolgreicher Authentifizierung autorisiert Spring Security über den Zugriffsentscheidungsmanager, der Folgendes umfasst:
AccessDecisionManager (bestimmt, ob Zugriff gewährt wird)

AffirmativeBased (jede Rollenübereinstimmung ermöglicht Zugriff)

ConsensusBased (alle Rollen müssen übereinstimmen, um den Zugriff zu ermöglichen)

    Autorisierungsprozess:
  • Der Authentifizierungsserver ruft die Berechtigungen im UserDetails-Objekt ab.
  • Der Access Decision Manager vergleicht Benutzerberechtigungen mit der angeforderten URL.
Entscheiden Sie anhand der Zugriffsentscheidung, ob der Zugriff gewährt werden soll.

  1. Praktischer Fall: Rollenbasierte Zugriffskontrolle
  2. In einem Szenario mit rollenbasierter Zugriffskontrolle (RBAC) können Sie die folgenden Schritte ausführen, um Spring Security für die Autorisierung zu verwenden:
Definieren Sie einen UserDetailsService, der in verwendet wird Ein gegebener Wert gibt UserDetails mit der entsprechenden Rolle nach dem Benutzernamen zurück.

Konfigurieren Sie RoleHierarchyVoter, um eine Rollenhierarchie einzurichten.

Konfigurieren Sie den AffirmativeBased Access Decision Manager.

  • Konfiguration
  • @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Override
        protected void configure(AuthenticationManagerBuilder auth) {
            auth.userDetailsService(userDetailsService());
        }
    
        @Override
        protected void configure(HttpSecurity http) {
            http.authorizeRequests()
                    .antMatchers("/admin/**").hasRole("ROLE_ADMIN")
                    .antMatchers("/user/**").hasRole("ROLE_USER")
                    .anyRequest().permitAll();
        }
    
    }
  • UserDetailsService
@Service
public class UserDetailsServiceImpl implements UserDetailsService {

    @Override
    public UserDetails loadUserByUsername(String username) {
        User user = userRepository.findByUsername(username);
        return new UserDetailsAdapter(user);
    }

}

UserDetailsAdapter

public class UserDetailsAdapter implements UserDetails {

    private final User user;

    public UserDetailsAdapter(User user) {
        this.user = user;
    }

    // ... UserDetails implementation methods ...

}

Das obige ist der detaillierte Inhalt vonWie funktioniert der Authentifizierungs- und Autorisierungsprozess von Spring Security?. 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