โ๏ธ ์์
OAuth์ ๋ํด ํ์ตํ๋ฉด์ ์ด๋ค ์๋ฆฌ๋ ์๋ํ๋์ง ๋ฑ์ ๋ํด ํ์ตํ๋ค.
๐ ์๊ฒ ๋ ๊ฒ
์ฐ๋ฆฌ๊ฐ ํํ ๋ณผ ์ ์๋ ์์
๋ก๊ทธ์ธ ์ธ์ฆ ๋ฐฉ์์ OAuth 2.0์ด๋ผ๋ ๊ธฐ์ ์ ๋ฐํ์ผ๋ก ๊ตฌํ ๋๋ค.
๐ค OAuth
- ์ธ์ฆ์ ์ค๊ฐํด ์ฃผ๋ ๋ฉ์ปค๋์ฆ์ด๋ค.
- ๋ณด์๋ ๋ฆฌ์์ค์ ์ก์ธ์ค ํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ์๊ฒ ๊ถํ์ ์ ๊ณตํ๋ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ๋ ํ๋กํ ์ฝ์ด๋ค.
- ์ด๋ฏธ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ์น ์๋น์ค(naver, kakao, googl ๋ฑ)์์ ์ฌ์ฉ์์ ์ธ์ฆ์ ๋์ ํด ์ฃผ๊ณ , ์ ๊ทผ ๊ถํ์ ๋ํ ํ ํฐ์ ๋ฐ๊ธํ ํ, ์ด๋ฅผ ์ด์ฉํด ๋ด ์๋ฒ์์ ์ธ์ฆ์ด ๊ฐ๋ฅํด ์ง๋ค.

