[CS] Access, Refresh Token

호호빵·2023년 2월 20일
0

Computer Science

목록 보기
8/13

앞선 쿠키와 세션, 인증 & 인가와 JWT 글을 참고하면 좋다.

토큰 기반 인증

쿠키와 세션방식을 지나 요즘 토큰 기반의 JWT 인증방식을 사용한다고 한다.
하지만 탈취 시 위험이 있고 이를 예방하기 위해 Refresh를 도와주는 Refresh Token을 알아보고자 한다.

JWT(Json Web Token)

  • 인증에 필요한 정보들을 암호화시킨 Json 토큰을 의미함
  • 헤더, payload, signature 구조, 각 부분은 Base64URL로 인코딩
  • payload: 토큰에서 사용할 정보의 조각들인 Claim이 담겨있음
  • 매 요청시 DB를 조회 하지 않고 토큰 자체만으로 사용자의 정보와 권한 확인 가능
  • 클라이언트 인증 정보를 저장하는 세션과 다르게, 서버는 무상태가 되어 서버 확장성이 우수해짐

AccessToken

  • 클라이언트가 갖고 있는 실제 유저 정보 토큰

RefreshToken

  • 새로운 AccessToken을 발급해주기 위한 토큰, 데이터베이스에 유저 정보와 같이 기록

Q. 어떻게 토큰 탈취 시를 대비할까?
AccessToken은 발급된 이후 클라이언트에 저장되어 토큰 자체로 검증되기 때문에 탈취되면 토큰 만료전까지 누구나 권한 접근이 가능해지는 문제점이 있다. 토큰의 유효 시간을 짧게하여 대응하기도 하지만 그만큼 자주 로그인을 해서 새로운 token을 발급받아야하는 번거로움이 있다. 그래서 보다 긴 유효 시간을 가진 RefreshToken을 동시에 발급해 서버에 저장해두고 acT과 rfT을 웹스토리지에 저장하고 요청이 있을때마다 헤더에 담아 보냄으로써 탈취에 대비한다.



JWT 구조
acTk, rfTk 사용이유

profile
하루에 한 개념씩

0개의 댓글