<aside>

</aside>

와! λ“œλ””μ–΄ λŒ€λ§μ˜ 6λΆ€: 인증 및 λ³΄μ•ˆ κ°•μ˜μ˜ 첫 μ‹œκ°„, 27κ°•μž…λ‹ˆλ‹€! πŸ” μ—¬λŸ¬λΆ„, 정말 μ€‘μš”ν•œ νŒŒνŠΈκΉŒμ§€ 잘 μ˜€μ…¨μ–΄μš”!

μ§€λ‚œ 5λΆ€μ—μ„œλŠ” SQLAlchemy와 Alembic을 μ‚¬μš©ν•˜μ—¬ 우리 ToDo API에 λ°μ΄ν„°λ² μ΄μŠ€ 연동 및 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ κΈ°λŠ₯을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€. 이제 λ°μ΄ν„°λŠ” 영ꡬ적으둜 μ €μž₯되죠! πŸ‘

ν•˜μ§€λ§Œ μ§€κΈˆ 우리 APIμ—λŠ” μ•„μ£Ό 큰 λ¬Έμ œκ°€ λ‚¨μ•„μžˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ μ•„λ¬΄λ‚˜ λ“€μ–΄μ™€μ„œ λͺ¨λ“  ν•  일을 보고, μˆ˜μ •ν•˜κ³ , μ‚­μ œν•  수 μžˆλ‹€λŠ” μ μž…λ‹ˆλ‹€! 마치 문이 ν™œμ§ μ—΄λ €μžˆλŠ” μ§‘κ³Ό κ°™μ•„μš”. πŸ˜… μ‹€μ œ μ„œλΉ„μŠ€μ—μ„œλŠ” μ‚¬μš©μžλ₯Ό μ‹λ³„ν•˜κ³ , ν—ˆκ°€λœ μ‚¬λžŒλ§Œ νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ λ³΄μ•ˆ μž₯치λ₯Ό λ§ˆλ ¨ν•˜λŠ” 것이 ν•„μˆ˜μ μž…λ‹ˆλ‹€.

이번 6λΆ€μ—μ„œλŠ” λ°”λ‘œ 이 **인증(Authentication)**κ³Ό 인가(Authorization) κΈ°λŠ₯을 우리 ToDo API에 κ΅¬ν˜„ν•˜λŠ” 방법을 λ°°μ›λ‹ˆλ‹€. λˆ„κ°€ APIλ₯Ό μ‚¬μš©ν•˜λŠ”μ§€ ν™•μΈν•˜κ³ (인증), κ·Έ μ‚¬μš©μžκ°€ νŠΉμ • μž‘μ—…μ„ ν•  κΆŒν•œμ΄ μžˆλŠ”μ§€ κ²€μ‚¬ν•˜λŠ”(인가) 과정을 κ΅¬ν˜„ν•˜μ—¬ APIλ₯Ό μ•ˆμ „ν•˜κ²Œ λ³΄ν˜Έν•  κ²ƒμž…λ‹ˆλ‹€.

κ·Έ 첫 단계인 이번 27κ°•μ—μ„œλŠ” 인증과 μΈκ°€μ˜ κΈ°λ³Έ κ°œλ…μ„ λͺ…ν™•νžˆ μ΄ν•΄ν•˜κ³ , μš°λ¦¬κ°€ μ‚¬μš©ν•  ν˜„λŒ€μ μΈ μ›Ή 인증 ν‘œμ€€μΈ OAuth2와 **JWT(JSON Web Token)**에 λŒ€ν•΄ μ•Œμ•„λ³΄λ©° μ•žμœΌλ‘œ 진행될 λ³΄μ•ˆ κΈ°λŠ₯ κ΅¬ν˜„μ˜ 큰 그림을 κ·Έλ €λ³΄κ² μŠ΅λ‹ˆλ‹€. λ³΄μ•ˆμ˜ 기초λ₯Ό νƒ„νƒ„νžˆ λ‹€μ Έλ΄…μ‹œλ‹€! πŸ’ͺ


πŸ“š 챕터 μ†Œκ°œ

