[우아한테크코스] 5월 13일 TIL

less than 1 minute read

[Spring] token

클라이언트의 로그인 요청 -> 서버의 토큰 발행(response body)
클라이언트의 토큰 저장(쿠키/authorization)
인가 필요한 요청마다 토큰 전송

  • 쿠키에 토큰 저장
    4kb까지 저장, 서버에서 접근 가능
    HTTP request 시 자동 포함
    정보 전달 수단의 쿠키 사용
    한정된 도메인에서만 사용 가능
  • 웹 스토리지(localStorage, sessionStorage)
    보안이 약하다.

  • Json Web Token
    인증 헤더에서 사용되는 토큰의 포맷
    Claim(사용자에 대한 프로퍼티나 속성) 기반으로 권한과 인증의 역할이 있다.
    jwt는 요청 받고 발급하고 검증만 하면 되어서 추가 저장소가 필요 없다.
    refresh token은 긴 유효기간을 가지면서 access token 만료 시 새로 발급해주는 역할
    세션/쿠키에 비해 길이가 길어서 서버 자원낭비가 일어날 수 있다.
    1. 사용자 로그인
    2. 서버는 검증하고 사용자에 아이디 부여, payload 작성해 secret key를 통해 access token(refresh token도 필요하면 이때 발급) 발급해 반환
    3. jwt 필요한 api 요청시마다 Authorization header에 Access token 담아 보냄
    4. 서버는 jwt의 시그니처로 복호화해 검증하고 payload 디코딩해서 사용자 정보 보고 괜찮으면 요청한 데이터를 클라이언트에 반환