jwt

JWT에 대한 이해 1 with JWT handbook

Chapter 1

Posted by 동식이 블로그 on November 14, 2019

JWT에 대한 이해 1

저번에 jwt를 이용해서 인증을 구현하고 이번 프로젝트에서도 jwt를 이용한 소셜 로그인을 구현하게 되었지만, 사실 아직까지도 jwt가 뭐야? 왜 jwt를 쓰는데? 라는 질문에 명확하게 답하지 못하기 때문에 제대로 정리해보는 시간을 갖게 되었다.

1. Introduction

1-1. JWT란?

1
2
3
4
# JWT의 예시
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
  • JWT(JSON Web Token)은 당사자간에 정보를 안전하게 JSON 객체로 전송하기 위한 간결하고 독립적인 방법을 정의하는 공개표준(RFC 7519)이다
  • 이 정보는 디지털 서명되어 있으므로 신뢰할 수 있다
  • JWT는 비밀(HMAC 알고리즘사용) 또는 RSA , ECDSA를 사용하는 공개 / 개인 키 쌍을 사용하여 서명할 수 있다.
  • JWT의 또 다른 핵심 측면은 JSON Web Signatures(JWE, RFC 75156) 또는 JSON Web Encryption(JWE, RFC 75167)을 사용하여 서명할 수 있는 가능성이다.
    • JWT는 JWS / JWE와 함께 여러가지 문제에 강력하고 안전한 솔루션을 제공한다


1-2. 어떠한 문제를 해결하는가?

  • JWT의 주요 목적은 두 관계자 사이에 안전하게 claim을 전송하는 것이다. claim이란 특정 관계자나 오브젝트에 대한 정의(definition) 혹은 주장(assertions)이다.
  • 다음은 signature가 들어간 claim의 예시이다.
1
2
3
4
5
6
7
8
9
{
    “alg”: “HS256”,
	“typ”: “JWT”
}
{
    “sub”: “1234567890”,
    “name”: “John Doe”,
    “admin”: true
}
  • JWT의 주된 목적은 두 당사자 사이의 클레임을 전송하는 것이지만, 가장 중요한 측면은 단순하고 선택적으로 검증되고 암호화된 컨테이너 형식의 표준화 노력이다
  • 위와 같은 문제에 대한 Ad hoc 해결책은 사적으로나 공개적으로나 실행되어 왔다.

Ad hoc이란?

기본적으로 문제 해결에 대해 체계적인 접근 방싱과는 달리 특정 상황을 처리하기 위해 즉석에서 작성된 것을 의미

기본적으로 재사용의 의도없이 빠르고 더러운 코드를 작성하는 것을 의미한다.

대표적인 예로 사용자 입력 쿼리나 임시쿼리를 생각하면 된다

What is exact meaning of “ad hoc” in programming?

  • 앞으로 다음의 주제를 다룬다
    • Authentication
    • Authorization
    • Federated identity
    • Client-side sessions (“stateless” sessions)
    • Client-side secrets


1-3. 역사

  • JSON Object Signing and Encryption group (JOSE)는 2011년에 만들어졌다.
  • 이 그룹의 목표는 “JSON을 사용하는 프로토콜에 대한 보안 서비스의 상호운용성을 지원하기 위한 키와 알고리즘 식별자의 형식뿐만 아니라 무결성 보호 메커니즘(서명 및 MAC)과 암호화를 위한 메커니즘을 표준화한다”는 것이다.


JWT 공식사이트의 Sebastián E. Peyrott, Auth0 Inc. “The JWT Handbook.”을 요약 정리했다… 오역이 있을수 있으니 더 자세한 내용은 사이트를 참고해주세요…