Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JWT에 대하여 #24

Open
123000l opened this issue Sep 4, 2022 · 0 comments
Open

JWT에 대하여 #24

123000l opened this issue Sep 4, 2022 · 0 comments
Labels
조사 Improvements or additions to documentation

Comments

@123000l
Copy link
Collaborator

123000l commented Sep 4, 2022

Json Web Token

JWT 구조

1. Header(헤더)

구분자로 .을 사용하여 aaaaa.bbbbb.ccccc로 표현된다.

  • typ : 토큰의 타입
  • alg : 해시 암호화 알고리즘. 대표적으로 사용되는 알고리즘은 HMAC, SHA256, RSA, HS256가 있다.
// 예시
{

  “typ” : “JWT”,

  “alg” : ‘HS256”

}

2. Payload (페이로드)

토큰에 담을 유저 정보가 들어있다. 페이로드에 담은 정보의 한 ‘조각’을 클레임(claim)이라고 부르고, 이는 name/value 쌍으로 이루어져 있다.

  • 클레임의 종류
    • 등록된 클레임 (registered)
    • 공개 클레임 (public)
    • 비공개 클레임 (private)
// 예시
{

  “sub” : “user10001”,

  “iat” : 1569302116

}

3. Signature (서명) - 가장 핵심적인 부분!

[헤더 base64 + 페이로드 base64 + SECRET_KEY]를 사용하여 JWT 백엔드에서 발행된다. 해시 알고리즘을 사용했기 때문에 헤더 또는 페이로드의 정보가 클라이언트에 의해 변경된 경우는 서명이 무효화된다.

  • 토큰을 인코딩하거나 유효성 검증(토큰의 정보가 서버로부터 생성된 것인지 증명)을 할 때 사용하는 고유한 암호화 코드이다.
  • 헤더와 페이로드의 값을 각각 BASE64Url로 인코딩하고, 인코딩한 값을 비밀 키를 이용해 헤더에서 정의한 알고리즘으로 해싱을 하고, 이 값을 다시 BASE64Url로 인코딩하여 생성한다.

장점

단점

@123000l 123000l added the 조사 Improvements or additions to documentation label Sep 4, 2022
@123000l 123000l changed the title JWT에 대한 조사 JWT에 대한 Sep 4, 2022
@123000l 123000l changed the title JWT에 대한 JWT에 대하여 Sep 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
조사 Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant