Token

Sasha Park·2021년 4월 16일

Token-based Authentication

기존 Session 기반 인증 = 서버(DB)에 유저 정보를 담는 인증 방식, 서버의 부담을 줄이기 위해 토큰이라는 개념을 도입하게 되었음. 그래서 클라이언트에서 인증 정보를 보관하는 방법이 고안됨.

JSON Web Token (JWT)

Acess Token: 보호된 정보들에 접근할 수 있는 권한 부여에 사용. 탈취에 대비해 짧은 유효기간을 줌.

Refresh Token: 유효기간이 끝난 Acess Token을 재발행 시 발급하는 토큰. 은행에서 10분마다 로그인을 재 요청하는 것은 refresh token을 발급안하고 상기 AT 토큰만 발급하기 때문임.

계정연동에 탁월한 장점을 보임.

JWT 구조

  • header
    어떠한 종류의 토큰인지, 어떤 알고리즘으로 sign(암호화) 할지가 적혀있음. base64 방식으로 인코딩.

  • Payload
    User 정보가 적혀있음. password와 같이 민감한 정보는 되도록 담지 말자.

-Signature
Header와 Payload를 인코딩한 값과 salt를 추가하여 암호화 됨.

Token-based Authentication 장점

  • Statelessness & Scalabili
    서버 & DB의 부하를 덜 수 있다.
  • 안전함
  • 어디서나 생성 가능
  • 권한 부여에 용이
    payload에 어떤 정보에 접근 가능할지 설정 가능.
  • 여러 개의 서버를 사용하는 서비스, 그리고 향후 앱의 확장을 고려 할때 알맞은 선택.
profile
'어?' 에서 '아!'가 되는 순간을 즐기는 개발자입니다.

0개의 댓글