Die Natur der Frühlingssicherheit
Die Frühlingssicherheit ist im Wesentlichen eine Reihe von Filtern, die dann als separates Filter in die Filterkette eingefügt werden, die als FilterchainProxy bezeichnet wird. Wie in der Abbildung gezeigt.
Tatsächlich kann es unter FilterchainProxy mehrere Filterkette geben, um verschiedene URLs zu verifizieren, und die Filter, die in der Filterkette gehören, erhöhen oder verringern sie entsprechend dem definierten Service automatisch. Es ist daher nicht erforderlich, diese Filter anzuzeigen und zu definieren, es sei denn, Sie möchten Ihre eigene Logik implementieren.
Schlüsselkategorien
Authentifizierung
Die Authentifizierung ist eine Schnittstelle, mit der Benutzerauthentifizierungsinformationen dargestellt werden. Bevor sich der Benutzer bei der Authentifizierung anmeldet, werden die relevanten Informationen in ein Objekt der authentifizierungsspezifischen Implementierungsklasse eingekapselt. Nachdem die Anmeldeauthentifizierung erfolgreich ist, wird ein Authentifizierungsobjekt mit umfassenderen Informationen, einschließlich Benutzerberechtigungen und anderer Informationen, generiert und dann im SecurityContext gespeichert, der von SecurityContexTHOLDER für nachfolgende Programme wie die Authentifizierung von Zugriffsrechten gehalten wird.
AuthenticationManager
Die für die Überprüfung verwendete Hauptschnittstelle ist AuthenticationManager, der nur eine Methode hat:
Public Interface AuthenticationManager {Authentifizierungsauthentifizierung (Authentifizierungsauthentifizierung) löst die Authentifizierungspflicht aus;}Es kann drei Situationen geben, nachdem die Authenticate () -Methode ausgeführt wurde:
Die Überprüfung ist erfolgreich und eine Authentifizierung mit Benutzerinformationen wird zurückgegeben.
Die Überprüfung schlug fehl, und eine Authentifizierungspflichtausnahme wurde ausgelöst.
Nicht zu beurteilen, null zurückzugeben.
Providermanager
Providermanager ist die häufigste Implementierung von AuthenticationManager oben. Es wird nicht selbst verifiziert, sondern delegiert die Überprüfung an die Authentifizierungsproviderliste, die es konfiguriert, und ruft dann jeden Authentifizierungsprovider zur Authentifizierung auf. In diesem Prozess wird eine Authentifizierungsprovider erfolgreich authentifiziert, sofern keine weitere Überprüfung fortgesetzt wird. Dieses Authentifizierungsergebnis wird direkt als Authentifizierungsergebnis von Providermanager verwendet.
Zertifizierungsprozess
Benutzer melden sich mit ihrem Benutzernamen und ihrem Passwort an.
Spring Security umfasst den erhaltenen Benutzernamen und das Kennwort in eine Implementierungsklasse für Authentifizierungsschnittstellen, wie beispielsweise die häufig verwendete BenutzernamepasswordAuthenticationToken.
Übergeben Sie das oben generierte Authentifizierungsobjekt an die AuthenticationManager -Implementierungsklasse Providermanager zur Authentifizierung.
ProviderManager fordert jeden Authentifizierungsprovider auf. Nachdem die Authentifizierung erfolgreich ist, verkauft ein Authentifizierungsobjekt Benutzerberechtigungen und andere Informationen werden zurückgegeben.
Weisen Sie das von AuthenticationManager zurückgegebene Authentifizierungsobjekt dem aktuellen SecurityContext zu.
Benutzerdefinierte Überprüfung
Mit den oben genannten Wissensreserven können Sie die Verifizierungsmethode anpassen. Aus dem obigen Punkt können wir sehen, dass die Authentifizierungsprüfer tatsächlich zur Durchführung von Überprüfungsvorgängen verwendet werden. Wenn Sie die Verifizierungsmethode anpassen möchten, müssen Sie daher nur Ihre eigene Authentifizierungsprovider implementieren und dann dem Providermanager hinzufügen.
AuthenticationProvider anpassen
@ComponentPublic Class CustomAuthenticationProvider implementiert die AuthentifizierungProvider {@Override öffentliche Authentifizierung Authentifizierung (Authentifizierung Authentifizierung) löscht die AuthentifizierungException {String name = authentication.getName (); String password = authentication.getcredentials (). ToString (); if (sollteAuthenticateAgainsttHirdPartysystem ()) {// die Anmeldeinformationen // verwenden und sich gegen das System von Drittanbietern authentifizieren. Gibt neue usernamepasswordAuthenticationToken zurück (Name, Passwort, New ArrayList <> ()); } else {return null; }} @Override public boolean Supports (Klasse <?> Authentifizierung) {return authentication.equals (userernamepasswordAuthenticationToken.class); }}Die Supports () -Methode akzeptiert einen Authentifizierungsparameter, um zu bestimmen, ob die in übergebene Authentifizierung ein Typ ist, den der Authentifizierungsprovider verarbeiten kann.
Register AuthenticationProvider
Registrieren Sie nun den AuthenticationProvider, den Sie gerade im Providermanager erstellt haben, und alle Vorgänge sind abgeschlossen.
@Configuration@enableWebSecurity@componentscan ("org.baeldung.security") öffentliche Klasse SecurityConfig erweitert WebSecurityConFigurerAdapter {@autowired Private CustomAuthenticationProvider AuthProvider; @Override Protected void configure (AuthenticationManagerBuilder Auth) löst Ausnahme aus {auth.authenticationProvider (AuthProvider); } @Override protected void configure (httpsecurity http) löst Ausnahme aus {http.authorizeRequests (). AnyRequest (). Authenticated () .and () .httpbasic (); }}Zusammenfassen
Das obige ist die vom Editor vorgelegte Spring Security -Überprüfungsprozessanalyse und benutzerdefinierte Überprüfungsmethoden. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!