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 : Sélectionner tout - Visualiser dans une fenêtre à part
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(); }
Seulement voila, comme vous pouvez vous en douter, coder les interceptors, redirections si 401, etc, c'est chiant ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
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
Partager