[인증/보안] 기초 - Token

Value:1·2021년 10월 21일
0

대표적인 토큰기반 인증 ->JWT(JSON Web Token)

토큰기반 인증은 왜 쓸까?

: 세션기반 인증의 부담을 덜어주기 위해.
토큰기반인증은 클라이언트에서 인증정보를 보관하는 방법으로 고안됨!
: 토큰은 유저 정보를 암호화한 상태로 담을 수 있고
암호화했기 때문에 클라이언트에 담을 수 있다.

jwt란?

json web token, json 포맷으로 사용자에 대한 속성을 저장하는 웹 토큰.

구조 aaaaaa.bbbbbb.cccccc

1. header :

어떤 종류의 토큰인가?
어떤 알고리즘으로 암호화 하는가?

2. payload :

유저의 정보(중요한 정보 안닫는게 좋다),
권한을 부여받았는가?, 기타 필요한 정보

3. signature :

header, payload를 base64인코딩한 값과 salt값의 조합으로 암호화된 값

토큰기반 인증 장점.

1. statelessness & scalability (무상태성 & 확장성)

:서버는 클라이언트에 대한 정보를 저장할 필요x
: 토큰을 헤더에 추가함으로 인증절차 완료

2. 안정성

: 암호화 한 토큰을 사용
: 암호화 키를 노출 할 필요x

3. 어디서나 생성 가능

: 토큰을 생성하는 서버가 꼭 토큰을 만들지 않아도 됨

4. 권한 부여에 용이

: 토큰의 payload(내용물)안에 어떤 정보에 접근 가능한지 정의
사진과 연락처 사요권한 부여, 사진권한, 연락처 부여.

토큰기반 인증 절차

  1. 클라이언트가 서버에 아이디/비번을 담아 로그인 요청
  2. 아이디/비번 일치하는지 확인하고, 클라이언트에게
    보낼 암호화된 토큰을 생성
    :access/refresh 토큰을 모두 생성!
    이때, 토큰에 담길 정보(payload)는 유저를 식별할
    정보, 권한이 부여된 카테고리(사진, 연락처, 기타)이
    될 수 있다.
    두 종류의 토큰이 같은 정보를 담을 필요는 없다.
  3. 토큰을 클라이언트에게 보내주면, 클라이언트는 토큰을
    저장한다.
  4. 클라이언트가 HTTP 헤더(authorization 헤더)에
    토큰을 담아 보낸다.
    : bearer authentication 이용
  5. 서버는 토큰을 해독해 판단이 옳을 경우 클라이언트
    요청을 처리한 후 응답을 보내준다.

0개의 댓글