πΎ [CS] JWT(JSON Web Token) ν ν°μ΄λ 무μμΌκΉμ?
-
JWT(JSON Web Token) ν ν°μ μ¬μ©μ μΈμ¦κ³Ό μ 보λ₯Ό μμ νκ² μ λ¬νκΈ° μν JSON κΈ°λ°μ ν ν°μ
λλ€.
- μ£Όλ‘ μΉ μ ν리μΌμ΄μ μμ μ¬μ©μ μΈμ¦, κΆν λΆμ¬λ₯Ό μν΄ μ¬μ©λ©λλ€.
- JWT(JSON Web Token)λ λμ§νΈ μλͺ μ ν΅ν΄ λ³μ‘° λ°©μ§κ° κ°λ₯νλ©°, μ΄λ₯Ό ν΅ν΄ ν΄λΌμ΄μΈνΈμ μλ² κ°μ λ°μ΄ν° μ μ‘μ΄ μμ νκ² μ΄λ£¨μ΄μ§λλ€.
1οΈβ£ JWTμ ꡬ쑰.
- JWT(JSON Web Token)λ μΈ κ°μ§ λΆλΆμΌλ‘ ꡬμ±λ©λλ€.
-
- ν€λ(Header)
-
- νμ΄λ‘λ(Payload)
-
- μλͺ (Signature)
-
1οΈβ£ ν€λ(Header)
- ν ν°μ νμ (JWT-JSON Web Token)κ³Ό ν΄μ± μκ³ λ¦¬μ¦ μ 보(μ: HMAC, SHA256)λ₯Ό ν¬ν¨ν©λλ€.
- μμ:
{"alg": "HS256", "typ": "JWT"}
π€ JWTμ ν€λμμ ν κ·Όμ νμ μ ν¬ν¨νλ μ΄μ λ 무μμΌκΉ?
JWT(JSON Web Token)μ ν€λ(Header)μ ν ν°μ νμ μ ν¬ν¨νλ μ΄μ λ μμ μκ° ν ν°μ μ¬λ°λ₯΄κ² μΈμνκ³ μ²λ¦¬ν μ μλλ‘ νκΈ° μν΄μ μ λλ€.
π€ ν ν°μ νμ (Token Type)μ΄λ 무μμΌκΉ?
ν ν°μ΄ μ¬μ©λλ λ°©μμ΄λ ννλ₯Ό ꡬλΆνλ μ 보μ λλ€.
μ΄ μ 보λ μ£Όλ‘ ν ν°μ΄ μ΄λ€ μΈμ¦ λλ μ μ‘ λ°©μμΌλ‘ μ¬μ©λλμ§λ₯Ό λͺ μνλ©°, μμ μΈ‘μμ ν΄λΉ ν ν°μ μ¬λ°λ₯΄κ² ν΄μνκ³ μ²λ¦¬νλ λ° μ€μν μν μ ν©λλ€.
π€ JWTμ ν€λμμ ν΄μ± μκ³ λ¦¬μ¦ μ 보λ₯Ό ν¬ν¨νλ μ΄μ λ 무μμΌκΉ?
JWT(JSON Web Token)μ ν€λ(Header)μ ν΄μ± μκ³ λ¦¬μ¦ μ 보λ₯Ό ν¬ν¨νλ μ΄μ λ ν ν°μ 무결μ±μ κ²μ¦νκΈ° μν΄ μ¬μ©λ μκ³ λ¦¬μ¦μ΄ 무μμΈμ§ μμ μΈ‘μμ μ νν μ μ μλλ‘ νκΈ° μν΄μμ λλ€.
π€ ν΄μκ°(Hash Value), λλ ν΄μ μ½λ(Hash Code)λ 무μμΌκΉ?
ν΄μκ°(Hash Value), λλ ν΄μ μ½λ(Hash Code)λ μμμ μ λ ₯ λ°μ΄ν°λ₯Ό κ³ μ λ κΈΈμ΄μ λ¬Έμμ΄μ΄λ μ«μλ‘ λ³νν κ°μ λλ€.
ν΄μκ°(Hash Value)μ ν΄μ± μκ³ λ¦¬μ¦μ μν΄ μμ±λλ©°, μ λ ₯ λ°μ΄ν°κ° κ°μΌλ©΄ νμ κ°μ ν΄μκ°(Hash Value)μ μμ±νμ§λ§, μ λ ₯ λ°μ΄ν°κ° λ¬λΌμ§λ©΄ μμ ν λ€λ₯Έ ν΄μκ°(Hash Value)μ΄ μμ±λ©λλ€.
π€ ν΄μ± μκ³ λ¦¬μ¦(Hashing Algorithm)μ΄λ 무μμΌκΉ?
μμμ κΈΈμ΄λ₯Ό κ°μ§ λ°μ΄ν°λ₯Ό κ³ μ λ κΈΈμ΄μ ν΄μκ°(Hash Value), λλ ν΄μ μ½λ(Hash Code)μΌλ‘ λ³ννλ ν¨μμ λλ€.
ν΄μ± μκ³ λ¦¬μ¦(Hashing Algorithm)μ λ°μ΄ν°μ λ¬΄κ²°μ± κ²μ¦, λΉλ°λ²νΈ μ μ₯, λ°μ΄ν° κ²μ λ±μ μ©λλ‘ λ리 μ¬μ©λ©λλ€.
ν΄μ ν¨μλ μΌλ°μ μΌλ‘ λΉ λ₯΄κ² κ³μ°ν μ μμΌλ©°, μ λ ₯ λ°μ΄ν°κ° μμ£Ό μ½κ°λ§ λ°λμ΄λ μμ ν λ€λ₯Έ ν΄μκ°(Hash Value)μ μμ±νλ νΉμ§μ΄ μμ΅λλ€.
π€ ν΄μ± μκ³ λ¦¬μ¦ μ 보λ 무μμΌκΉμ?
ν΄μ± μκ³ λ¦¬μ¦(Hashing Algorithm)μ μ’ λ₯μ λ°©μμ λνλ΄λ μ 보λ‘, μ£Όλ‘ λ°μ΄ν°μ 무결μ±μ κ²μ¦νκ±°λ μνΈνλ ννλ‘ μ μ₯νκΈ° μν΄ μ¬μ©λ©λλ€.
ν΄μ±μ λ°μ΄ν°κ° λ³κ²½λμ§ μμμμ νμΈνλ λ° μ μ©νλ©°, νΉν λΉλ°λ²νΈ μ μ₯, λμ§νΈ μλͺ , λ°μ΄ν° λ¬΄κ²°μ± λ± λ€μν 보μ λΆμΌμμ νμμ μΌλ‘ μ¬μ©λ©λλ€.
2οΈβ£ νμ΄λ‘λ(Payload)
- ν ν°μ μ€μ μ λ³΄κ° ν¬ν¨λ λΆλΆμΌλ‘, μ¬μ©μ μ 보μ κ°μ ν΄λ μ(Claim)μ λ΄κ³ μμ΅λλ€.
π€ ν ν°μ μ€μ μ 보λ 무μμΌκΉμ?
ν ν°μ μ€μ μ 보λ ν ν°μ ν¬ν¨λ λ°μ΄ν°μ ν΅μ¬μ μΈ λ΄μ©μΌλ‘, μ£Όλ‘ μ¬μ©μμ λν μ 보λ μΈμ¦, κΆνμ κ΄λ ¨λ μ 보λ₯Ό λ΄κ³ μμ΅λλ€.
μ΄ μ 보λ JWT(JSON Web Token) ν ν°μ νμ΄λ‘λ(Payload) λΆλΆμ μ μ₯λλ©°, ν΄λ μ(Claim)μ΄λΌκ³ λ λΆλ¦½λλ€.
ν ν°μ μ€μ μ 보λ μΈμ¦μ΄ νμν μμ€ν μμ μλ²κ° ν΄λΉ μ¬μ©μμ μ μμ νμΈνκ±°λ νΉμ κΆνμ λΆμ¬ν λ μ¬μ©λ©λλ€.
π€ ν΄λ μ(Claim)μ΄λ 무μμΌκΉμ?
JWT(JSON Web Token)μ νμ΄λ‘λ(Payload) λΆλΆμ λ΄κΈ°λ μ 보λ‘, μ¬μ©μ λλ ν ν°κ³Ό κ΄λ ¨λ μμ±μ΄λ λ°μ΄ν°λ₯Ό λνλ λλ€.
ν΄λ μ(Claim)μ μλ²κ° μ¬μ©μμ λν μ μ, κΆν, ν ν°μ μ ν¨ κΈ°κ° λ±μ νμΈ ν μ μκ² νλ μν μ ν©λλ€.
JWT(JSON Web Token)μ ν΅μ¬ μμλ‘, ν΄λ μ(Claim)μ ν΅ν΄ μΈμ¦κ³Ό κΆν λΆμ¬μ νμν λ€μν μ 보λ₯Ό ν¬ν¨ν μ μμ΅λλ€.
π€ νμ΄λ‘λ(Payload)κ° ν ν°μ μ€μ μ 보λ₯Ό ν¬ν¨νλ μ΄μ λ 무μμΌκΉμ?
ν ν°μ ν΅ν΄ μΈμ¦κ³Ό κΆν λΆμ¬μ νμν μ¬μ©μ μ 보μ κΈ°ν λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ μ λ¬νκΈ° μν΄μμ λλ€.
JWT(JSON Web Token)λ μ£Όλ‘ μΉ μ ν리μΌμ΄μ μμ μλ²μ ν΄λΌμ΄μΈνΈ κ°μ μ 보λ₯Ό μμ νκ² μ μ‘νλ λ°©μμΌλ‘ μ¬μ©λλ―λ‘, νμν μ 보λ₯Ό νμ΄λ‘λ(Payload)μ ν¬ν¨νμ¬ μλ²κ° μΆκ° μμ² μμ΄ μ¬μ©μ μνλ₯Ό νμ ν μ μκ² ν΄μ€λλ€.
- ν΄λ μ(Claim)μ μΌλ°μ μΌλ‘ μ¬μ©μ μλ³μ(id), μ¬μ©μ κΆν(role), ν ν°μ μ ν¨ μκ°(expiration) λ±μ ν¬ν¨ν©λλ€.
- μμ:
{"sub": "1234567890", "name": "Kobe", "admin": true}
π€ ν΄λ μ(Claim)μμμ μ¬μ©μ μλ³μ(id)λ 무μμΌκΉμ?
μ¬μ©μ μλ³μ(id)λ JWT(JSON Web Token) ν ν° λ΄μμ μ¬μ©μλ₯Ό κ³ μ νκ² μλ³ν μ μλ κ°μ μλ―Έν©λλ€.
μ΄ μλ³μλ μ¬μ©μλ₯Ό ꡬλ³νλ μ£Όμ μ λ³΄λ‘ μ¬μ©λλ©°, μλ²κ° νΉμ μ¬μ©μλ₯Ό μΈμνκ³ μΈμ¦, κΆν λΆμ¬λ₯Ό μνν λ κΈ°μ€μ΄ λλ μ 보μ λλ€.
π€ ν΄λ μ(Claim)μμμ μ¬μ©μ κΆν(role)μ΄λ 무μμΌκΉμ?
μ¬μ©μκ° μμ€ν μμ μ΄λ€ μν μ κ°μ§κ³ μλμ§λ₯Ό λνλ΄λ μ 보μ λλ€.
μ΄λ JWT(JSON Web Token) ν ν°μ ν΄λ μ(Claim) νλμ ν¬ν¨λμ΄ μ¬μ©μμκ² λΆμ¬λ κΆν μμ€μ λͺ μνλ©°, μλ²λ μ΄ κΆν μ 보λ₯Ό κΈ°λ°μΌλ‘ μ¬μ©μμκ² νμ©λ μμ μ΄λ μ κ·Ό κΆνμ κ²°μ ν©λλ€.
π€ ν΄λ μ(Claim)μμμ ν ν°μ μ ν¨ μκ°(expiration)μ΄λ 무μμΌκΉμ?
ν ν°μ μ ν¨ μκ°(expiration)μ JWT(JSON Web Token) ν ν°μ΄ μ ν¨ν κΈ°κ°μ μ€μ νλ μμ±μΌλ‘, ν ν°μ λ§λ£ μμ μ λνλ λλ€.
μ΄ μμ±μ JWT(JSON Web Token)μexp
ν΄λ μ(Claim)μ ν¬ν¨λλ©°, μ΄ κ°μ΄ μ§λλ©΄ ν ν°μ λ μ΄μ μ ν¨νμ§ μλ€κ³ κ°μ£Όλμ΄ μΈμ¦κ³Ό κΆν λΆμ¬ μμ² μ κ±°λΆλ©λλ€.
π€ ν΄λ μ(Claim)μμ μ¬μ©μ μλ³μ(id), μ¬μ©μ κΆν(role), ν ν°μ μ ν¨ μκ°(expiration) λ±μ ν¬ν¨νλ μ΄μ λ 무μμΌκΉμ?
μλ²κ° μ¬μ©μ μΈμ¦ λ° κΆν κ΄λ¦¬λ₯Ό ν¨μ¨μ μ΄κ³ μμ νκ² μνν μ μλλ‘ νμν μ 보λ₯Ό ν κ³³μ λͺ¨μ λκΈ° μν¨μ λλ€.
μ΄λ¬ν μ 보λ₯Ό ν΅ν΄ μλ²λ λ³λμ μΆκ° μμ μμ΄ μ¬μ©μμ μ μκ³Ό κΆν, ν ν°μ μ ν¨μ±μ κ²μ¦ν μ μμΌλ©°, μ΄λ₯Ό ν΅ν΄ ν¨μ¨μ μ΄κ³ νμ₯ κ°λ₯ν μΈμ¦ μμ€ν μ ꡬμΆν μ μμ΅λλ€.
3οΈβ£ μλͺ (Signature)
- ν ν°μ 무결μ±μ 보μ₯νκΈ° μν μλͺ μΌλ‘, ν€λ(Header)μ νμ΄λ‘λ(Payload)λ₯Ό ν©μΉ ν λΉλ° ν€λ‘ ν΄μ±(Hashing)νμ¬ μμ±λ©λλ€.
π€ ν ν°μ 무결μ±(Token Integrity)
ν ν°μ λ΄μ©μ΄ λ°κΈλ μ΄ν λ³κ²½λμ§ μμμμ 보μ₯νλ κ²μ μλ―Έν©λλ€.
무결μ±μ΄ μ μ§λ ν ν°μ λ°κΈ μμ μ μ 보λ₯Ό μ λ’°ν μ μλ μνλ‘ μ μ§νλ©°, κ·Έ λ΄μ©μ΄ μ€κ°μ μ‘°μλμ§ μμμμ νμ ν μ μμ΅λλ€.
무결μ±μ ν ν°μ μμ ν μΈμ¦κ³Ό κΆν κ΄λ¦¬λ₯Ό μν΄ νμμ μΈ μμμ λλ€.
π€ λΉλ° ν€(Secret Key)
λ°μ΄ν°λ₯Ό μνΈννκ±°λ μΈμ¦ν λ μ¬μ©νλ κΈ°λ° μ 보λ‘, μ€μ§ μ‘μ μμ μμ μλ§ μκ³ μμ΄μΌ νλ ν€μ λλ€.
λΉλ° ν€λ λμΉ μνΈνμ HMAC ν΄μ± μκ³ λ¦¬μ¦μμ μ£Όλ‘ μ¬μ©λλ©°, μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°μ 무결μ±μ 보μ₯νκ³ μ μ‘ μ€ λ°μ΄ν°μ μμ μ±μ μ μ§ν μ μμ΅λλ€.
- μλͺ μ ν΄λΌμ΄μΈνΈκ° νμ΄λ‘λ(Payload)μ λ΄μ©μ λ³κ²½νμ§ λͺ»νλλ‘ λ³΄μ₯νλ μν μ ν©λλ€.
- μμ:
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
- JWTλ μμ μΈ κ°μ§λ₯Ό ν©μ³μ νλμ λ¬Έμμ΄λ‘ λ§λ€κ³ , κ° λΆλΆμ
.
μΌλ‘ ꡬλΆν©λλ€.
- JWTλ μμ μΈ κ°μ§λ₯Ό ν©μ³μ νλμ λ¬Έμμ΄λ‘ λ§λ€κ³ , κ° λΆλΆμ
2οΈβ£ JWTμ μμ.
- JWT(JSON Web Token)λ λ€μκ³Ό κ°μ΄ μΈ λΆλΆμ΄ ν©μ³μ§ ννμ λ¬Έμμ΄μ λλ€.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
- μ΄ λ¬Έμμ΄μ ν€λ(header), νμ΄λ‘λ(payload), μλͺ (signature)μ΄ κ²°ν©λ κ²μ΄λ©°, κ° λΆλΆμ Base64URLλ‘ μΈμ½λ©λμ΄ μμ΅λλ€.
π€ Base64URLμ΄λ 무μμΌκΉμ?
Base64URLμ Base64 μΈμ½λ© λ°©μμ URL λ° νμΌ μμ€ν μμ μμ νκ² μ¬μ©ν μ μλλ‘ λ³νν μΈμ½λ© λ°©μμ λλ€.
μΌλ°μ μΈ Base64 μΈμ½λ©μ λ¬Έμμ΄μ λ°μ΄λ리 λ°μ΄ν°λ‘λΆν° ASCII ν μ€νΈλ‘ λ³ννμ§λ§, λ³νλ κ²°κ³Όμλ URLμμ νΉλ³ν μλ―Έλ₯Ό κ°μ§λ λ¬Έμ(+
,/
,=
)κ° ν¬ν¨λ μ μμ΄ URL μΈμ½λ©μ μΆκ°λ‘ ν΄μΌ νλ λΆνΈν¨μ΄ μμ΅λλ€.
Base64URLμ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ¬, Base64 μΈμ½λ©μ URLκ³Ό νμΌ κ²½λ‘μμ μ¬μ©ν μ μλλ‘ μμ νκ² λ³κ²½ν λ°©μμ λλ€.
π€ λ°μ΄λ리 λ°μ΄ν°(Binary Data)
μ»΄ν¨ν°κ° 2μ§μ(0κ³Ό 1)λ‘ νννλ λ°μ΄ν°λ₯Ό μλ―Ένλ©°, ν μ€νΈ λ°μ΄ν°μ λ¬λ¦¬ μ¬λμ΄ μ§μ μ½κ±°λ ν΄μνκΈ° μ΄λ €μ΄ λ°μ΄ν° νμμ λλ€.
μ»΄ν¨ν° μμ€ν μμ λͺ¨λ λ°μ΄ν°λ κΆκ·Ήμ μΌλ‘ 0κ³Ό 1μ μ΄μ§μ ννλ‘ μ μ₯λκ³ μ²λ¦¬λκΈ° λλ¬Έμ, μ΄λ―Έμ§, μ€λμ€, λΉλμ€, μ€ν νμΌ λ± λ€μν νμΌ νμμ΄ λ°μ΄λ리 λ°μ΄ν°λ‘ ννλ©λλ€.
π€ Base64λ 무μμΈκ°μ?
λ°μ΄λ리 λ°μ΄ν°λ₯Ό ν μ€νΈ νμμΌλ‘ μΈμ½λ©νκΈ° μν λ°©μμ λλ€.
μ»΄ν¨ν°μμ λ°μ΄λ리 λ°μ΄ν°(μ: μ΄λ―Έμ§, μ€λμ€ λ±)λ₯Ό ASCII λ¬Έμλ§λλ‘ νννμ¬ μ μ‘νκ±°λ μ μ₯ν μ μλλ‘ λ§λ€μ΄μ‘μ΅λλ€.
Base64λ μ£Όλ‘ μ΄λ©μΌ, μΉ API, URLμμ λ°μ΄λ리 λ°μ΄ν°λ₯Ό μμ νκ² μ λ¬νκΈ° μν΄ μ¬μ©λ©λλ€.
3οΈβ£ JWTμ νΉμ§.
1οΈβ£ μκΈ° ν¬ν¨ ν ν°.
- JWT(JSON Web Token)λ λͺ¨λ νμν μ 보λ₯Ό μ체μ μΌλ‘ ν¬ν¨νλ―λ‘, μλ²κ° ν ν°λ§ νμΈν΄λ μΈμ¦ λ° κΆν μ 보λ₯Ό μ μ μμ΅λλ€.
- μ΄λ₯Ό ν΅ν΄ μΈμ μ μ₯μ μμ΄λ μ¬μ©μ μΈμ¦μ κ΄λ¦¬ν μ μμ΅λλ€.
π€ μΈμ μ μ₯μ(Session Store)λ 무μμΌκΉμ?
μ¬μ©μ μΈμ μ 보λ₯Ό μ μ₯νκ³ κ΄λ¦¬νλ μ₯μλ‘, μ£Όλ‘ μΉ μ ν리μΌμ΄μ μμ μ¬μ©μκ° λ‘κ·Έλ¦°ν μνλ₯Ό μ μ§νκ±°λ μ¬μ©μμ κ΄λ ¨λ λ°μ΄ν°λ₯Ό μμλ‘ λ³΄κ΄νκΈ° μν΄ μ¬μ©λ©λλ€.
μΈμ μ μ₯μ(Session Store)λ μλ²κ° μ¬μ©μλ³ μνλ₯Ό κ΄λ¦¬ν μ μκ² νλ©°, νμ΄μ§ κ° μ΄λμ΄λ μλ² κ° μμ²κ°μλ μ¬μ©μ μνλ₯Ό μ§μμ μΌλ‘ μ μ§ν μ μλλ‘ λμ΅λλ€.
π€ μΈμ μ 보(Session Information)μ΄λ 무μμΌκΉμ?
μΉ μ ν리μΌμ΄μ μμ νΉμ μ¬μ©μμ κ΄λ ¨λ μνλ λ°μ΄ν°λ₯Ό λ§ν©λλ€.
μΈμ μ 보(Session Information)λ μ¬μ©μκ° μΉμ¬μ΄νΈμ λ‘κ·ΈμΈ νμ λλΆν° λ‘κ·Έμμν λκΉμ§ μ¬μ©μμ νλμ΄λ μνλ₯Ό μ μ§νκ³ μΆμ νκΈ° μν΄ μλ²μ μ μ₯λλ©°, νμ΄μ§ μ΄λμ΄λ μλ‘μ΄ μμ²μ΄ λ°μνλλΌλ μ¬μ©μ μνκ° μ§μλλλ‘ λμ΅λλ€.
π€ μΈμ (Session)μ΄λ 무μμΌκΉμ?
μΉ μ ν리μΌμ΄μ μμ νΉμ μ¬μ©μμ μλ² κ°μ μνλ₯Ό μ μ§νλ κΈ°κ°μ μλ―Έν©λλ€.
μλ²κ° μ¬μ©μμ μμ²λ€μ νλμ μ°μμ μΈ νλ¦μΌλ‘ μλ³νκ³ μνλ₯Ό μ§μμ μΌλ‘ μΆμ ν μ μλλ‘ λμμ€λλ€.
μ¬μ©μκ° μΉμ¬μ΄νΈμ μ μνκ³ λ‘κ·Έμμνκ±°λ μΌμ μκ° λμ νλμ΄ μμΌλ©΄ μΈμ (Session)μ΄ μ’ λ£λλ λ°©μμΌλ‘, μΈμ (Session)μ μ¬μ©μκ° μΉ μ ν리μΌμ΄μ μ μ μν΄ μλ λμμ μνλ₯Ό κ΄λ¦¬νλ μν μ ν©λλ€.
2οΈβ£ λ³μ‘° λ°©μ§.
- JWT(JSON Web Token)λ μλͺ (Signature)μ ν¬ν¨νκ³ μμ΄, ν ν°μ΄ λ³μ‘°λμ§ μμμμ κ²μ¦ν μ μμ΅λλ€.
- ν ν°μ μ λ³΄κ° λ³κ²½λ κ²½μ°, μλͺ κ²μ¦μ΄ μ€ν¨νλ―λ‘ μ ν¨νμ§ μμ ν ν°μΌλ‘ κ°μ£Όλ©λλ€.
3οΈβ£ 짧μ μλͺ .
- JWT(JSON Web Token)λ 보μμμ μ΄μ λ‘ μΌλ°μ μΌλ‘ 짧μ μ ν¨ κΈ°κ°μ κ°μ΅λλ€.
- λ§λ£λ ν ν°μ λ€μ μΈμ¦μ μμ²ν΄μΌ νλ―λ‘, μ£ΌκΈ°μ μΌλ‘ μ¬λ°κΈμ ν΅ν΄ 보μμ μ μ§ν μ μμ΅λλ€.
4οΈβ£ λΉμνμ±(Stateless)
- JWT(JSON Web Token)λ μλ²μ μνλ₯Ό μ μ₯νμ§ μλ λΉμνμ±(Stateless) ν ν°μ΄λ―λ‘, νμ₯μ±κ³Ό μ±λ₯μ΄ μꡬλλ νκ²½μμ ν¨κ³Όμ μ λλ€.
π€ λΉμνμ±(Stateless)λ 무μμΌκΉμ?
κ° μμ²μ΄ μ΄μ μμ²μ΄λ μ΄ν μμ²κ³Ό λ 립μ μΌλ‘ μ²λ¦¬λλ νΉμ±μ μλ―Έν©λλ€.
λΉμνμ μΈ μμ€ν μμλ κ° μμ²μ νμν λͺ¨λ μ λ³΄κ° μμ² μ체μ ν¬ν¨ λμ΄μΌ νλ©°, μλ²λ μμ²μ μ²λ¦¬ν λ μ΄μ μνλ μΈμ (Session)μ κΈ°μ΅νμ§ μκ³ λ§€λ² μλ‘μ΄ μμ²μΌλ‘ μ²λ¦¬ν©λλ€.
- μλ²λ ν ν°μ νμΈνκΈ°λ§ νλ©΄ λλ―λ‘, μΈμ (Session) κ΄λ¦¬κ° νμ μλ μ ν리μΌμ΄μ μ μ ν©ν©λλ€.
4οΈβ£ JWTμ λ¨μ .
1οΈβ£ μλ²μμ ν ν° λ¬΄ν¨νκ° μ΄λ ΅λ€.
- JWT(JSON Web Token)λ μλ²μμ μνλ₯Ό κ΄λ¦¬νμ§ μμΌλ―λ‘, ν ν°μ λ°κΈν ν νΉμ ν ν°μ μλ²μμ 무ν¨ννκΈ° μ΄λ ΅μ΅λλ€.
π€ ν ν° λ¬΄ν¨ν(Token Invalidation)λ 무μμΌκΉμ?
κΈ°μ‘΄μ λ°κΈλ ν ν°μ λ μ΄μ μ ν¨νμ§ μλλ‘ λ§λλ κ³Όμ μ μλ―Έν©λλ€.
무ν¨νλ ν ν°μ μ¬μ©μκ° ν΄λΉ ν ν°μ ν΅ν΄ μΈμ¦μ΄λ κΆνμ μμ²ν λ κ±°λΆλλ©°, μ£Όλ‘ λ‘κ·Έμμ μ²λ¦¬, 보μμμ μ΄μ , ν ν° μ¬λ°κΈ μμ μ¬μ©λ©λλ€
- μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λΈλ리μ€νΈλ 짧μ λ§λ£ κΈ°κ°μ μ¬μ©νμ¬ λ³΄μμ κ°νν μ μμ΅λλ€.
π€ λΈλ리μ€νΈ(Blacklist)
νΉμ 쑰건μ μΆ©μ‘±νμ§ λͺ»ν΄ μ κ·Όμ΄ μ νλ λͺ©λ‘μΌλ‘, νμ©λμ§ μλ νλͺ©μ΄λ μ¬μ©μλ₯Ό μ°¨λ¨νκ³ κ΄λ¦¬νκΈ° μν΄ μ¬μ©λ©λλ€.
IT 보μ, λ€νΈμν¬, μΈμ¦ μμ€ν λ±μμ μμ£Ό νμ©λλ©°, 보μκ³Ό κΆν κ΄λ¦¬λ₯Ό μν΄ λΆλ²μ μ΄κ±°λ μ λ’°ν μ μλ λμμ μλ³νκ³ μ°¨λ¨νλλ° λμμ΄ λ©λλ€.JWTμμμ λΈλ리μ€νΈ(Blacklist)λ νΉμ JWT ν ν°μ 무ν¨ννκΈ° μν΄ μ°¨λ¨ λͺ©λ‘μ μΆκ°νλ λ°©μμ μλ―Έν©λλ€.
λΈλ리μ€νΈμ μΆκ°λ ν ν°μ λ μ΄μ μ ν¨νμ§ μμ κ²μΌλ‘ κ°μ£Όλμ΄, ν΄λΉ ν ν°μΌλ‘ μΈμ¦ μμ²μ 보λ΄λ©΄ μΈμ¦μ΄ κ±°λΆλκ±°λ μ κ·Όμ΄ μ νλ©λλ€.
μ΄λ λ‘κ·Έμμ μ²λ¦¬, ν ν° μ ν¨κΈ°κ° μ΄λ΄μ κ°μ 무ν¨ν, 보μμ μ΄μ λ‘ νμ·¨λ ν ν°μ μ°¨λ¨ν΄μΌ ν λ μ μ©ν©λλ€.
2οΈβ£ ν ν°μ ν¬κΈ°κ° ν¬λ€.
- JWT(JSON Web Token)λ μλͺ
(Signature)κ³Ό νμ΄λ‘λ(Payload)λ₯Ό ν¬ν¨νλ―λ‘ ν¬κΈ°κ° ν° νΈμ
λλ€.
- μ΄λ λ€νΈμν¬ νΈλν½μ μν₯μ μ€ μ μμ΅λλ€.
π€ λ€νΈμν¬ νΈλν½(Network Traffic)μ΄λ 무μμΌκΉμ?
λ€νΈμν¬λ₯Ό ν΅ν΄ μ μ‘λλ λͺ¨λ λ°μ΄ν°μ νλ¦μ μλ―Έν©λλ€.
μ΄λ μ¬μ©μκ° μΈν°λ·μ ν΅ν΄ μ£Όκ³ λ°λ λ°μ΄ν°, μ ν리μΌμ΄μ κ°μ ν΅μ , μλ² κ° λ°μ΄ν° κ΅ν λ± λ€νΈμν¬ μμ λͺ¨λ λ°μ΄ν°λ₯Ό ν¬ν¨νλ©°,
λ³΄ν΅ μ΄λΉ μ μ‘λλ λ°μ΄ν°μ μμΌλ‘ μΈ‘μ ν©λλ€.
π€ λ°μ΄ν°μ νλ¦μ΄λ 무μμΌκΉμ?
λ€νΈμν¬ νΈλν½(Network Traffic)μμμ λ°μ΄ν° νλ¦μ λ€νΈμν¬ μμμ λ°μ΄ν°κ° μ μ‘λλ κ³Όμ κ³Ό λ°©ν₯μ μλ―Έν©λλ€.
λ€νΈμν¬μ κ° μ₯μΉκ° μλ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μΌλ©° μ΄λνλ κ²½λ‘λ₯Ό ν΅ν΄ μ¬μ©μ κ°μ ν΅μ , λ°μ΄ν° μμ², νμΌ μ μ‘ λ±μ΄ μ΄λ£¨μ΄μ§λλ€.
μ΄ λ°μ΄ν° νλ¦μ λ€νΈμν¬λ₯Ό ν΅ν΄ μ΄λ»κ² λ°μ΄ν°κ° μ€κ°λμ§ λ³΄μ¬μ£Όλ©°, μΌλ°μ μΌλ‘ ν¨ν·(Packet)μ΄λΌλ λ¨μλ‘ λΆν λμ΄ μ μ‘λ©λλ€.
π€ λ°μ΄ν° νλ¦ λ°©ν₯μ΄λ 무μμΌκΉμ?
λ°μ΄ν° νλ¦μ μν₯ νλ¦(upload)κ³Ό νν₯ νλ¦(download)μΌλ‘ ꡬλΆλλ©°, μΌλ°μ μΌλ‘ ν΄λΌμ΄μΈνΈμ μλ² κ°μ μ£Όκ³ λ°μ΅λλ€.
μν₯ νλ¦(Upload)λ ν΄λΌμ΄μΈνΈκ° μλ²λ‘ λ°μ΄ν°λ₯Ό 보λ΄λ κ²½μ°λ₯Ό λ§νλ©°, νμΌμ μ λ‘λλ₯Ό μλ‘ λ€ μ μμ΅λλ€.
νν₯ νλ¦(Download)λ μλ²κ° ν΄λΌμ΄μΈνΈλ‘ λ°μ΄ν°λ₯Ό 보λ΄λ κ²½μ°λ₯Ό λ§νλ©°, μΉνμ΄μ§ λ‘λ©, νμΌ λ€μ΄λ‘λ λ±μ μλ‘ λ€ μ μμ΅λλ€.
π€ λ€νΈμν¬ μμμ λ°μ΄ν°κ° μ μ‘λλ κ³Όμ μ΄λ 무μμΌκΉμ?
λ€νΈμν¬ μμμ λ°μ΄ν°κ° μ μ‘λλ κ³Όμ μ λ°μ μ(μΆλ°μ§)μμ μμ μ(λͺ©μ μ§)κΉμ§ λ°μ΄ν°λ₯Ό ν¨ν·(Packet)μΌλ‘ λλκ³ , μ΄λ₯Ό μ¬λ¬ λ€νΈμν¬ μ₯μΉλ₯Ό κ±°μ³ μ λ¬νλ μΌλ ¨μ μ μ°¨λ₯Ό μλ―Έν©λλ€.
μ΄ κ³Όμ μ μ¬λ¬ λ¨κ³λ‘ λλλ©°, νλ‘ν μ½ μ€νμ ν΅ν΄ λ°μ΄ν°κ° μ‘μ μ₯μΉμμ μμ μ₯μΉλ‘ μμ νκ³ μ ννκ² μ μ‘λλλ‘ κ΄λ¦¬λ©λλ€.
π€ νλ‘ν μ½ μ€ν(Protocol Stack)μ΄λ 무μμΌκΉμ?
λ€νΈμν¬ ν΅μ μμ λ°μ΄ν°λ₯Ό μ‘μμ νκΈ° μν΄ κ³μΈ΅λ³λ‘ μν μ λλ νλ‘ν μ½μ ꡬμ±ν μ§ν©μ λλ€.
μ΄ μ€νμ λ€νΈμν¬ ν΅μ κ³Όμ μμ λ°μνλ λ€μν μμ μ λ Όλ¦¬μ μΌλ‘ λλκ³ , κ° κ³μΈ΅μ νΉμ μν μ λΆμ¬νμ¬ λ°μ΄ν°λ₯Ό μ μ‘, μ²λ¦¬, μμ ν μ μλλ‘ μ€κ³λμμ΅λλ€.
κ° κ³μΈ΅μ λ 립μ μ΄λ©°, μνΈ μμ©μ ν΅ν΄ μ΅μ’ μ μΌλ‘ λ°μ΄ν°κ° λͺ©μ μ§μ λλ¬ν©λλ€.
3οΈβ£ νμ·¨λ ν ν°μ μ μ© κ°λ₯μ±.
- λ§λ£λμ§ μμ JWT(JSON Web Token)κ° νμ·¨λ κ²½μ°, 곡격μκ° μ΄λ₯Ό μ¬μ©νμ¬ μ¬μ©μλ‘ μμ₯ν μ μμ΅λλ€.
- μ΄λ₯Ό λ°©μ§νκΈ° μν΄ HTTPSλ₯Ό ν΅ν μ μ‘ λ° μ§§μ μ ν¨ κΈ°κ° μ€μ μ΄ μ€μν©λλ€.
π€ HTTPSλ₯Ό ν΅ν μ μ‘μ΄λ 무μμΌκΉμ?
μΉ λΈλΌμ°μ μ μλ² κ°μ ν΅μ μ΄ μνΈνλ μνλ‘ μ΄λ£¨μ΄μ§λ λ°©μμ λλ€.
HTTPSλ HTTPμ SSL(Secure Sockets Layer) λλ TLS(Transport Layer Security) μνΈν κ³μΈ΅μ μΆκ°ν νλ‘ν μ½λ‘,
μ¬μ©μκ° μΉμ¬μ΄νΈμ μ£Όκ³ λ°μ λ°μ΄ν°λ₯Ό μ 3μκ° λ³Ό μ μλλ‘ λ³΄νΈν©λλ€.
μ΄λ₯Ό ν΅ν΄, μΉμ¬μ΄νΈ λ‘κ·ΈμΈ μ 보, μ μ©μΉ΄λ λ²νΈ, κ°μΈ μ 보 λ± λ―Όκ°ν λ°μ΄ν°κ° μμ νκ² μ μ‘λ μ μμ΅λλ€.
π€ HTTP(HyperText Transfer Protocol)μ΄λ 무μμΌκΉμ?
μΉ λΈλΌμ°μ μ μΉ μλ² κ°μ νμ΄νΌν μ€νΈ(HyperText)λ₯Ό μ£Όκ³ λ°κΈ° μν νλ‘ν μ½λ‘, μΈν°λ· μμμ λ°μ΄ν°λ₯Ό μ μ‘νλ νμ€ κ·μ½μ λλ€.
HTTP(HyperText Transfer Protocol)λ μΉ νμ΄μ§, μ΄λ―Έμ§, λΉλμ€μ κ°μ 리μμ€λ₯Ό μ μ‘νλλ° μ¬μ©λλ©°, ν΄λΌμ΄μΈνΈ-μλ² κ΅¬μ‘°λ₯Ό κΈ°λ°μΌλ‘ μλν©λλ€.
μΉ λΈλΌμ°μ κ° ν΄λΌμ΄μΈνΈ μν μ νκ³ , μΉ μλ²λ ν΄λΌμ΄μΈνΈ μμ²μ μ²λ¦¬νμ¬ νμν μ 보λ₯Ό μ 곡νλ μν μ ν©λλ€.
π€ νμ΄νΌν μ€νΈ(HyperText)λ 무μμΌκΉμ?
νΉμ λ¨μ΄, λ¬Έμ₯, μ΄λ―Έμ§ λ±μ ν΄λ¦νλ©΄ κ΄λ ¨λ λ€λ₯Έ λ¬Έμλ νμ΄μ§λ‘ μ°κ²°λλ λ°©μμ ν μ€νΈλ₯Ό μλ―Έν©λλ€.
μΉμ ν΅μ¬μ μΈ κ°λ μΌλ‘, νμ΄νΌν μ€νΈ(HyperText)λ μ¬μ©μκ° λ§ν¬λ₯Ό ν΄λ¦νμ¬ μλ‘ κ΄λ ¨λ μ 보λ νμ΄μ§λ‘ μμ λ‘κ² μ΄λν μ μκ² λμμ€λλ€.
μΌλ° ν μ€νΈμ λ¬λ¦¬, νμ΄νΌν μ€νΈ(HyperText)λ λ¬Έμ κ°μ κ΄κ³λ₯Ό μ½κ² μ°κ²°νκ³ μ°Έμ‘°ν μ μλ κΈ°λ₯μ μ 곡νμ¬ λΉμ νμ μΈ μ 보 νμμ κ°λ₯νκ² ν©λλ€.
π€ SSL(Secure Sockets Layer)λ 무μμΌκΉμ?
λ€νΈμν¬ μμμ λ°μ΄ν°λ₯Ό μμ νκ² μ μ‘νκΈ° μν 보μ νλ‘ν μ½λ‘, ν΄λΌμ΄μΈνΈμ μλ² κ°μ λ°μ΄ν° ν΅μ μ μνΈννμ¬ λ°μ΄ν°μ κΈ°λ°μ±, 무결μ±, μΈμ¦μ 보μ₯ν©λλ€.
SSL(Secure Sockets Layer)μ μΉμ¬μ΄νΈκ° HTTPS νλ‘ν μ½μ μ¬μ©ν μ μκ² νλ©°, μ£Όλ‘ μΈν°λ· μμ λ―Όκ°ν μ 보(μ: λ‘κ·ΈμΈ μ 보, κ²°μ μ 보) 보νΈμ μ¬μ©λ©λλ€.
π€ TLS(Transport Layer Security)λ 무μμΌκΉμ?
μΈν°λ· μμμ λ°μ΄ν°λ₯Ό μμ νκ² μ μ‘νκΈ° μν 보μ νλ‘ν μ½λ‘, SSL(Secure Sockets Layer)μ νμ λ²μ μ λλ€.
TLS(Transport Layer Security)λ ν΄λΌμ΄μΈνΈμ μλ² κ°μ λ°μ΄ν° μ μ‘μ μνΈννμ¬ κΈ°λ°μ±κ³Ό 무결μ±μ 보μ₯νλ©°, νμ¬ λλΆλΆμ HTTPS μ°κ²°μ μ¬μ©λ©λλ€.
TLS(Transport Layer Security)λ λ°μ΄ν°κ° μ€κ°μ νμ·¨λκ±°λ μ‘°μλλ κ²μ λ°©μ§νμ¬, λ―Όκ°ν μ 보λ₯Ό μμ νκ² μ μ‘ν μ μλλ‘ λμ΅λλ€.
5οΈβ£ JWTμ μ¬μ© μμ(Java)
- Javaμμ JWTλ₯Ό μ¬μ©νλ €λ©΄, JJWT(Java JWT) λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ ν ν°μ μμ±νκ³ κ²μ¦ν μ μμ΅λλ€.
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.Claims;
public class JwtExample {
private static final String SECRET_KEY = "mySecreKey";
// JWT ν ν° μμ±
public static String createToken(String subject) {
return Jwts.builder()
.setSubject(subject) // μ¬μ©μ μλ³μ(id)
.setIssuedAt(new Date()) // λ°ν μκ°
.setExpiration(new Date(System.currentTimeMillis() * 3600000)) // λ§λ£ μκ°(expiration)-1μκ° ν
.signWith(SignatureAlgorithm.HS256, SECRET_KEY) // μλͺ
μκ³ λ¦¬μ¦ λ° ν€
.compact();
}
// JWT ν ν° κ²μ¦ λ° μ 보 μΆμΆ
public static Claims parseToken(String token) {
return Jwts.parse()
.setSigningKey(SECRET_KEY)
.parseClaimsJwt(token)
.getBody();
}
public static void main(String[] args) {
// ν ν° μμ±
String token = createToken("user123");
System.out.println("JWT Token: " + token);
// ν ν° κ²μ¦ λ° μ 보 μΆμΆ
Claims claims = parseToken(token);
System.out.println("Subject: " + clamis.getSubject());
}
}
π μ€λͺ .
- createToken λ©μλλ μ¬μ©μ μ 보λ₯Ό κΈ°λ°μΌλ‘ JWT ν ν°μ μμ±ν©λλ€.
- parseToken λ©μλλ μμ±λ ν ν°μ κ²μ¦νκ³ νμ΄λ‘λμ μ 보λ₯Ό μΆμΆν©λλ€.
- μ΄ μμ μμλ
user123
μ΄λΌλ μ¬μ©μ μλ³μλ‘ ν ν°μ μμ±νκ³ , μμ±λ ν ν°μμ μ¬μ©μ μλ³μ(subject)λ₯Ό μΆμΆν©λλ€.
6οΈβ£ JWTμ μ¬μ© μ¬λ‘.
1οΈβ£ μ¬μ©μ μΈμ¦.
- μΉ μ ν리μΌμ΄μ μμ λ‘κ·ΈμΈ ν μ¬μ©μ μ 보λ₯Ό νμΈνλλ° JWTλ₯Ό μ¬μ©νμ¬, μΆκ°μ μΈ μΈμ κ΄λ¦¬ μμ΄ μΈμ¦μ μ²λ¦¬ν μ μμ΅λλ€.
2οΈβ£ API μΈμ¦.
- RESTful APIμμλ ν΄λΌμ΄μΈνΈκ° JWTλ₯Ό ν¬ν¨νμ¬ μμ²μ 보λ΄λ©΄, μλ²λ ν ν°μ κ²μ¦νμ¬ ν΄λΌμ΄μΈνΈμ κΆνμ νμΈν μ μμ΅λλ€.
π€ RESTful APIλ 무μμΌκΉμ?
REST(Representational State Transfer) μν€ν μ² μ€νμΌμ κΈ°λ°μΌλ‘ μ€κ³λ APIλ‘, μΉμμ ν΄λΌμ΄μΈνΈμ μλ² κ°μ 리μμ€λ₯Ό ν¨μ¨μ μΌλ‘ μ£Όκ³ λ°κΈ° μν κ·μΉκ³Ό μμΉμ λ°λ₯΄λ APIμ λλ€.
RESTful APIλ HTTP νλ‘ν μ½μ μ¬μ©νμ¬ μΉμ 리μμ€(Resource)λ₯Ό URLμ ν΅ν΄ μ κ·Όνκ³ , HTTP λ©μλ(GET, POST, PUT, DELETE λ±)λ₯Ό μ¬μ©ν΄ ν΄λΉ 리μμ€λ₯Ό μ‘°μν©λλ€.
π€ REST(Representational State Transfer) μν€ν μ²λ 무μμΌκΉμ?
μΉ κΈ°λ°μ λΆμ° μμ€ν μ μ€κ³νκΈ° μν μν€ν μ² μ€νμΌλ‘, 리μμ€(Resource)λ₯Ό κΈ°λ°μΌλ‘ ν΄λΌμ΄μΈνΈμ μλ² κ°μ μν μ 보λ₯Ό μ£Όκ³ λ°λ λ°©μμ λλ€.
RESTλ HTTP νλ‘ν μ½μ κΈ°λ°μΌλ‘ μ€κ³λμμΌλ©°, μΉμμ λ°μ΄ν°λ₯Ό ν¨μ¨μ μ΄κ³ νμ₯ κ°λ₯νκ² μ£Όκ³ λ°κΈ° μν΄ κΆμ₯λλ μμΉκ³Ό μ μ½ μ‘°κ±΄μ μ μν©λλ€.
REST μν€ν μ² μ€νμΌμ μ£Όλ‘ μΉ API μ€κ³μ μ μ©λλ©°, μΉ μ ν리μΌμ΄μ μμ ν΄λΌμ΄μΈνΈκ° μλ²μ 리μμ€μ μ κ·Όν λ μΌκ΄μ± μλ λ°©μμ μ 곡ν©λλ€.
RESTλ νΉμ ν νμ€μ΄λ νλ‘ν μ½μ΄ μλλ©°, μ€κ³ μμΉμ λ°λ₯Έ μΉ μλΉμ€ ꡬ쑰λ₯Ό μλ―Έν©λλ€.
π€ RESTμμμ 리μμ€(Resource)λ 무μμΌκΉμ?
μΉμμ κ³ μ νκ² μλ³ν μ μλ λͺ¨λ λ°μ΄ν°λ κ°μ²΄λ₯Ό μλ―Έν©λλ€.
REST μν€ν μ²μμλ 리μμ€(Resource)λ₯Ό ν΅ν΄ μΉ μλΉμ€κ° ν΄λΌμ΄μΈνΈμκ² μ 곡νλ λ°μ΄ν°λ κΈ°λ₯μ μΆμνν κ°μ²΄λ‘, 리μμ€λ URI(Uniform Resource Identifier)λ₯Ό ν΅ν΄ κ³ μ νκ² μλ³λ©λλ€.
RESTful APIμμλ μ΄λ¬ν 리μμ€(Resource)μ λν λ°μ΄ν°λ₯Ό HTTP λ©μλ(GET, POST, PUT, DELETE λ±)λ₯Ό ν΅ν΄ μ κ·Όνκ³ μ‘°μν©λλ€.
π€ URI(Uniform Resource Identifier)λ 무μμΌκΉμ?
μΉμμ νΉμ 리μμ€λ₯Ό μλ³νκ³ μμΉλ₯Ό μ§μ νλ κ³ μ ν λ¬Έμμ΄μ λλ€.
μΉ λ¦¬μμ€λ₯Ό μ μΌνκ² μλ³νμ¬ μ κ·Όν μ μλλ‘ μ€κ³λ URI(Uniform Resource Identifier)λ μΉ μ£Όμλ₯Ό μ§μ ν λ μ¬μ©λλ©°,
μ°λ¦¬κ° νν μ νλ URLλ URIμ ν μ’ λ₯μ λλ€.
URIλ RESTful APIμμ 리μμ€λ₯Ό μλ³νλ μ€μν μμλ‘, μ¬μ©μκ° μνλ 리μμ€λ₯Ό μ νν μ°Ύμ μ μκ² ν©λλ€.
π€ λΆμ° μμ€ν (Distributed System)μ΄λ 무μμΌκΉμ?
μ¬λ¬ λμ μ»΄ν¨ν°λ μλ²κ° λ€νΈμν¬λ₯Ό ν΅ν΄ μ°κ²°λμ΄ νλμ μμ€ν μ²λΌ λμνλ ꡬ쑰λ₯Ό λ§ν©λλ€.
λΆμ° μμ€ν (Distributed System)μμλ νλμ μμ μ μ¬λ¬ μ₯μΉμμ λλμ΄ μ²λ¦¬νμ¬, λ°μ΄ν° μ²λ¦¬ μλμ ν¨μ¨μ±μ λμ΄κ³ , λ¨μΌ μ₯μ μ§μ μ μ€μ¬ μμ€ν μ μ λ’°μ±μ κ°νν μ μμ΅λλ€.
3οΈβ£ λ§μ΄ν¬λ‘μλΉμ€ κ°μ ν΅μ .
- JWTλ μλ² κ° μΈμ¦μλ μ¬μ©ν μ μμ΅λλ€.
- λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μμ κ° μλΉμ€κ° λ 립μ μΌλ‘ JWTλ₯Ό κ²μ¦ν μ μμΌλ―λ‘, μμ νκ³ ν¨μ¨μ μΈ μΈμ¦ κ΄λ¦¬κ° κ°λ₯ν©λλ€.
π€ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²(Microservices Architecture)λ 무μμΌκΉμ?
μ ν리μΌμ΄μ μ μ¬λ¬ κ°μ μμ λ 립μ μΈ μλΉμ€λ‘ λλ μ κ°λ°νκ³ λ°°ν¬νλ λ°©μμ μλ―Έν©λλ€.
κ° λ§μ΄ν¬λ‘μλΉμ€(Microservices)λ νΉμ κΈ°λ₯μ΄λ λΉμ¦λμ€ λ‘μ§μ λ 립μ μΌλ‘ μννλ©°, μλ‘ λ 립μ μΌλ‘ κ°λ°, λ°°ν¬, νμ₯, μ μ§λ³΄μν μ μλ νΉμ±μ΄ μμ΅λλ€.
μ΄ μν€ν μ²λ λκ·λͺ¨ μ ν리μΌμ΄μ μμ μ μ°μ κ³Ό νμ₯μ±μ κ·Ήλνν μ μλλ‘ μ€κ³λμμ΅λλ€.
7οΈβ£ μμ½.
- JWT(JSON Web Token)μ μμ νκ³ κ°νΈν μΈμ¦κ³Ό μ 보 μ μ‘μ μν ν ν°μΌλ‘, λμ§νΈ μλͺ μ ν΅ν΄ ν ν°μ΄ λ³μ‘°λμ§ μμμμ κ²μ¦ν μ μμ΅λλ€.
- JWTλ μ£Όλ‘ μ¬μ©μ μΈμ¦κ³Ό API μ κ·Ό μ μ΄ λ±μ μ¬μ©λλ©°, μκΈ° ν¬ν¨ ν ν°μ΄λ―λ‘ λ³λμ μΈμ μ μ₯μκ° νμνμ§ μμ΅λλ€.
- Javaμμ JWTλ₯Ό μμ±νκ³ κ²μ¦νλ €λ©΄ JJWT λΌμ΄λΈλ¬λ¦¬μ κ°μ λꡬλ₯Ό μ¬μ©ν μ μμΌλ©°, μ΄λ₯Ό ν΅ν΄ κ°νΈνκ² ν ν°μ κ΄λ¦¬ν μ μμ΅λλ€.