리액트를 다루는 기술을 참고하여 기술하였습니다.
JWT란?
JWT란 Json 포멧을 이용하여 속성을 저장하는 Claim기반의 Web Token이다.
이렇게 만들어진 JSON파일은 static변수로 로컬 스토리지 파일에 저장되는데 static으로 저장되는 이유는 HTTP통신을 할때 항상 헤더에 저장되어 보내지기 때문이다.
이러한 토큰을 이용한 인증 서비스가 필요한 시점은 언제일까?
다음과 같은 경우 토큰을 이용하면 편리하다.
- 모바일 어플리케이션을 만들때
- 인증정보를 다른 어플리케이션으로 전달할때
- 보안이 중요할때
JWT의 구조
JWT는 3가지 구조로 되어있다. Header, Payload, Signature로 이루어 지며 각 부분은 Base64Url로 인코딩 되어 표현되어 진다.
- header
헤더는 두가지 정보로 구성된다.
typ : 토큰의 타입을 지정 (웹의 경우에는 jwt겠죠?)
alg : 토큰의 Signature를 해싱하기 위한 알고리즘을 지정
- Payload
토큰에서 사용할 정보의 조각들인 Claim이 담겨 있다.
클레임은 총 3가지로 나눠지며 Json형태의 정보를 넣을수 있다.
- Siganature
Signature은 토큰을 인코딩 하거나 유효성 검사를 할때 사용하는 고유한 암호화 코드이다.
JWT의 작동방식
JWT의 단점
토큰자체에 중요한 정보를 담고 있기 때문에 문제가 된다.
토큰의 길이 : 토큰의 정보가 많아지면 Payload의 길이도 길어지고 이는 네트워크에 부담을 준다.
Payload : 페이로드 그 자체는 암호화 된것이 아니기 때문에 중간에 탈취 당하여 디코딩하면, 정보를 볼수 있는 보안의 위험성이 존재한다
Stateless : 장점이지만, 단점으로 상태를 저장하지 않기 때문에 제어가 불가능하다.
Store Token : 토큰은 클라이언트 사이드에서 관리하기 때문에 다양한 문제가 발생한다.
참고자료
Uploaded by N2T