Sichern Spring Boot REST-app mit basic-Authentifizierung
Habe ich nachgeschaut Artikel über die Verwendung von Spring Security, aber nicht ganz meine Antwort brauchen. Sie in der Regel befassen sich mit in-memory-Nutzer und nur-Text-Kennwörter.
, Was ich erreichen will:
Clients authentifizieren sich mit der Basic-Authentifizierung.
Gesichert Controller-Methoden wie folgt Aussehen:
@RequestMapping(value = "/test")
public ResponseEntity test(@AuthenticationPrincipal MyUser user){
//Logic
}
Möchte ich die controller-Methode eine MyUser-Objekt in seine Parameter, wenn der Benutzer authentifiziert ist, oder null, wenn nicht.
Ich bin die Speicherung von Hash-Passwort und salt des Benutzers in einer Datenbank, und ich habe einen service, der Sie authentifiziert gegeben Benutzername-Passwort-paar und gibt ein User-Objekt oder null, wenn die Authentifizierung erfolgreich war oder fehlgeschlagen ist, bzw.
Alles, was jetzt passiert, ist das abfangen jede Anfrage, Blick auf den header für die Basisauthentifizierung, vorbei an der info zu meiner benutzerdefinierten Authentifizierung-service und übergeben Sie dann Ihr Ergebnis in die controller-Methode. Leider habe ich bisher noch nicht in der Lage, das zu tun.
Ich lese zur Verwendung von benutzerdefinierten UserDetailsService
, aber das scheint nur zu behandeln, Holen der Benutzer-Daten aus der Datenbank, und keine Authentifizierung. Ich kann nicht herausfinden, wie stecken Sie alle Komponenten zusammen.
Können Sie zeigen mich in die richtige Richtung, wie man diese eher einfachen workflow zu arbeiten?
BEARBEITEN
Ich bin nicht mit XML-config und die einzige Sicherheit, die zugehörigen config die 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();
}
}
<http-basic />
in die <http>
tag (wenn Sie die XML-style-config). Für eine genauere Antwort, können Sie fügen Sie einige details über Ihre Konfiguration, um Ihre post? Zum Beispiel die Dateien / Klassen und die web.xml
(wenn Sie irgendwelchen haben)Ich bin nicht mit xml-config, ich habe es im code. Es ist nicht viel, es ist jedoch. Ich habe es zu der Frage
InformationsquelleAutor Martin Melka | 2016-04-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dieser Artikel wird hilfreich sein, wie ich verstehe, das ist, was Sie versuchen zu tun
http://www.baeldung.com/spring-security-authentication-provider
Bitte unterlassen Sie es, Fragen zu beantworten, die mit nur ein link: meta.stackexchange.com/q/8231 verbessern Sie die Qualität Ihrer Antwort, relevante Teile den link in deine Antwort.
Diese teilweise geholfen, aber führte zu einem weiteren problem - stackoverflow.com/questions/36515895/...
InformationsquelleAutor eWizard
Basic-Authentifizierung, die Sie tun können, in 3 verschiedenen Arten -
1 - fügen Sie Einfach die spring-security, maven dependency
Automatisch aktivieren Sie die Standardauthentifizierung wie Benutzernamen "user" und das Passwort finden Sie in der Konsole
using default security password - "bdd42ed9-635d-422b-9430-ce463625fd2e"
2 - erstellen Sie eine configuration-Klasse für security wie code unten
3 - eine weitere Möglichkeit, dies zu tun, fügen Sie Standard-Benutzernamen und das Kennwort in der Anwendung.properties-Datei wie unten
und erstellen der config-Klasse wie unter code
haben noch einige Zweifel, dann klicken Sie auf nachfolgenden link und sehen Sie sich dieses video
Basic-Authentifizierung
private AuthenticationEntryPoint authEntryPoint
sogar in deinem ersten code-block?InformationsquelleAutor jeet singh parmar