| ์ปดํฌ๋ํธ | ์ค๋ช |
|---|---|
| Resource Owner | ์์ ์์ ์. ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์(User) |
| Client | ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ค๋ ์ ํ๋ฆฌ์ผ์ด์ (ex. ๋ด ์๋น์ค) |
| Authorization Server | ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ํ ํฐ ๋ฐ๊ธ์ ๋ด๋น (ex. Google, Kakao, Naver) |
| Resource Server | ๋ณดํธ๋ ์์( API ๋ฑ )์ ๋ณด๊ดํ๋ฉฐ, Access Token( Bearer Token )์ผ๋ก ์ ๊ทผ ์ ์ด - Authorization Server์ ๊ฐ์ ์๋ ์์ |
EX )
๋ด ๋ธ๋ก๊ทธ์ ๊ตฌ๊ธ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋ถ์๋ค๊ณ ์๊ฐํด๋ณด์.
Authorization Code Grant๋ OAuth 2.0์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํ๋ฆ์ด๋ฉฐ, ์๋ฒ ์ฌ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค.
์ฌ์ฉ ์์
1๏ธโฃ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ์์ฒญ
2๏ธโฃ ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ๋์
3๏ธโฃ ์ธ๊ฐ ์ฝ๋ ์์
4๏ธโฃ ์ธ๊ฐ ์ฝ๋๋ฅผ ์ฌ์ฉํด Access Token ์์ฒญ
5๏ธโฃ Access Token ์๋ต
6๏ธโฃ ๋ณดํธ ์์ ์ ๊ทผ
์์ฝ โ
์ฌ์ฉ์ -> ์ธ์ฆ -> Authorization Server -> ์ธ๊ฐ ์ฝ๋ ๋ฐ๊ธ
-> Client -> Access Token ๋ฐ๊ธ -> API ์ ๊ทผ
| ์ํ ์์ | ๋์ ๋ฐฉ์ |
|---|---|
| ์ฝ๋ ํ์ทจ | state ํ๋ผ๋ฏธํฐ๋ก CSRF ๋ฐฉ์ง |
| Token ๋ ธ์ถ | HTTPS ํ์, ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ ์๋ฒ์ ์์ ํ๊ฒ ๋ณด๊ด |
| ํ ํฐ ๋ง๋ฃ | Refresh Token ์ฌ์ฉํ์ฌ ์ฌ๋ฐ๊ธ |
| ์ธ์ฆ ์์กฐ | ์ธ์ฆ ์ฝ๋๋ 1ํ์ฉ, ์งง์ ์ ํจ์๊ฐ ์ ์ฉ |
OAuth 2.0์ ๊ฐ ์ปดํฌ๋ํธ์ ์ญํ ๊ณผ Authorization Code ํ๋ฆ์ ์์๋ฅผ ์์๋ณด์๋ค.
Authorization Code Grant๋ ๋ณด์์ฑ๊ณผ ์ ์ฐ์ฑ ๋ฉด์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฉ์์ด๋ฏ๋ก ์ด๋ฅผ ์ดํดํ๋ ๊ฒ์ OAuth ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์ ์ค๊ณํ ๋ ํฐ ํ์ด ๋ ๊ฒ์ด๋ค โ
์์ฆ์ ๋ง์ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ OAuth 2.0 ์ธ์ฆ ๊ณผ์ ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ์ฌ์ฃผ์ง๋ง, ๊ทธ ๋ด๋ถ์์ ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ์ดํดํ๋ ๊ฒ์ ๋ณด์ ์ทจ์ฝ์ ์ ํผํ๊ณ , ํ์ ์ ์ ์ฐํ ์ปค์คํฐ๋ง์ด์ง์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค๐ค