1.보안성
쿠키를 전달하지 않아도 된다.
기존보다 보안성을 조금 더 높일 수 있다.
중간에 누군가 토큰을 탈취하지 못하게 토큰 만료시간을 적게 설정할수있다.
유효시간이 끝나면 새로운 Access Token을 발급 받는다.
2.무상태 & 확장성
세션을 사용한다면 세션이 저장되어있는 서버로 요청을 해야하는데 서버를 옮기거나 서버가 죽는다면?
토큰은 이런 문제를 해결 할 수 있다.
3.Access Token 과 Refresh Token
Access Token은 보안성을 높이기 위해 만료 시간을 설정해 놓았다.
토큰 사용기간을 길게 잡으면 보안에 좋지 않고, 보안상 만료 시간을 짧게 해놓으면 그 만큼 사용자가 자주 로그인을 해서 새롭게 Access Token을 발급 받아야하는 번거로움이 있다.
그래서 나온게 RefreshToken이다.
RefreshToken은 Access Token이 발급되면서 같이 발급이 된다.
Access Token보다 만료기간을 더 많이 가져갈수있다.
예를 들어 Access Token의 만료기간이 30분이라면 RefreshToken의 유효기간은 2주로 잡고
사용자가 로그인을 하고 Access Token과 Refresh Token을 발급 받는다.
클라이언트는 refresh token을 Local stroage같은 안전한곳에 저장하고 API 호출은 Access Token을 가지고 한다.
만약 Access Token이 만료가 되면 refresh token을 서버로 보내면서 다시 Access Token을 발급 받고 그걸로 다시 api를 호출 할 수 있다.
Access Token은 API요청을 할때마다 HTTP통신을 통해 노출이 되는 반면에 Refresh token은 Access Token이 만료 됐을때만 네트워크 통신을 통해 서버로 보내기 때문에 탈취 위험이 매우 적다.
'개인공부' 카테고리의 다른 글
RequestScope (0) | 2021.11.11 |
---|---|
ObjectProvider와 JSR-330 Provider (0) | 2021.11.11 |
생성자 주입으로 불변하게 설계한다. (0) | 2021.11.03 |
@ComponentScan (0) | 2021.11.02 |
빈 스코프 (0) | 2021.11.01 |