JWT
JWT(JSON Web Token)
λ±μ₯ κ³κΈ°
κΈ°μ‘΄μλ μΏ ν€-μΈμ λ°©μμ ν΅ν΄ μ¬μ©μ μΈμ¦μ μννμλ€. μ΄ λ°©λ²μ μλ²κ° μ¬μ©μλ₯Ό μλ³νκΈ° μν΄ μ¬μ©μμ μ 보λ₯Ό μλ²μ μ μ₯νκ³ μμ΄μΌ νκ³ , μ΄λ λ€μμ λ¬Έμ λ₯Ό λ°μμμΌ°λ€.
λͺ¨λ μ¬μ©μμ μ 보λ₯Ό μ μ₯ν΄μΌ νκΈ° λλ¬Έμ μλ²μ λΆνλ₯Ό μΌμΌν¨λ€.
μλ²λ₯Ό νμ₯νκΈ° μ΄λ €μμ§λ€. μλ²κ° μ¬λ¬ λκ° λλ©΄ μΈμ μ 보λ₯Ό 곡μ ν΄μΌ νλλ°, μ΄ κ³Όμ μ΄ λ³΅μ‘νκΈ° λλ¬Έ
λ°λΌμ Stateful λ°©μμΌλ‘ μ¬μ©μ μ 보λ₯Ό κ΄λ¦¬νλ κ²μ μ΄λ €μμ λλΌκ² λμκ³ , μ΄μ λν λμμΌλ‘ λ±μ₯ν Stateless λ°©μμ μΈμ¦ κΈ°λ²μ΄ λ°λ‘ Tokenμ μ΄μ©ν μΈμ¦ κΈ°λ²μ΄λ€.
μ μ
JSON νμμ λ°μ΄ν°λ₯Ό μ΄μ©νλ ν ν°
jwt λ κ²μ¦ κ°λ₯ν(can be verified) λ°μ΄ν° ν΅μ μ μν κ²
μ£Όμ. μνΈνλ λ°μ΄ν° ν΅μ μ μν κ²μ΄ μλ!!!
λ΄λΆμ λ°μ΄ν°λ λꡬλ λ³Ό μ μμ νμ§λ§ λ³μ‘°λ λΆκ°λ₯
SIGNATURE λΆλΆμ ν€λ, νμ΄λ‘λλ₯Ό κΈ°λ°μΌλ‘ secret key(HMAC) λλ public/private key pair(RSA/ECDSA)λ₯Ό μ¬μ©ν μκ³ λ¦¬μ¦μ ν΅ν΄ κ³μ°λ¨
λ°λΌμ, SIGNATURE λΆλΆμ΄ λ³κ²½λλ©΄ μ ν¨νμ§ μμ κ²μΌλ‘ νλ¨
header, bodyκ° λ³μ‘°λμκ±°λ μ΄λ€μ μνΈννλ μκ³ λ¦¬μ¦ λλ key κ°μ΄ λ³μ‘°λμκ±°λμ
header, bodyκ° κ°κ³ μνΈν μκ³ λ¦¬μ¦κ³Ό key κ° λͺ¨λ κ°μμΌ signatureκ° κ°κΈ° λλ¬Έ
ꡬ쑰
3κ°μ§ ꡬμμ κ°κ°μ ν΄λΉνλ json λ°μ΄ν°λ₯Ό BASE64λ‘ μΈμ½λ©ν κ²
κ° jsonμ ν€κ°μ compactνκ² νννλ κ²μ κΆμ₯ν¨
Header
sign κ³Όμ μμ μ¬μ©λ μκ³ λ¦¬μ¦ (HS256, RSA256 λ±λ±β¦)
ν ν°μ νμ (JWT)
Payload
Claimμ ν¬ν¨ν λ°μ΄ν°
Claimμ΄λ? ν΄λΉ λ°μ΄ν°μ λν λΆκ° μ€λͺ
registered
λ°νμ, λ§λ£μκ°, subject, audience λ±
https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
public
jwtλ₯Ό μ¬μ©ν λ μ¬μ©νλ λΆκ° μ 보λ€
https://www.iana.org/assignments/jwt/jwt.xhtml
registered κ³Ό μ€λ³΅λλ κ²λ€ μμ. μμ μλ λͺ μΈ λ°μ΄ν°λ€μ΄ public claim μ ν΄λΉ
private
registered, public μ ν΄λΉνμ§ μλ 컀μ€ν λ°μ΄ν°
μ λ°μ΄ν°μ id, name κ°μ κ°
Signature
ν΄λΉ JWTμ λν μλͺ . ν ν°μ΄ λ³μ‘°λμ§ μμμμ 보μ₯νκΈ° μν΄ μ‘΄μ¬
미리 μ½μλ ν€λ₯Ό ν΅ν΄ κ²μ¦ν¨μΌλ‘μ¨ μ΄ ν ν°μ΄ μλ§μ μ¬λμκ²μ λ°νλμμλ κ²μ¦ κ°λ₯
μΈμ½λ©λ ν€λ, νμ΄λ‘λ κ°, ν€κ°μ κΈ°λ°μΌλ‘ μνΈνλ λ°μ΄ν°
μ μ μ¬ν
보μ μνμ΄ μλ λ°μ΄ν°λ λ£μΌλ©΄ μ λ¨. λ¨μ μΈμ½λ©λ λ¬Έμμ΄μ΄λ―λ‘ λꡬλ λ΄λΆ λ°μ΄ν°λ₯Ό νμΈν μ μμ
λ³μ‘°λ₯Ό λ°©μ§νλ€μ§ λ°μ΄ν°λ₯Ό μλνλ κΈ°λ₯μ μμ
λ³΄ν΅ Authorization ν€λμ λ΄μ 보λ΄λ νμμ μ¬μ©. ν€λ μ¬μ΄μ¦κ° λ무 ν¬λ©΄ μ²λ¦¬νμ§ λͺ»νλ μλ²λ€μ΄ μ겨 jwt ν ν° μ¬μ΄μ¦λ μ΅λν μκ² λ§λλ κ²μ κΆμ₯ν¨
ν€λ ν¬κΈ°κ° 8KBκ° λμ§ μλλ‘ νλ κ²μ΄ μ’λ€κ³ ν¨
λ°κΈ λ° μ¬μ© μ μ°¨
ν΄λΌμ΄μΈνΈκ° μΈμ¦ μλ²μ μΈμ¦ μμ²μ νλ€.
μΈμ¦ μ μ°¨μ ν΅κ³Όνλ©΄, μΈμ¦ μλ²λ μ‘μΈμ€ ν ν°μ λ°ννλ€.
ν΄λΌμ΄μΈνΈλ ν ν°κ³Ό ν¨κ» 리μμ€ μλ²μ λ³΄νΈ μμμ μ κ·Όνλ€.
μΆμ²
Last updated