์ค๋์์ง ๋ก๊ทธ์ธ ํ์ด์ง "SNS๊ณ์ ์ผ๋ก ๊ฐํธ ๋ก๊ทธ์ธ/ํ์๊ฐ์
" ๋ถ๋ถ
- OAuth๋ฅผ ํ์ฉํ๋ค๋ฉด ์์ฃผ ์ฌ์ฉํ๊ณ ์ค์ํ ์๋น์ค(facebook, kakao, naver ๋ฑ)์ ID์ Password๋ง ๊ธฐ์ตํด ๋์ผ๋ฉด ํด๋น ์๋น์ค๋ค์ ํตํด ์ธ๋ถ ์๋น์ค๋ก ์์
๋ก๊ทธ์ธ์ ํ ์ ์๋ค.
- ๊ฒ์ฆ๋์ง ์์ App์์ OAuth๋ฅผ ์ฌ์ฉํด ๋ก๊ทธ์ธํ ๊ฒฝ์ฐ ์ ์ ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์ง์ App์ ๋
ธ์ถ๋ ์ผ์ด ์๊ณ ์ธ์ฆ ๊ถํ์ ๋ํ ํ๊ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ ์๊ฒ ๊ตฌํด์ผ ํ๊ธฐ์ ๋ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.(๋ณด์์์ ์ด์ )
โ๏ธ OAuth์ ์ฃผ์ฒด
- Resource Owner(์ฌ์ฉ์)
- OAuth ์ธ์ฆ์ ํตํด ์์
๋ก๊ทธ์ธ์ ํ๊ณ ์ถ์ด ํ๋ ์ฌ์ฉ์
- Resource : ์ฌ์ฉ์์ ์ด๋ฆ, ์ ํ๋ฒํธ ๋ฑ์ ์ ๋ณด
(์ด๋ฌํ ์ ๋ณด์ ์ฃผ์ธ์ด ์ฌ์ฉ์์ด๊ธฐ ๋๋ฌธ์ Resource Owner๋ผ ํ๋ค.)
- Resource Server & Authorization Server (์ฌ์ฉ์ค์ธ ์๋ฒ)
Resource Server
- ์ฌ์ฉ์๊ฐ ์์
๋ก๊ทธ์ธ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋, ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ์๋น์ค์ ์๋ฒ ์ค ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๋ ์๋ฒ
Authorization Server
- ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ์๋ฒ์ ์๋ฒ ์ค ์ธ์ฆ์ ๋ด๋นํ๋ ์๋ฒ
- Application
- ์ฌ์ฉ์๊ฐ ์์
๋ก๊ทธ์ธ์ ํ์ฉํด ์ด์ฉํ๊ณ ์ ํ๋ ์๋ก์ด ์๋น์ค๋ ํ๊ฒฝ์ ๋ฐ๋ผ์ ์กฐ๊ธ์ฉ ๋ค๋ฅด๊ฒ ๋ถ๋ฆฐ๋ค.
(๊ฒฝ์ฐ์ ๋ฐ๋ผ์ Applicaiton์ Client์ Server๋ก ์ธ๋ถํํด์ ์ง์นญ)
โ๏ธ OAuth ์ธ์ฆ ๋ฐฉ์์ ์ข
๋ฅ์ ํ๋ฆ
mplicit Grant Type, Authorization Code Grant Type, Refresh Token Grant Type
Grant Type?
Authorization Server์์ Access Token์ ๋ฐ์์ค๋ ๋ฐฉ์
1. Implicit Grant Type
- ์๋ก์ด ์๋น์ค์ ๋ฐ๋ก ์ก์ธ์ค ํ ํฐ์ ์ฃผ๋ ๋ฐฉ์์ผ๋ก ๋ณด์์ฑ์ด ์กฐ๊ธ ๋จ์ด์ง๋ค.(์ ์ฌ์ฉํ์ง ์๋ ์ด์ )
2. Authorization Code Grant Type
- Implicit Grant Type์์ ์ธ์ฆ ๋จ๊ณ๋ฅผ ํ ๋จ๊ป ์ถ๊ฐํ ์ธ์ฆ ๋ฐฉ์
- ๋ฐ๋ก ํ ํฐ์ ์ ๋ฌํ์ง ์๊ณ Authorization Code๋ฅผ ํ์ธ ํ ์ ๋ฌํ๋ค.
- Authorization Code๋ฅผ ์ฌ์ฉํ ์ธ์ฆ ๋จ๊ณ๊ฐ ์ถ๊ฐ๋ก ์๊ธฐ ๋๋ฌธ์ ๋น๊ต์ ๋ ์์
- ์ก์ธ์ค ํ ํฐ์ด ๋ง๋ฃ ๋์์ผ ๋ ๋งค๋ฒ ๊ณผ์ ์ ๊ฑฐ์ณ์ผํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ํธ์์ฑ์ ์ข์ง ์๋ค.
3. Refresh Token Grant Type
- ๋ฆฌํ๋ ์ ํ ํฐ์ ์ด์ฉํด ์ก์ธ์ค ํ ํฐ์ ๋ฐ์์ค๋ ์ธ์ฆ ๋ฐฉ์
- ๋ฆฌํ๋ ์ ํ ํฐ์ ๊ฒ์ฆํ ๋ค์ ์ก์ธ์ค ํ ํฐ์ ๋ค์ ๋ฐ๊ธํด ์ค๋ค.
โ๏ธ OAuth์ ์ฅ์
1. ์ฝ๊ณ ์์ ํ๊ฒ ์๋ก์ด ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋ค.
- ์ฌ์ฉ์๋ OAuth๋ฅผ ํตํด ํน์ ์ฌ์ดํธ์ ์์ด๋, ๋น๋ฐ๋ฒํธ, ์ด๋ฆ, ์ ํ๋ฒํธ ๋ฑ์ ์ ๋ณด๋ฅผ ์ผ์ผ์ด ์
๋ ฅํ์ง ์์๋ ํด๋ฆญ ๋ช ๋ฒ ๋ง์ผ๋ก ์์ฝ๊ฒ ๊ฐ์
ํ ์ ์์ด ํธ๋ฆฌํ๋ค.
- ์ ๋ณด๋ฅผ ํด๋น ์๋น์ค์ ์ง์ ๋
ธ์ถํ๋ ๊ฒ์ด ์๋๊ธฐ์ ์ง์ ๊ฐ์
ํ๋ ๊ฒ๋ณด๋ค ๋ ์์ ํ๋ค.
- Application์ ์
์ฅ์์๋ ํ์์ ์ ๋ณด๋ฅผ ์ง์ ๊ฐ์ง๊ณ ์์ด ๋ฐ์ํ ์ ์๋ ํ์ ์ ๋ณด ์ ์ถ์ ์ํ์ฑ์์ ๋ถ๋ด์ ๋ ์ ์๋ค.
2. ๊ถํ ์์ญ์ ์ค์ ํ ์ ์๋ค.
- OAuth ์ธ์ฆ์ ํ๊ฐํ๋ค๊ณ ํด์ ์๋ก์ด ์๋น์ค๊ฐ ์ฌ์ฉ ์ค์ด๋ ์๋น์ค์ ๋ชจ๋ ์ ๋ณด์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ๊ฒ์ ์๋๋ค. (์ฌ์ฉ์๋ ์ํ๋ ์ ๋ณด์๋ง ์ ๊ทผ์ ํ๋ฝํ ์ ์์ด ๋ณด๋ค ๋ ์์ )
- OAuth ์ค์ ํ์ด์ง์์๋ Application์์ ํ์ํ ์ ๋ณด๋ฅผ ์ ํํ ์ ์๋ค.(์ฌ์ฉ์๋ ์ด ์ค ์ํ๋ ์ ๋ณด๋ง ์ ํ์ ์ผ๋ก ์ ๊ณตํ ์ ์๋ค.)

โ๏ธ ๋ง์น๋ฉฐ
OAuth์ด ์ฐ๋ฆฌ๊ฐ ํํ ์๋ ์์
๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฑฐ์๋ค.
์ด๋ฒ ํ์ต์ ํตํด ์ฒ์ ์๊ฒ ๋์๊ณ
OAuth๋ก ๊ฐํธํ๊ฒ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์์ผ๋ฉด์๋ ๋์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ์งํฌ ์ ์๋ ๊ฑฐ ๊ฐ๋ค.