1021 TIL 인증/보안 (2) token

냐하호후·2021년 10월 21일
0

TIL

목록 보기
54/101

토큰기반 인증 중 대표적인 JWT (JSON Web Token)을 사용할 것이다.
토큰은 cookie에도 로컬스토리지에도 리액트의 state에도 저장할 수 있다.

JWT의 종류

Access Token와 Refresh Token

보호된 정보들에 접근할 수 있는 권한부여에 사용한다. Access token의 유효기간이 만료된다면 refresh token을 사용하여 새로운 access token을 발급받는다. 이때, 유저는 다시 로그인할 필요가 없다.

JWT의 구조


JWT는 위 그림과 같이 . 으로 나누어진 3부분이 존재한다.

어떤 종류의 토큰인지, 어떤 알고리즘으로 sign(암호화)할지 적혀있다.

{
  "alg": "HS256",
  "typ": "JWT"
}

Payload

정보가 담겨있다. 권한을 담을수도 있고 유저이름등을 담아서 암호화시킨다. 비밀번호같이 민감한 정도는 담지 않는것이 좋다

Signature

원하는 비밀키(암호화에 추가할 salt)를 사용해서 암호화한다.

세션기반인증과 토큰기반 인증의 차이

세션 - 서버 부담
토큰 - 클라이언트 부담

어디에 인증정보를 저장하는가의 차이이다.

토큰기반 인증의 장점

  1. 무상태성 & 확장성
    서버는 클라이언트에 대한 정보를 저장할 필요가 없다.
    토큰을 헤더에 추가함으로 인증절차가 완료된다. 이때 하나의 토큰으로 여러 서버에서 인증을 받을 수 있다.

  2. 안정성
    암호화한 토큰을 사용한다. 암호화 키를 노출할 필요가 없다.

  3. 어디서나 생성 가능
    토큰을 생성하는 서버가 꼭 토큰을 만들지 않아도 된다.
    토큰생성용 서버를 만들거나 다른회사에 토큰작업을 맡겨도 된다.

  4. 권한 부여에 용이
    토큰의 payload(내용물) 안에 어떤 정보에 접근 가능한지를 정의할 수 있다.
    ex)사진과 연락처 사용권한 부여 / 사진 권한만 부여 / 연락처 권한만 부여

참고

토큰을 어디에 저장할까?

profile
DONE is better than PERFECT

0개의 댓글

관련 채용 정보