J'ai beaucoup de services et je veux centraliser mon authentification avec un service d'authentification. Maintenant, je suis un noobie à Spring Boot et je n'ai aucune idée de comment je rends cela possible. Je viens d'implémenter la sécurité normale de Spring et cela fonctionne parfaitement et je ne trouve que quelques tutoriels sur jdbcAuthentication
, inMemoryAuthentication
, etc. mais pas une authentification où le service d'authentification envoie une requête à un autre service. Quelqu'un at-il une idée à ce sujet?Spring Boot Authorization Server envoyer la demande au service externe pour obtenir les détails de l'utilisateur
Ma sécurité basée sur des jetons ->JWT
Je pense que je dois manipuler le AuthenticationManagerBuilder
parce qu'il décide si un nom d'utilisateur est valide ou non.
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
}
et je fais ma demande avec Feindre - peut-être au mauvais endroit pour ce 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()));
}
L'idée derrière JWT est qu'ils » re stateless et autonome. – chrylis
Oui, mais pour obtenir un jeton, vous devez vérifier le nom d'utilisateur et mot de passe. Et ces données n'appartiennent pas à mon service d'authentification. Il devrait toujours demander mon service utilisateur. Après cela, il retourne le jeton – DrMed