작성
·
327
0
현재 템플릿 프로젝트를 보면
login 을 하고나면 /oauth/kakao/callback 으로 리다이렉트 되어
access_token이 json의 형태로 오고 있습니다.
그러면 사용자의 브라우저로 access_token이 가는건데,
이렇게 해도 사용자한테 token 노출이 없이 다시 로그인 요청을 할 수 있나요?
제가 찾아보니 redirect_uri로 code를 받아오면 카카오 서버로부터 token을 발급 받은뒤
바로 로그인 처리하는 방법도 있던데 어느게 맞는건가요?
답변 1
1
안녕하세요 준표님. 프론트랑 서버랑 분리된 환경이다보니 강의에서는 카카오 토큰을 프론트에서 발급 받은 후 해당 토큰을 이용해서 로그인을 한다고 가정을 하였습니다.
분리된 프론트환경에서 redirec url을 서버쪽으로 지정을하고 소셜 로그인 api에서 카카오 토큰을 받는대신에 authorization code를 받아서 카카오토큰 발급 -> 회원조회 -> 회원가입 및 JWT발급으로 진행하셔도 구현은 가능할꺼로 보이네요. 뭐가 더 맞다라고는 말씀드리긴 힘들꺼같은데 토큰자체를 프론트에 노출하지 않고 싶으시다면 그것도 좋은 방법이라고 생각합니다. 어차피 로그인을 했다는것 자체가 해당사용자라는 것이기때문에 토큰이 탈취되는 상황만 없다면 강의에서 설명드린 내용으로도 충분하지 않을까 생각이드네요!
이거는 개인적인 의견인데 참고정도만 하시면 좋을꺼같습니다. 인터셉터로 구현하면 시큐리티 자체에대해서 공부를 하지 않더라도 쉽게 인증을 구현 할 수 있을것이고 시큐리티를 사용하면 아무래도 시큐리티 자체에 대한 학습을 하셔야하죠. 시큐리티가 필터도 워낙 많고 공부할게 많죠. 장점으로는 시큐리티에서 제공하는 기능들을 이용하면 직접 구현해야하는게 줄어들것입니다. 예를 들면 resolver를 구현하지 않아도 회원정보를 받을 수 있거나 어노테이션 기반으로 uri의 권한을 설정 할 수도 있을꺼구요. 테스트할때도 어떤유저로 로그인한 상태이다 이런 것들도 어노테이션으로 지정이 가능합니다.
결과 자체는 비슷하지만 편의기능이 더 많다로 생각이 드네요
일단 강의에서 나온대로 진행해보겠습니다!
그런데 강의에서는 인증을 Interceptor에서 처리하는데,
SpringSecurity 에서는 Filter에서 (DispatcherServlet 앞에서) 처리를 하더라고요
혹시 두 방식의 차이점(장단점)을 알 수 있을까요?