JWT(Json Web Token)

Stopss·2022년 5월 15일
0

CS

목록 보기
1/2

📌JWT(Json Web Token)


  • JWT는 토큰 기반 인증 방식
  • 서버와 클라이언트 간 정보를 주고 받을 경우 별다른 인증과정 없이 Http Request 헤더에 포함되어 있는 토큰을 통해 인증합니다.
  • 장점
    • 데이터 위변조를 막을 수 있다.
    • 인증 정보에 대한 별도의 저장소가 필요없다.
    • 토큰 기반으로 다른 로그인 시스템에 접근 및 권한 공유가 가능하다.
    • 다양한 디바이스를 지원한다.
  • 단점
    • JWT는 토큰의 길이가 길어, 인증 요청이 많아질수록 네트워크 부하가 심해진다.
    • Playload 자체는 암호화되지 않기 때문에 유저의 중요한 정보는 담을 수 없다.


🧩JWT 구조


# Header

  • alg - 알고리즘 방식. Signature 및 토큰 검증에 사용
    • HS256
    • RSA
  • typ - 토큰의 타입을 지정
    • JWT
    {
    	"alg":"HS256",
      "typ":"JWT"
     } 

# PayLoad

  • 토큰에서 사용할 정보의 조각들인 claim이 담겨 있다.
  • 즉, 서버와 클라이언트가 주고받는 시스템에서 실제로 사용될 정보에 대한 내용을 담고 있다.
    • Registed claims : 미리 정의된 클레임
      • iss(issuser) - 토큰 발급자
      • sub(subject) - 토큰 제목
      • aud(audience) - 토큰 대상자
      • exp(expireation time) - 토큰 만료시간(현재시간보다 늦어야 함)
      • iat(issued At) - 토큰 발급시간
      • jti(JWI ID) - 토큰 식별자
    • Public claims : 사용자가 정의할 수 있는 클레임. 공개용 정보 전달을 위해 사용
    • Private claims : 해당하는 당사자들 간에 정보를 공유하기 위해 만들어진 사용자 지정 클레임. 외부에 공개되도 상관없지만 해당 유저를 특정할 수 있는 정보들을 담는다.
    {
    	"sub":"1234567890"
      "name":"stopss"
      "exp":"1462420800"
     }

# Signature

  • Signature는 secret key를 포함하여 암호화되어있다. Header의 인코딩값과 Paylaod의 인코딩값을 합친 후 비밀키로 해쉬한다.


🖥️JWT 인코드/디코드 온라인 사이트


JWT 인코드/디코드 사이트 - https://jwt.io/



참고자료

https://dev-code-notepad.tistory.com/72
https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-JWTjson-web-token-%EB%9E%80-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC
https://velog.io/@jun17114/JWT-%ED%86%A0%ED%81%B0%EC%9D%84-%EB%B0%9C%ED%96%89%ED%95%B4%EB%B3%B4%EC%9E%90

0개의 댓글