π₯¬ μμΆ
λ‘κ·ΈμΈ μν μ μ§ νλ‘μΈμ€ 곡μ
- ν΄λΌμ΄μΈνΈλ idμ λΉλ°λ²νΈλ₯Ό μμ±νμ¬ μλ²λ‘ λ‘κ·ΈμΈ μμ²μ 보λ΄κ³ μλ²λ DBμ μ μ₯λ μ¬μ©μμ λμ‘°νμ¬ κ²μ¦μ μ§νν λ€ μ μ id, νλ‘ν μ¬μ§ λ±μ μ μ μ 보μ ν¨κ» μ‘μΈμ€ ν ν° , 리νλ μ ν ν°μ λ°λμ λ΄μ ν΄λΌμ΄μΈνΈμ μ λ¬νλ€.
- ν΄λΌμ΄μΈνΈλ μΈκ°κ° νμν api μμ²μ ν λλ§λ€ μ‘μΈμ€ ν ν°μ Authorization ν€λμ λ΄μ 보λ΄μ€μΌν¨.
- μλ²λ μ‘μΈμ€ ν ν°μ κ²μ¦νκ³ λ§μ½ ν ν°μ΄ μ ν¨νμ§ μλ€λ©΄ (λ§λ£λκ±°λ μλ³μ‘°) ν΄λΌμ΄μΈνΈμ 401 μλ΅μ λ΄λ³΄λΈλ€.
- ν΄λΌμ΄μΈνΈλ 401 μλ΅μ λ°μΌλ©΄ 리νλ μ ν ν°μ ν€λμ λ΄μ /api/login/refresh λ‘ POST μμ²μ 보λΈλ€.
- μλ²λ 리νλ μ ν ν°μ μ ν¨μ±μ κ²μ¦ν λ€ μ‘μΈμ€ ν ν°μ ν΄λΌμ΄μΈνΈμ λ€μ λ°κΈνλ€.
- 리νλ μ ν ν° κ²μ¦μ μλ²λ db νΉμ redisμ μ μ₯λμ΄ μλ ν ν°κ³Ό μ νν μΌμΉνλμ§ νμΈνλ€.
- ν ν°μ νμ·¨λΉνκ±°λ λ‘κ·Έμμμ μλν κ²½μ° /api/logout μΌλ‘ refreshTokenμ Authorization ν€λμ λ΄μ 보λΈλ€.
리νλ μ ν ν°μ μλ²μμ μ μ₯νκ³ μμ΄μΌ νλ μ΄μ ?
<aside>
π‘ κΆκΈνκ² μμ΄. 리νλ μ ν ν°μ μλ²μ dbλ redisμ μ μ₯ν΄μΌνλ€κ³ λ³΄ν΅ μκΈ°νμμ? κ·Όλ° λ¦¬νλ μ ν ν°μ΄ μ€μ λ‘ μ μ₯λμλμ§ μ νμΈν΄μΌν΄? μΌλ°μ μΌλ‘ ν΄λΌμ΄μΈνΈκ° λ³΄λΈ λ¦¬νλ μ ν ν°μ΄ μ ν¨νμ§ κ²μ¦λ§ νλ©΄ λλκ±° μλμΌ? νΉμ μ¬μ©μκ° λ¦¬νλ μ ν ν°μ νμ·¨λΉνλ€κ³ νλ©΄ μλ²μμ dbμ μλ 리νλ μ ν ν°μ μμ ν¨μΌλ‘μ¨ λ³΄μμ κ°νν μ μκΈ° λλ¬Έμ΄μΌ?
</aside>
1. ν ν° λ¦¬λ³Όν¬(Token Revocation)
- 보μ μλ°: 리νλ μ ν ν°μ΄ νμ·¨λμκ±°λ, μ¬μ©μκ° κΈ°κΈ°λ₯Ό λΆμ€ν κ²½μ°, μλ²μ μ μ₯λ ν ν°μ μ¦μ 무ν¨νμμΌ μΆκ° νΌν΄λ₯Ό λ°©μ§ν μ μμ΅λλ€.
- μ¬μ©μ λ‘κ·Έμμ: μ¬μ©μκ° λͺ
μμ μΌλ‘ λ‘κ·Έμμν λ, 리νλ μ ν ν°μ λ°μ΄ν°λ² μ΄μ€μμ μμ νκ±°λ 무ν¨νν¨μΌλ‘μ¨, ν΄λΉ μ¬μ©μμ μΈμ
μ μμ ν μ’
λ£ν μ μμ΅λλ€.
2. μ ν¨μ± κ²μ¦ λ° κ΄λ¦¬
- ν ν° μ ν¨μ± κ²μ¦: ν΄λΌμ΄μΈνΈκ° μ 곡ν 리νλ μ ν ν°μ΄ μλ²μ μ μ₯λ ν ν°κ³Ό μΌμΉνλμ§ νμΈν¨μΌλ‘μ¨, ν ν°μ΄ μλ²μμ λ°κΈλ κ²μ΄ λ§λμ§ κ²μ¦ν μ μμ΅λλ€.
- μ€λ³΅ μ¬μ© λ°©μ§: μ μ₯λ ν ν°μ ν΅ν΄ 리νλ μ ν ν°μ μ¬μ¬μ©μ κ°μ§νκ³ μ΄λ₯Ό λ°©μ§ν μ μμ΅λλ€. μ΄λ ν ν°μ΄ 볡μ λμ΄ μ¬μ©λλ κ²μ λ§λ λ° λμμ΄ λ©λλ€.
3. 보μ κ°ν
- μ‘°κ±΄λΆ μ κ·Ό μ μ΄: μλ²μμλ 리νλ μ ν ν°μ μ μ₯ μ¬λΆλ₯Ό ν΅ν΄ μ¬μ©μμ μ κ·Όμ 쑰건λΆλ‘ μ μ΄ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, νΉμ 쑰건 νμμ μ¬μ©μμ μ κ·Όμ μ ννκ±°λ μΆκ° κ²μ¦μ μꡬν μ μμ΅λλ€.
4. μ¬μ©μ νλ λͺ¨λν°λ§