π κΈ°μ λ©΄μ ν λ°λ‘κ°κΈ°
β¬ κ°λ
π‘ JWT (Json Web Token)
κ΅¬μ± | μ€λͺ
|
---|
μ΄λ»κ²? | ν ν° μ체μ μ 보λ₯Ό λ΄κ³ μνΈνλ μλͺ
μ μΆκ°ν |
ννλ? | JSON ν¬λ§·μ |
π― | Claim λ² μ΄μ€ ν ν°μ
λλ€. |
β
οΈ νΉμ§
- β
HTTP Authorization ν€λμ μ€μ΄ 보λ
λλ€.
- β
οΈ .μ ꡬλΆμλ‘ ν€λ, νμ΄λ‘λ, μκ·Έλμ³ 3λΆλΆμΌλ‘ ꡬλΆλ©λλ€.
- β
οΈ ν€λμ νμ΄λ‘λλ base64λ‘ μΈμ½λ©λ©λλ€
- β
οΈ Self-contained : ν ν° μ체μ μ 보λ₯Ό λ΄μ 보λ
λλ€.
β¬ μ₯μ
- β¬ ν€λ, νμ΄λ‘λ μ‘°μ μ μκ·Έλμ³ κ²μ¦μ ν΅κ³Όνμ§ λͺ»νκΈ° λλ¬Έμ μλ³μ‘°λ μμ²μ κ±Έλ¬λΌ μ μμ΅λλ€.
- β¬ μΈμ¦ μ 보μ λν λ³λμ μ μ₯μκ° νμμμ΅λλ€. (Access ν ν° νμ )
- β
οΈ μΈμ
κ³Ό λ¬λ¦¬ μλ²κ° Statelessν΄ μ€μΌμΌμμμ΄ μ©μ΄ν©λλ€.
- β
οΈ λͺ¨λ°μΌ λ± μ¬λ¬ ν΄λΌμ΄μΈνΈμ λμνκΈ° μ©μ΄ν©λλ€.
- β
οΈ μ¬μ©μ μ λ³΄κ° νμν λ DB μ‘°νλ₯Ό 건λλΈ μ μμ΅λλ€.
β
οΈ λ¨μ
- β
οΈ νμ΄λ‘λλ μ 3μκ° μ½κ² 볡νΈνν μ μμ΄ λ³΄μμ΄ νμν μ 보λ₯Ό λ΄μ μ μμ΅λλ€.
- β
οΈ ν ν°μ νμ·¨λΉνλ©΄ λμ²νκΈ° μ΄λ ΅μ΅λλ€.
- β
οΈ νμ΄λ‘λμ λ΄μ μΈμ¦ μ λ³΄κ° λμ΄λ μλ‘ ν ν° ν¬κΈ°κ° μ»€μ Έ λ€νΈμν¬ λΆνκ° μ»€μ§λλ€.
⬠ꡬ쑰
β
| λͺ
μΉ | μ€λͺ
|
---|
| Header | μκ³ λ¦¬μ¦ νμ (alg), ν ν° μ ν (typ) μ 보 ν¬ν¨ |
β
| Payload | μ€μ μ¬μ©ν μ 보 μ‘°κ°μΈ Claim ν¬ν¨ μ¬μ©μ μ 보 μ μ₯ |
| Signature | ν€λμ νμ΄λ‘λμ μΈμ½λ© κ° + Secret Keyλ₯Ό ν©μΉ λ€ μνΈν μκ³ λ¦¬μ¦μΌλ‘ μμ±ν΄λΈ ν΄μ¬ κ° |
β¬ Claim
π‘ Claim
JWTμμ μ¬μ©νλ key-value νμμν ν μμ μ 보λ₯Ό λ§ν©λλ€.
β¬ Registered Claims
미리 μ μλ ν΄λ μ
β
| μ’
λ₯ | Eng | Kor |
---|
| iss | issuer | λ°κΈμ |
| sub | subject | μ λͺ© |
| aud | audience | λ°κΈ λμ |
| exp | expireation time | λ§λ£ μκ°, NumericDate νμ |
| iat | issued At | λ°κΈμΌμ |
| jti | JWI ID | JWT ν ν° μλ³μ, μ€λ³΅ λ°©μ§μ© Claim |
| nbf | not before | νμ±μΌμ, nbf μ΄ν ν ν°μ΄ νμ±νλ©λλ€. |
β¬ Public Claims
μ¬μ©μκ° μ μν μ μλ ν΄λ μ
⬠곡κ°μ© μ 보λ₯Ό μ λ¬νκΈ° μν΄ μ¬μ©ν©λλ€.
β¬ Private Claims
λΉμ¬μλ€ κ°μ μ 보λ₯Ό 곡μ νκΈ° μν΄ λ§λ€μ΄μ§ μ¬μ©μ μ§μ ν΄λ μ
- β¬ μΈλΆμ 곡κ°λΌλ μκ΄μμ§λ§ ν΄λΉ μ μ λ₯Ό νΉμ ν μ μλ μ 보λ€μ λ΄μ΅λλ€.