이번 27강은 6λΆ€ '인증 및 λ³΄μ•ˆ'의 μ‹œμž‘μœΌλ‘œ, μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ³΄μ•ˆμ˜ κ°€μž₯ 기본적인 두 κΈ°λ‘₯인 **인증(Authentication)**κ³Ό **인가(Authorization)**의 κ°œλ…μ„ λͺ…ν™•νžˆ κ΅¬λΆ„ν•˜κ³  μ΄ν•΄ν•˜λŠ” 데 쀑점을 λ‘‘λ‹ˆλ‹€. "당신은 λˆ„κ΅¬μ‹ κ°€μš”?"λ₯Ό λ¬»λŠ” 인증과 "이 μž‘μ—…μ„ ν•  κΆŒν•œμ΄ μžˆλ‚˜μš”?"λ₯Ό λ¬»λŠ” μΈκ°€μ˜ 차이λ₯Ό μ•Œμ•„λ΄…λ‹ˆλ‹€.

λ‹€μŒμœΌλ‘œ, ν˜„λŒ€μ μΈ μ›Ή API μΈμ¦μ—μ„œ 널리 μ‚¬μš©λ˜λŠ” ν‘œμ€€ ν”„λ ˆμž„μ›Œν¬μΈ OAuth2의 κΈ°λ³Έ κ°œλ…κ³Ό 역할을 μ†Œκ°œν•˜κ³ , μš°λ¦¬κ°€ 이번 ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©μž 둜그인 및 토큰 λ°œκΈ‰μ„ μœ„ν•΄ μ‚¬μš©ν•  OAuth2 μ•”ν˜Έ(Password) 그랜트 νƒ€μž… 흐름에 λŒ€ν•΄ κ°„λž΅νžˆ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.

λ˜ν•œ, 인증 μƒνƒœλ₯Ό μœ μ§€ν•˜κ³  API μš”μ²­ μ‹œ μ‚¬μš©μžλ₯Ό μ‹λ³„ν•˜λŠ” 데 μ‚¬μš©ν•  **JWT(JSON Web Token)**의 ꡬ쑰와 νŠΉμ§•(특히 Stateless νŠΉμ„±)을 μ•Œμ•„λ΄…λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, FastAPIκ°€ μ΄λŸ¬ν•œ ν‘œμ€€ λ³΄μ•ˆ νŒ¨ν„΄ κ΅¬ν˜„μ„ 돕기 μœ„ν•΄ μ œκ³΅ν•˜λŠ” λ³΄μ•ˆ μœ ν‹Έλ¦¬ν‹°λ“€(OAuth2PasswordBearer λ“±)을 κ°„λž΅νžˆ μ†Œκ°œν•˜κ³ , μ•žμœΌλ‘œ μ΄μ–΄μ§ˆ κ°•μ˜λ“€(μ‚¬μš©μž 등둝, 둜그인 κ΅¬ν˜„, 경둜 보호 λ“±)의 κ΅¬ν˜„ λ‘œλ“œλ§΅μ„ μ œμ‹œν•˜μ—¬ 전체적인 λ³΄μ•ˆ κΈ°λŠ₯ 개발 흐름을 νŒŒμ•…ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.


🎯 챕터 λͺ©ν‘œ

이 κ°•μ˜λ₯Ό 마치면 μ—¬λŸ¬λΆ„μ€ λ‹€μŒμ„ ν•  수 있게 λ©λ‹ˆλ‹€:

  1. **인증(Authentication)**κ³Ό **인가(Authorization)**의 κ°œλ…μ„ λͺ…ν™•νžˆ κ΅¬λΆ„ν•˜κ³  μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. OAuth2 ν”„λ ˆμž„μ›Œν¬μ˜ 기본적인 μ—­ν• (토큰 기반 μ ‘κ·Ό μ œμ–΄)κ³Ό **JWT(JSON Web Token)**의 μ—­ν• (토큰 ν˜•μ‹) 및 νŠΉμ§•μ„ μ΄ν•΄ν•©λ‹ˆλ‹€.
  3. 이번 ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•  인증 흐름인 OAuth2 μ•”ν˜Έ(Password) 그랜트 νƒ€μž…μ„ μΈμ§€ν•©λ‹ˆλ‹€.
  4. FastAPIκ°€ μ œκ³΅ν•˜λŠ” μ£Όμš” λ³΄μ•ˆ κ΄€λ ¨ μœ ν‹Έλ¦¬ν‹°(OAuth2PasswordBearer λ“±)의 μ‘΄μž¬μ™€ λͺ©μ μ„ μ΄ν•΄ν•©λ‹ˆλ‹€.
  5. μ•žμœΌλ‘œ 진행될 λ³΄μ•ˆ κΈ°λŠ₯ κ΅¬ν˜„ 단계(μ‚¬μš©μž 등둝, 둜그인, 토큰 처리, 경둜 보호)의 λ‘œλ“œλ§΅μ„ νŒŒμ•…ν•©λ‹ˆλ‹€.