πŸ”™λ’€λ‘œκ°€κΈ°

OAuth2 Grant Types

OAuth2μ—μ„œλŠ” μ—¬λŸ¬ κ°€μ§€ Grant Type(κΆŒν•œ λΆ€μ—¬ μœ ν˜•)을 μ œκ³΅ν•˜λ©°, 이듀은 각각 λ‹€λ₯Έ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ μ‚¬μš©λœλ‹€.

1. Authorization Code Flow

μ„œλ²„ μ‚¬μ΄λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‚¬μš©μžλ₯Ό λŒ€μ‹ ν•΄μ„œ 인증 μ„œλ²„λ‘œλΆ€ν„° 인증 μ½”λ“œλ₯Ό λ°›μ•„μ˜€κ³ , 이λ₯Ό λ‹€μ‹œ 인증 μ„œλ²„μ— μ „μ†‘ν•˜μ—¬ μ•‘μ„ΈμŠ€ 토큰을 λ°›μ•„μ˜€λŠ” 방식이닀. 이 방식은 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 주둜 μ‚¬μš©λœλ‹€.

2. Implicit Flow

ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜, 즉 μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ 같이 μ‚¬μš©μžμ˜ λΈŒλΌμš°μ €μ—μ„œ 직접 μ‹€ν–‰λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‚¬μš©λœλ‹€. 이 방식은 인증 μ½”λ“œλ₯Ό κ±°μΉ˜μ§€ μ•Šκ³  λ°”λ‘œ μ•‘μ„ΈμŠ€ 토큰을 λ°›μ•„μ˜€μ§€λ§Œ, μ•‘μ„ΈμŠ€ 토큰이 λΈŒλΌμš°μ €μ— λ…ΈμΆœλ˜λŠ” λ³΄μ•ˆ μƒμ˜ λ¬Έμ œκ°€ μžˆλ‹€.

3. Password Credentials Flow

ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‚¬μš©μžμ˜ 아이디와 λΉ„λ°€λ²ˆν˜Έλ₯Ό λ°›μ•„ 직접 인증 μ„œλ²„μ— μ „μ†‘ν•˜μ—¬ μ•‘μ„ΈμŠ€ 토큰을 λ°›μ•„μ˜€λŠ” 방식이닀. 이 방식은 μ‹ λ’°ν•  수 μžˆλŠ” ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ‚¬μš©λ˜λ©°, μ‚¬μš©μžμ˜ 아이디와 λΉ„λ°€λ²ˆν˜Έλ₯Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 닀루기 λ•Œλ¬Έμ— λ³΄μ•ˆ μƒμ˜ μœ„ν—˜μ΄ μžˆλ‹€.

4. Client Credentials Flow

ν΄λΌμ΄μ–ΈνŠΈ μžμ²΄κ°€ λ¦¬μ†ŒμŠ€ μ„œλ²„μ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μ•‘μ„ΈμŠ€ 토큰을 μš”μ²­ν•˜λŠ” 방식이닀. 이 방식은 ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‚¬μš©μžλ₯Ό λŒ€μ‹ ν•΄μ„œ λ¦¬μ†ŒμŠ€ μ„œλ²„μ— μ ‘κ·Όν•΄μ•Ό ν•  λ•Œ μ‚¬μš©λœλ‹€.

5. Device Code Flow

μž…λ ₯ κΈ°λŠ₯이 μ œν•œλœ λ””λ°”μ΄μŠ€(예: 슀마트 TV, IoT λ””λ°”μ΄μŠ€ λ“±)μ—μ„œ μ‚¬μš©λœλ‹€. 이 λ°©μ‹μ—μ„œλŠ” λ””λ°”μ΄μŠ€κ°€ 인증 μ„œλ²„λ‘œλΆ€ν„° μž₯치 μ½”λ“œλ₯Ό λ°›μ•„ μ‚¬μš©μžμ—κ²Œ 보여주고, μ‚¬μš©μžλŠ” λ‹€λ₯Έ κΈ°κΈ°μ—μ„œ 이 μ½”λ“œλ₯Ό μ΄μš©ν•˜μ—¬ 인증을 μ™„λ£Œν•˜κ²Œ λœλ‹€.

6. Refresh Token Flow

μ•‘μ„ΈμŠ€ 토큰이 λ§Œλ£Œλ˜μ—ˆμ„ λ•Œ, μƒˆλ‘œμš΄ μ•‘μ„ΈμŠ€ 토큰을 λ°›μ•„μ˜€λŠ” 방식이닀. 이 λ°©μ‹μ—μ„œλŠ” μ²˜μŒμ— 인증 μ„œλ²„λ‘œλΆ€ν„° μ•‘μ„ΈμŠ€ 토큰과 ν•¨κ»˜ λ¦¬ν”„λ ˆμ‹œ 토큰을 λ°›μ•„μ˜¨λ‹€. 이후 μ•‘μ„ΈμŠ€ 토큰이 만료되면, λ¦¬ν”„λ ˆμ‹œ 토큰을 μ΄μš©ν•˜μ—¬ μƒˆλ‘œμš΄ μ•‘μ„ΈμŠ€ 토큰을 λ°›μ•„μ˜¬ 수 μžˆλ‹€.

각 Grant Type은 μ‚¬μš©ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μœ ν˜•κ³Ό ν•„μš”ν•œ λ³΄μ•ˆ μˆ˜μ€€ 등에 따라 μ„ νƒλœλ‹€. μ΄λŠ” OAuth2κ°€ λ‹€μ–‘ν•œ μ‹œλ‚˜λ¦¬μ˜€μ— λŒ€μ‘ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ§„ ν”„λ‘œν† μ½œμ΄λΌλŠ” 것을 보여쀀닀.