Nella mia applicazione Spring Boot con servizi web RESTful ho configurato Spring Security insieme a Spring Social e SpringSocialConfigurer
.Spring Security autenticazione/autorizzazione tramite endpoint REST
In questo momento ho due modi di autenticazione/autorizzazione - tramite nome utente/password e tramite social network, ad esempio Twitter.
Al fine di implementare l'autenticazione/autorizzazione tramite il mio punto finale RESTful nel mio controller Spring MVC resto Ho aggiunto seguente metodo:
@RequestMapping(value = "/login", method = RequestMethod.POST)
public Authentication login(@RequestBody LoginUserRequest userRequest) {
Authentication authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(userRequest.getUsername(), userRequest.getPassword()));
boolean isAuthenticated = isAuthenticated(authentication);
if (isAuthenticated) {
SecurityContextHolder.getContext().setAuthentication(authentication);
}
return authentication;
}
private boolean isAuthenticated(Authentication authentication) {
return authentication != null && !(authentication instanceof AnonymousAuthenticationToken) && authentication.isAuthenticated();
}
ma non sono sicuro di cosa esattamente deve essere restituito al cliente dopo successo /login
chiamata endpoint. Penso che la restituzione di un oggetto di autenticazione completo sia ridondante.
Cosa deve essere restituito al client in caso di autenticazione avvenuta con successo?
Potrebbe dirmi come implementare correttamente questo metodo di accesso?
Inoltre, in caso di login RESTfull avrò UsernamePasswordAuthenticationToken
e in caso di accesso tramite Twitter avrò SocialAuthenticationToken
Va bene avere diversi token in una stessa applicazione?
Grazie per la risposta. Questo è esattamente ciò che uso già per la mia attuale applicazione. – alexanoid