부부개발단의
fakeshopapi youtube
와github
, clone 코딩을 진행한 원균님의github코드
, 그리고다양한 블로그의 글
을 보며 종합하였습니다.
<ref> - https://www.youtube.com/watch?v=3NRGhA19fqM
https://ksh-coding.tistory.com/71
https://github.com/urstoryp/fakeshopapi
https://github.com/HomebrewComputerClub/Team2_clone_BE
https://github.com/sh111-coder/oauth2WithJwtLogin
기본적인 뼈대는 위 그림과 같이 작동하게 된다.
클라이언트와 서버 간에 API 통신이 이루어질 때, 서버에 도달하기 전에 filter를 미리 거칠 수 있게 된는데, 여기서
AuthenticationFilter
가 그런 역할을 담당하고,
AuthenticationManager
는 구현체인 AuthenticationProvider
를, 무슨 provider
를 어떻게 적용할 것인지를 다루는 매니저의 역할을 담당하며,
AuthenticationProvider
는 실질적인 토큰의 생산이나 각종 구현을 맡게 된다.
로그인 부분은 크게 4가지로 나누어질 수 있고, 그 안의 세부사항은 보안 강도를 어떻게 정하는지에 따라 그 구조가 바뀔 수 있다.
탈취에 대한 보안 기준을 1,2,3 모두 적용시켜 최대한 안전한 웹서비스를 구현할 예정이다.
우선, AccessToken의 경우 로그인의 핵심적인 역할을 하고 있기 때문에 어떤 방식으로든 탈취되어서는 위험하며, 보안에 중요하다. 따라서 위와 같은 XSS, CSRF 방식으로부터 모두 안전하고 쉽게 확인할 수 없는 **Javasript의 private 변수
**에 설정할 수 있다.
하지만 새로고침 시에는 private 변수의 AccessToken이 휘발되기 때문에, 계속해서 RefreshToken을 통해 AccessToken 을 발급받을 수 있도록 조치할 수 있다.