본문 바로가기
강의 및 교육/Inflearn - Webgoat

JWT tokens - 3. Decoding a JWT token

by 이우정 2022. 2. 10.
728x90

[ 이론 ]

Concept

인증을 위해 JSON Web Tokens(JWT)를 사용하는 방법과 JWT 사용할 때 알아야하는 일반적인 함정을 배운다. 

 

Goals

토큰 사용 및 토큰 유효성 검사를 안전하게 구현하는 방법을 배우자. 

 

Introduction

많은 응용 프로그램은 인증 후 추가 교환을 위해 클라이언트가 ID를 표시할 수 있도록 JWT를 사용한다. 

JSON Web Token (JWT)는 당사자 간의 정보를 안전하게 전송하기 위한 컴팩트하고 독립적인 방식이며, JSON 객체를 활용하는 공개 표준(RFC 7519)이다. 디지털 서명이 포함되어 이 정보는 검증될 수 있고 신뢰할 수 있다. JWT는 비밀키(HMAC 알고리즘) 또는 RSA를 사용한 대칭킹를 이용해 서명할 수 있다. 

JSON Web Token은 클라이언트의 신원과 특성에 관련된 정보(claims)를 전달하기 위해 사용된다. 이 "container"는 클라이언트의 신분이나 어떠한 특성이 조작되는 것을 막기 위해서 서버에 의해 서명된다. (예시 : client 로그인에서 일반 사용자를 관리자로 변경) 이 토큰은 인증 성공 시 생성되고, 어떤 작업을 하기전 서버에게 검증된다. 이것은 응용 프로그램에서 본인의 신분을 나타내기 위해 "신분증"으로써 사용되며, 서버는 이것을 안전한 방식으로 검증하기 위해 stateless하고 portable한 과정을 거친다.  (portable : 클라이언트와 서버 상호간 상이한 기술 사용)

Structure of a JWT token

base64 인코딩된 토큰은 1. 헤더 2. claims(정보의 한 조각) 3. 서명으로 구성된다. 

 

헤더와 클래임 둘 다 JSON 객체에 의해 응답된다. 헤더는 JWT에 적용되는 암호화 작업과 선택적으로 JWT의 추가 속성을 설명한다. 클레임은 JWT에 의해 전달되는 클레임들로 구성된 JSON 객체를 나타낸다. 

 

[ 문제 ]

Decoding a JWT token

JWT 토큰을 디코딩하자. WebWolf 내에서 JWT 기능을 사용할 수 있다. 

eyJhbGciOiJIUzI1NiJ9.ew0KICAiYXV0aG9yaXRpZXMiIDogWyAiUk9MRV9BRE1JTiIsICJST0xFX1VTRVIiIF0sDQogICJj
bGllbnRfaWQiIDogIm15LWNsaWVudC13aXRoLXNlY3JldCIsDQogICJleHAiIDogMTYwNzA5OTYwOCwNCiAgImp0aSIgOiAiO
WJjOTJhNDQtMGIxYS00YzVlLWJlNzAtZGE1MjA3NWI5YTg0IiwNCiAgInNjb3BlIiA6IFsgInJlYWQiLCAid3JpdGUiIF0sDQ
ogICJ1c2VyX25hbWUiIDogInVzZXIiDQp9.9lYaULTuoIDJ86-zKDSntJQyHPpJ2mZAbnWRfel99iI

다음 토큰을 디코딩하여 user를 찾아라. 

 

[ 풀이 ]

1. ME

여기에 Encoded에 토큰 넣으면 Decoded에 나온다. 

https://jwt.io/

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

 

728x90