💫 Facts
✅ Spring CRUD API, Auth API(인증 및 인가)의 데이터 흐름 파악
✅ 토큰 이해
💫 Findings
🧩 Token
토큰 기반 인증 : 인증받은 사용자들에게 토큰을 발급하고, 서버에 요청을 할 때 헤더에 토큰을 함께 보내 유효성을 검사하는 방식
👉🏻 세션과 달리 토큰 기반 인증방식은 다양한 도메인에 대응할 수 있고, 서버의 메모리 부담을 줄일 수 있다.
또한, 서버가 여러 대를 두고 사이트를 운영할 때, 세션 유지가 제대로 안될 수 있지만,
토큰 인가 방식으로는 서버에서 토큰을 발급하고 보내주고 이를 서버에 저장하지 않기에 서버가 여러 대여도 상관없다.
🤯 하지만, 치명적인 단점이 있다. 이미 발급된 토큰에 대해서는 돌이킬 수 없다. 세션/쿠키의 경우 만일 쿠키가 악의적으로 이용된다면, 해당하는 세션을 지워버리면 된다. 하지만 토큰은 한 번 발급되면 유효기간이 완료될 때 까지는 계속 사용이 가능하다. 따라서 악의적인 사용자는 유효기간이 지나기 전까지 신나게 정보들을 털어갈 수 있다.
💡 이를 위한 해결책으로는 기존의 Access Token의 유효기간을 짧게 하고 Refresh Token이라는 새로운 토큰을 발급한다. 그렇게 되면 Access Token을 탈취당해도 상대적으로 피해를 줄일 수 있다.
🧩 OAuth
OAuth : 사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할 수 있게 해주는 HTTP 기반의 보안 프로토콜
📝 출처
'Project > TIL, WIL' 카테고리의 다른 글
TIL(40) 21-11-17 : @Transactional / 스프링 Controller가 Client로 부터 파라미터를 받는 방법 / Lambda와 Stream (0) | 2021.11.17 |
---|---|
TIL(39) 21-11-15 : 도커를 사용해서 컨테이너를 구성해보기 (0) | 2021.11.15 |
TIL(37) 21-11-09 : Object Oriented Programming (0) | 2021.11.09 |
TIL(36) 21-11-08 : Spring DI / IoC (0) | 2021.11.09 |
TIL(35) 21-11-05 : Spring은 고마운 친구 (0) | 2021.11.05 |