[Spring] JWT 토큰

이병수·2024년 2월 2일
0

스프링 정리

목록 보기
17/24
post-thumbnail
post-custom-banner

JWT 토큰에 대해서

JWT(Json Web Token)은 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미한다.

JWT 기반 인증은 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식이다.
사용자가 JWT를 서버로 전송하면 서버는 검증하는 과정을 통해 검증이 완료되면 요청한 응답을 알려준다.


JWT 프로세스

jwt 인증 프로세스에 대해서는
[Spring] 인증과 인가 & 쿠키와 세션 에 간략하게 나와있다.

HTTP 특성상 Stateless Connectionless 이기 때문에 로그인을 한 유저는 JWT를 헤더에 넣어줘야한다.
하지만 로그인에도 영원한 법은 없는 것이다.
인증된 사용자가 어느 정도 시간동안 재인증 하지 않아도 되도록 만든 것이 Access Token이다.
만약 기간이 만료되면 다시 인증을 하던지, Refresh Token을 통해 인증을 하는 방법이 있다.
(해당 내용은 추후..)


JWT 구조

JWT 구조에는 Header , Payload , Signature 3개가 있다.

  • alg : Signature 암호화 알고리즘을 의미한다.

  • typ : 토큰 유형을 의미한다.


Payload

Register claims : 미리 정의된 클레임

sub : 토큰 제목(subject)
aud : 토큰 대상자(audience)
iat: 토큰이 발급된 시각(issued at)
exp : 토큰의 만료 시각(expired)

Pulbic claims : 사용자가 정의할 수 있는 클레임

  • 공개용 정보 전달을 위해 사용

Private claims : 해당하는 당사자들 간에 정보를 공유하기 위해 만들어진 사용자 지정 클레임

  • 외부에 공개되도 상관없으나, 해당 유저를 특정할 수 있는 정보를 담음

Signature

헤더와 페이로드의 문자열을 합친 후, 헤더에서 선언한 알고리즘과 key를 이용해 암호화 한 값을 의미한다.

이 Signature는 key가 없으면 복호화가 불가능하기 때문에 보안상 안전하다는 특성이 있다.


JWT 인증 토큰 구조 확인하기

  • https://jwt.io/ 이 사이트에 들어가서 jwt 토큰이 어떤 구조인지 확인하고 사용해 볼 수 있다.

JWT 토큰 장,단점

장점

  • 헤더와 페이로드를 가지고 Signature를 생성하므로 데이터 위조와 변조를 막을 수 있다.

  • http 헤더나 url 파라미터를 통해 전송되기 때문에 네트워크 부하가 적다.

  • 쿠키와 세션처럼 인증 정보에 대한 별도의 저장소가 필요가 없다.

  • 모바일 앱에서 사용하기 적합하다.

단점

  • 토큰의 크기가 커질수록 트래픽에 영향을 미칠 수 있다.

  • 토큰이 발급되면 만료 기간 변경이 불가능하기에, 토큰 만료 처리를 구현해야한다.

profile
백엔드 개발자가 되고 싶어요
post-custom-banner

0개의 댓글