Login d'un client spring front a un back microservice spring boot via rest
Hello
J'ai un problème de securité sur une application microservice qui m'enerve au plus haut point.
En résumé, j'ai un backend microservice spring boot securisé par oauth2. J'arrive très bien a me connecter dessus via postman.
J'ai également fait un front ultra simple qui est composé d'un controler qui poste directement les parametres et enregistre le token en réponse dans HttpSession, et un inthrceptor qui ajoute le header Authorization et le token s'il est en memoire:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| @FeignClient(name = "gateway-server")
@RequestMapping("auth")
public interface AuthProxy {
@PostMapping(value = "oauth/token", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
TokenBean PostLogin(
@RequestParam("grant_type") String grantType,
@RequestParam("client_id") String clientId,
@RequestParam("client_secret") String clientSecret,
@RequestParam("username") String username,
@RequestParam("password") String password,
@RequestParam("scope") String scope
);
@GetMapping(value = "current")
void GetCurrent();
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
@Slf4j
@Component
public class AuthInterceptor extends HandlerInterceptorAdapter {
@Autowired
private HttpSession httpSession;
@Override
public boolean preHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler) throws Exception {
TokenBean tokenBean = (TokenBean) httpSession.getAttribute("token");
if (tokenBean != null) {
response.setHeader("Authorization", tokenBean.getTokenType() + " " + tokenBean.getAccessToken());
log.info("Authorization : " + tokenBean.getTokenType() + " " + tokenBean.getAccessToken());
}
return true;
}
} |
Seulement voila, comme vous pouvez vous en douter, coder les interceptors, redirections si 401, etc, c'est chiant ....
Du coup, est-ce que spring security permet de gerer tout ça pour moi ?
La plupart des ressources que j'ai trouvé traitaient d'une connexion en api monolithique où le service d'authentification est integré à l'appli, ou,concernaient de technos style angular pour les webservices se connectant à un backend
Merci