Ich habe Artikel über die Verwendung von Spring Security nachgeschlagen, aber sie sind nicht ganz auf meine Bedürfnisse. Sie beschäftigen sich normalerweise mit In-Memory-Benutzern und Klartext-Passwörtern.Secure Spring Boot REST-App mit Standard-Authentifizierung
Was will ich erreichen:
Clients unter Verwendung der Standardauthentifizierung authentifizieren.
Secured Controller-Methoden wie folgt aussehen:
@RequestMapping(value = "/test")
public ResponseEntity test(@AuthenticationPrincipal MyUser user){
// Logic
}
ich die Controller-Methode ein MyUser Objekt in seine Parameter erhalten möchten, wenn der angegebene Benutzer authentifiziert ist oder null, wenn nicht.
Ich speichere Hash-Passwort und Salz eines Benutzers in einer Datenbank, und ich habe einen Dienst, der das angegebene Benutzername-Passwort-Paar authentifiziert und ein Benutzerobjekt oder Null zurückgibt, wenn die Authentifizierung erfolgreich war bzw. fehlgeschlagen ist.
Alles, was jetzt passieren muss, ist, jede Anfrage abzufangen, den Basis-Authentifizierungs-Header anzuschauen, die Informationen an meinen benutzerdefinierten Authentifizierungsdienst zu übergeben und dann das Ergebnis an die Controller-Methode zu übergeben. Leider konnte ich das nicht machen.
Ich las auf individuelle Verwendung UserDetailsService
, aber das scheint nur Benutzerdaten aus der Datenbank zu handhaben das Abrufen und keine Authentifizierung. Ich kann nicht herausfinden, wie man alle Komponenten zusammen steckt.
Können Sie mir in die richtige Richtung zeigen, wie dieser einfache Workflow funktioniert?
EDIT
ich nicht XML-Konfigurations verwende und die einzige sicherheitsrelevanten Konfigurations ich habe, ist:
@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class ApplicationSecurity extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**").csrf().disable();
http.authorizeRequests()
.antMatchers("/user").permitAll()
.antMatchers("/user/**").permitAll()
.anyRequest().authenticated();
}
}
Im Grunde, was Sie unten erstellen 'sucht nach ist, 'in das' ' Tag (wenn Sie XML-Stil-Konfiguration verwenden) hinzuzufügen. Für eine genauere Antwort können Sie Ihrem Post einige Details zu Ihrer Konfiguration hinzufügen? Zum Beispiel, die Konfigurationsdateien/Klassen und die 'web.xml' (wenn Sie welche haben) –
Ich benutze keine XML-Config, ich habe es in-code. Es ist nicht viel dabei. Ich habe es der Frage –