authentication(JWT)
πΏ jwt
ꡬ쑰
- WTλ Header, Payload, Signatureμ 3 λΆλΆμΌλ‘ μ΄λ£¨μ΄μ§λ©°, Json ννμΈ κ° λΆλΆμ Base64λ‘ μΈμ½λ© λμ΄ ννλλ€.
- κ°κ°μ λΆλΆμ μ΄μ΄ μ£ΌκΈ° μν΄ . ꡬλΆμλ₯Ό μ¬μ©
Base64λ μνΈνλ λ¬Έμμ΄μ΄ μλκ³ , κ°μ λ¬Έμμ΄μ λν΄ νμ κ°μ μΈμ½λ© λ¬Έμμ΄μ λ°ν(μ¦ μνΈν μλμμ΄μ 곡κ°λμ΄μλ€.)
- Header(ν€λ)
- typ μ alg λκ°μ§ μ λ³΄λ‘ κ΅¬μ±(Signatureλ₯Ό ν΄μ±νκΈ° μν μκ³ λ¦¬μ¦ μ§μ )
- typ: ν ν°μ νμ μ§μ (JWT)
- alg: μκ³ λ¦¬μ¦ λ°©μμμ§μ νλ©° μλͺ (signature) λ° ν ν° κ²μ¦μ μ¬μ©
- typ μ alg λκ°μ§ μ λ³΄λ‘ κ΅¬μ±(Signatureλ₯Ό ν΄μ±νκΈ° μν μκ³ λ¦¬μ¦ μ§μ )
- payload(νμ΄λ‘λ)
- ν ν°μμ μ¬μ©ν μ 보μ μ‘°κ°(Claim)μ΄ λ΄κ²¨μμ
- Registered Claim(λ±λ‘λ ν΄λ μ): ν ν° μ 보λ₯Ό νννκΈ° μν΄ μ΄λ―Έ μ ν΄μ§ μ’
λ₯μ λ°μ΄ν°λ‘ ꡬμ±
- iss: ν ν° λ°κΈμ(issuer)
- sub: ν ν° μ λͺ©(subject)
- aud: ν ν° λμμ(audience)
- exp: ν ν° λ§λ£μκ°(NumericDate νμ)
- nbf: ν ν° νμ± λ μ§(not before) μ΄ λ μ μ§λκΈ° μ μ ν ν°μ νμ±ν μλ¨
- iat: ν ν° λ°κΈ μκ°(issedat) ν ν° λ°κΈ μ΄νμ κ²½κ³Ό μκ°
- jti: ν ν° μλ³μ(jwt id) μ€λ³΅ λ°©μ§λ₯Ό μν΄ μ¬μ©νλ©° μΌνμ© ν ν° λ±μ μ¬μ©
- Public Claim(κ³΅κ° ν΄λ μ): μ¬μ©μ μ μ ν΄λ μμΌλ‘, 곡κ°μ© μ 보λ₯Ό μν΄ μ¬μ©(μΆ©λ λ°©μ§λ₯Ό μν΄ URI ν¬λ§·)
- Private Claim(λΉκ³΅κ° ν΄λ μ): μ¬μ©μ μ μ ν΄λ μμΌλ‘, μλ²μ ν΄λΌμ΄μΈνΈ μ¬μ΄μ μμλ‘ μ§μ ν μ 보λ₯Ό μ μ₯
- token typeμ΄λ username λ±λ±
- Signature(μλͺ
): ν ν°μ μΈμ½λ©νκ±°λ μ ν¨μ± κ²μ¦μ ν λ μ¬μ©νλ κ³ μ ν μνΈν μ½λ
- ν€λ(Header)μ νμ΄λ‘λ(Payload)μ κ°μ κ°κ° BASE64λ‘ μΈμ½λ©
- λΉλ°ν€λ₯Ό μ΄μ©ν΄ ν€λμ μ μν μκ³ λ¦¬μ¦μΌλ‘ ν΄μ±, μ΄ κ°μ λ€μ BASE64λ‘ μΈμ½λ©
κ³ λ €μ¬ν
- Self-contained: ν ν° μ체μ μ 보λ₯Ό λ΄κ³ μμΌλ―λ‘ μλ μ κ²μ΄ λ μ μλ€.
- ν ν° κΈΈμ΄: ν ν°μ νμ΄λ‘λ(Payload)μ 3μ’ λ₯μ ν΄λ μμ μ μ₯νκΈ° λλ¬Έμ, μ λ³΄κ° λ§μμ§μλ‘ ν ν°μ κΈΈμ΄κ° λμ΄λ λ€νΈμν¬μ λΆνλ₯Ό μ€ μ μλ€.
- Payload μΈμ½λ©: νμ΄λ‘λ(Payload) μ체λ μνΈν λ κ²μ΄ μλλΌ, BASE64λ‘ μΈμ½λ© λ κ²μ΄λ€. μ€κ°μ Payloadλ₯Ό νμ·¨νμ¬ λμ½λ©νλ©΄ λ°μ΄ν°λ₯Ό λ³Ό μ μμΌλ―λ‘, JWEλ‘ μνΈννκ±°λ Payloadμ μ€μ λ°μ΄ν°λ₯Ό λ£μ§ μμμΌ νλ€.
- Stateless: JWTλ μνλ₯Ό μ μ₯νμ§ μκΈ° λλ¬Έμ νλ² λ§λ€μ΄μ§λ©΄ μ μ΄κ° λΆκ°λ₯νλ€. μ¦, ν ν°μ μμλ‘ μμ νλ κ²μ΄ λΆκ°λ₯νλ―λ‘ ν ν° λ§λ£ μκ°μ κΌ λ£μ΄μ£Όμ΄μΌ νλ€.
- Tore Token: ν ν°μ ν΄λΌμ΄μΈνΈ μΈ‘μμ κ΄λ¦¬ν΄μΌ νκΈ° λλ¬Έμ, ν ν°μ μ μ₯ν΄μΌ νλ€.