Ich habe viele Dienste und möchte meine Authentifizierung mit einem Authentifizierungsdienst zentralisieren. Jetzt bin ich ein Neuling bei Spring Boot und ich habe keine Ahnung, wie ich das möglich mache.Spring Boot Authorization Server Anfrage an externen Dienst senden, um Benutzerdetails zu erhalten
Ich implementiere einfach die normale Sicherheit von Spring und es funktioniert perfekt und ich finde nur einige Tutorials über jdbcAuthentication
, inMemoryAuthentication
, etc, aber keine Authentifizierung, wo der Authentifizierungs-Service eine Anfrage an einen anderen Dienst senden. Hat jemand eine Ahnung davon?
Meine Sicherheit basierend auf Token ->JWT
Ich glaube, ich die AuthenticationManagerBuilder
manipulieren müssen, weil es einen Benutzernamen gültig ist oder nicht entscheidet, ob.
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
}
und ich mache meine Anfrage mit Feign - vielleicht der falsche Ort für diesen Code
@Override
public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse res) throws AuthenticationException, IOException, ServletException {
AccountCredentials credentials = new ObjectMapper()
.readValue(req.getInputStream(), AccountCredentials.class);
UserRequest userRequest = Feign.builder()
.decoder(new GsonDecoder())
.target(UserRequest.class,"http://localhost:7998/api/user-service/user/" + credentials.getUsername());
return getAuthenticationManager().authenticate(new UsernamePasswordAuthenticationToken(credentials.getUsername(),credentials.getPassword(),emptyList()));
}
Die Idee hinter JWT ist, dass sie‘ re staatenlos und in sich geschlossen. – chrylis
Ja, aber um ein Token zu erhalten, müssen Sie Benutzername und Passwort überprüfen. Und diese Daten gehören nicht zu meinem Auth-Service. Er sollte immer meinen User-Service fragen. Danach gibt er das Token zurück – DrMed