[JAVA] Informationen zur Spring Security-Authentifizierung

Überblick

Es ist ein Memorandum, weil ich die Authentifizierung von Spring Security untersucht habe.

Schema

Screen Shot 2019-08-14 at 19.52.18.png

SecurityFilterChain wird auf die Anforderung angewendet. Standardmäßig ist UsernamePasswordAuthenticationFilter für die Authentifizierung verantwortlich (gilt für angegebene Pfade, z. B. / login). AuthenticationManager wird vom Filter aufgerufen und entscheidet, ob eine Authentifizierung durchgeführt werden soll oder nicht. AuthenticationManager verfügt über mehrere Authentifizierungsanbieter und delegiert die Authentifizierungsberechtigungs- / Ablehnungsverarbeitung an jeden Anbieter.

AuthenticationFilter Es wird auf die URL angewendet, die den Authentifizierungsprozess ausführt. Führt eine Nullprüfung der Benutzereingaben durch, gibt basierend auf den Eingabeinformationen ein UsernamePasswordAuthenticationToken aus und delegiert die Authentifizierungsberechtigung an den Manager.

UsernamePasswordAuthenticationToken Ein Datenobjekt mit einem Eingabewert, der AbstractAuthenticationToken erbt, und einem Feldparameter, der für die Beurteilung der Authentifizierung verwendet wird. Jeder Anbieter empfängt dieses Objekt und bestimmt anhand der Feldparameter, ob es authentifiziert werden kann.

AuthenticationManager Die Schnittstelle org.springframework.security.authentication.AuthenticationManager. Für diese Schnittstelle ist nur eine Methode definiert.

AuthenticationManager.java


Authentication authenticate(Authentication authentication)
			throws AuthenticationException;

Die Standardimplementierungsklasse ist org.springframework.security.authentication.ProviderManager.

ProviderManager verfügt tatsächlich über AuthenticationProvider, der beispielsweise die Kennwortübereinstimmung als Array beurteilt und die Authentifizierungsmethode jedes Anbieters aufruft, um die Authentifizierung zu beurteilen.

AuthenticationProvider Dies ist eine Klasse, die tatsächlich eine Authentifizierungsbeurteilung vornimmt (z. B. Kennwortabgleich usw.). Wie oben erwähnt, können mehrere Anbieter registriert werden.

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
	    auth.authenticationProvider(authProvider());
        auth.authenticationProvider(authProvider2());
    }

    public AuthenticationProvider authProvider() {
	    return new AbstractUserDetailsAuthenticationProvider() {

	        @Override
	        protected void additionalAuthenticationChecks(UserDetails userDetails,
		        UsernamePasswordAuthenticationToken authentication) throws AuthenticationException {
		      // 
	        }

	        @Override
	        protected UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken authentication)
		        throws AuthenticationException {
		        //Der Vorgang zum Erstellen eines bestimmten Benutzers, den Sie für die Anmeldung verwenden möchten
		        return user;
	        }
	    };
    }

Es wird möglicherweise nicht sehr oft verwendet, aber wenn Sie den Provider dazu bringen, einen Benutzer zurückzugeben, der UserDetails erbt, Dies kann auch wie eine In-Memory-Authentifizierung sein.

Um einen Anbieter zu registrieren, fügen Sie einfach eine Bean-Annotation unter der Konfigurationsklasse hinzu, die WebSecurityConfigurerAdapter erbt.

    @Bean
    public AuthenticationProvider authProvider() {
	    return new CustomAuthenticationProvider(passwordEncoder, authenticationService);
    }

Die Benutzerinformationen für die Datenbank werden in der RetrieveUser-Methode des Anbieters erfasst, und die Authentifizierung wird durch Bestätigen der Übereinstimmung des Kennworts beurteilt.

Das ist einfach, aber es ist eine Zusammenfassung. In Bezug auf die interne Implementierung ist dies interessant, da es Gegenmaßnahmen gegen Timing-Angriffe gegen das Hashing von Passwörtern gibt.

In diesem Artikel finden Sie eine Zusammenfassung von Spring Security als Ganzes. Spring Security Usage Memo Basic / Mechanismus

Recommended Posts

Informationen zur Spring Security-Authentifizierung
Über den Frühling ③
Spring Security-Nutzungsnotiz Authentifizierung / Autorisierung
Implementierte Authentifizierungsfunktion mit Spring Security ②
Implementierte Authentifizierungsfunktion mit Spring Security ③
Spring Boot Tutorial Verwenden der Spring Security-Authentifizierung
Implementierte Authentifizierungsfunktion mit Spring Security ①
Erfahren Sie mehr über die Architektur der Spring Security-Authentifizierungsverarbeitung
Zertifizierung / Autorisierung mit Spring Security & Thymeleaf
Über Spring AOP
Über den Frühling AOP
DB-Authentifizierung mit Spring Security und Hashing mit BCrypt
Erreichen Sie die BASIC-Authentifizierung mit Spring Boot + Spring Security
Über DI des Frühlings ①
Versuchen Sie die LDAP-Authentifizierung mit Spring Security (Spring Boot) + OpenLDAP
Über Spring AOP Pointcut
Über DI des Frühlings ②
Spring Security erhöht 403 verboten
Fügen Sie mit Spring Security Ihre eigenen Authentifizierungselemente hinzu
[Einführung in Spring Boot] Authentifizierungsfunktion mit Spring Security
Erstellen Sie eine API-Schlüsselauthentifizierung für die Web-API in Spring Security
[Persönliche Notizen] Über das Spring Framework
Spring Security-Nutzungsnotiz CSRF
Informationen zum Spring Framework-Kontextfehler
Spring Security-Nutzungsnotiz Run-As
Sicherheit der Verwendungsnotizmethode für Spring Security
Spring Security-Nutzungsnotiz Remember-Me
Anmeldefunktion mit Spring Security
[Frühlingssicherheit] Frühlingssicherheit auf GAE (SE)
Versuchen Sie es mit Spring Boot Security
Spring Security-Nutzungsnotiz CORS
Spring Security-Verwendungsnotiztest
Informationen zu Anmerkungen zu Spring DI
Verwenden Sie die Standardauthentifizierung mit Spring Boot
Beim Testen der Formularauthentifizierung mit Spring Security tritt ein 404-Fehler auf
Antwortheader für die Verwendung von Spring Security
Informationen zur Signaturauthentifizierung mit Java Time 1
Über das Binden der Spring AOP Annotation
Oauth2-Authentifizierung mit Spring Cloud Gateway
Sitzungsverwaltung für Spring Security-Nutzungsnotizen
Über =
Spring Security-Nutzungsnotiz Basic / Mechanismus
Über Fehler bei der Implementierung der Federvalidierung
Spring Security ruft meinen AuthenticationProvider zweimal auf und die Authentifizierung schlägt fehl
Einführung der Basisauthentifizierung in Heroku [Spring Framework]
Spring Security Usage Memo Domänenobjektsicherheit (ACL)
Spring Dependency Injection mit Java, Kotlin
Versuchen Sie die Verschlüsselung / Entschlüsselung von Spring Security AES256-Zeichenfolgen
Der Spring Boot @ WebMvcTest-Test aktiviert die Standardsicherheit von Spring Security
Informationen zur ersten Anzeige von Spring Framework
Verwenden Sie Spring Security JSP-Tags mit FreeMarker
Wie Spring Security mit Hello World funktioniert
Implementierung der Anmeldefunktion durch Spring Security (securityConfig)
Implementierungsbeispiel bei gemeinsamer Verwendung der Formularauthentifizierung und der Anforderungsheaderauthentifizierung in Spring Security