๐ง ์ธ๋ถ ์์ ๊ณ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํน์ ์๋น์ค(์ํฐ๋)์ ๊ฐํธํ ํ์๊ฐ์ ์ ํ ๊ฒฝํ์ด ์๋์?
ํด๋ฆญ ํ ๋ฒ์ผ๋ก ์ฝ๊ฒ ๊ฐ์ ๋ ๊ฐ๋ฅํ ๋ฟ๋ง ์๋๋ผ, ํน์ ์๋น์ค(์ํฐ๋)์์๋ ํ์ด์ค๋ถ, ์ ํ, ๊ตฌ๊ธ ๋ฑ์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๊ฐํธํ ์ฌ์ฉํ ์ ์์ต๋๋ค! ์ด๋ ์ฌ์ฉ๋๋ ๊ฒ์ด OAuth์ ๋๋ค.
๊ตฌ๊ธ, ํ์ด์ค๋ถ ๋ฑ ๋ค์ํ ํ๋ซํฌ์ ํน์ ํ ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํด์ ์๋น์ค๊ฐ ํด๋น ํด๋ผ์ด์ธํธ์ ์ ๊ทผ ๊ถํ์ ์์๋ฐ์ ์ ์๋ ํ์ค ํ๋กํ ์ฝ.
์ฆ, ํน์ ์๋น์ค๋ฅผ ์ด์ฉํ๋ ์ ์ ์ ํ์ฌ ํ๋ซํผ ์ ๋ณด์๋ ์ ๊ทผํ๊ธฐ ์ํด ๊ถํ์ ํ์ฌ ํ๋ซํผ์ผ๋ก๋ถํฐ ๊ถํ์ ์์๋ฐ๋ ๊ฒ์ด๋ค.
Resource Server์ ์์์ ์ด์ฉํ๊ณ ์ ํ๋ ์๋น์ค. ๋ณดํต ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ๋ ค๋ ์๋น์ค๊ฐ ๋จ.
OAuth๋ฅผ ์ฌ์ฉํด ์๋น์ค ์ ๊ณต์์๊ฒ ์ ๊ทผํ๋ ์น์ฌ์ดํธ or ์ ํ๋ฆฌ์ผ์ด์
์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ.
*Authorization Server์ ์
์ฅ์์๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ ์๋น์ค๊ฐ ํด๋ผ์ด์ธํธ์์ ํท๊ฐ๋ ค์ ์๋๋ค! Resource Owner์ ๊ตฌ๋ถ์ง์.
์น ์๋น์ค๋ฅผ ์ด์ฉํ๋ ค๋ ์ค์ ์ ์ . ์ฆ, ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ ์๋น์ค๋ฅผ ์ด์ฉํ๋ฉด์, ๊ตฌ๊ธ/ํ์ด์ค๋ถ ๋ฑ์ ํ๋ซํผ์์ ๋ฆฌ์์ค๋ฅผ ์์ ํ๊ณ ์๋ ์ฌ์ฉ์.
Authorization Server์ Resource Server๋ ๊ณต์๋ฌธ์์ ๋ณ๊ฐ๋ก ๊ตฌ๋ถ๋์ด ์์ง๋ง, ๋ณ๊ฐ์ ์๋ฒ๋ก ๊ตฌ์ฑํ ์ง, ํ๋์ ์๋ฒ๋ก ๊ตฌ์ฑํ ์ง๋ ๊ฐ๋ฐ์๊ฐ ์ ํํ๊ธฐ ๋๋ฆ์ด๋ผ๊ณ ํ๋ค.
1. Resource owner. ์ฆ, ์ฌ์ฉ์๊ฐ ๋งจ ์ฒ์ ๊ฐ์ธ ์๋น์ค ์น์ฌ์ดํธ์์ ๋ก๊ทธ์ธ ๋ฒํผ(Google, Kakao, FB, Twitter)์ ๋๋ฅธ๋ค.
2. ์๋น์ค๋ ํด๋น Authorization server์ Authorization code ๋ฐ๊ธ ์์ฒญ์ ๋ณด๋ธ๋ค.
3. Authorization server๋ ์ฌ์ฉ์์๊ฒ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ์ ๊ณตํ๋ฉฐ ์ธ์ฆ(ID/PW)์ ์์ฒญํ๋ค.
4. ์ฌ์ฉ์๋ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ Authorization server์ ๋ณด๋ด๋๋ฐ ์ด ๋ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์ด ๋ฐ์ํ๋ค.
+) 4-1. ์ฌ์ฉ์ ์
์ฅ์์ ์๋น์ค๋ ์์ ์ ์ ๋ณด๋ฅผ ๋์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋น์ค๋ ์ฌ์ฉ์์๊ฒ ์ด๋ ํ ์์์ ์ฌ์ฉํ๋์ง ๋ช
์ํ๊ณ ์ฌ์ฉ์์ ๋์๋ฅผ ๊ตฌํ๋ค.
5. ๊ทธ ํ ์ฌ์ฉ์๊ฐ ์ธ์ฆ์ ํ์ง๋ง Resource server ์
์ฅ์์ ์์ง ์๋น์ค๊ฐ ์ ๋ง ์ฌ์ฉ์์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋์ง ํ์ ํ ์ ์์ผ๋ฏ๋ก(์๋น์ค๋ฅผ ์์ง ์ ๋ขฐํ ์ ์์ผ๋ฏ๋ก) ์ฌ์ฉ์์๊ฒ Authorization code๋ฅผ ์ ํด์ค๋ค.
6. ์ฌ์ฉ์๋ ๋ฐ์ Authorization code๋ฅผ ๋ค์ ์๋น์ค์๊ฒ ์ ๋ฌํด ์ค๋ค.
7. ์๋น์ค๋ ์ฌ์ฉ์์๊ฒ ๋ฐ์ Authorization code๋ฅผ Authorization server์ ์ ๋ฌํด ์ฃผ๋ฉฐ Access token์ ์์ฒญํ๋ค.
5~7์ ๊ณผ์ ์ ๊ฑฐ์น๋ ์ด์ ? Authorization server ์ ์ฅ์์ ์๋น์ค๋ฅผ ์์ง ์ ๋ขฐํ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ์ฆ์ ๋ง์น ์ฌ์ฉ์์๊ฒ Authorization code๋ฅผ ์ ๋ฌํ ์ฌ์ฉ์๋ ์๋น์ค๋ฅผ ์ ๋ขฐํ๋ฏ๋ก ๋ฐ์ Authorization code๋ฅผ ์ ๋ฌํด ์ฃผ๋ฉฐ ์๋น์ค๋ ์ด๋ฅผ ๋ค์ Authorization server์ ์ ๋ฌํด ์๋น์ค๋ก์ ์ ์์ ํ์ธ์์ผ ์ค๋ค.
8.์๋น์ค์ ํ์ธ์ ๋ง์น Authorization server๋ ๋ง์นจ๋ด Access token์ ์๋น์ค๋ก ๋ฐ๊ธํ๋ค. ์ด๋๋ถํฐ ์๋น์ค๋ ๋ฐ๊ธ๋ฐ์ Access token์ ์์ฒด์ ์ผ๋ก ์ ์ฅ, ๊ด๋ฆฌํด์ผ ํ๋ค.
9. ์ธ์ฆ ์๋ฃ ๋ฐ ๋ก๊ทธ์ธ ์ฑ๊ณต.
10. ์ฌ์ฉ์๊ฐ ์๋น์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ Access token๊ณผ ํจ๊ป ์๋น์ค ์๋ฒ์ ์์ฒญ.
11. ์ฌ์ฉ์๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ ์๋น์ค๋ API server์ Access token๊ณผ ํจ๊ป ํธ์ถํ๋ค.
12. API server๋ Access token ๊ฒ์ฆ ํ ์์์ ์๋น์ค ์๋ฒ์ ์ ๊ณตํ๋ค.
13. ์๋น์ค ์๋ฒ๋ ์ ๊ณต๋ฐ์ ์์์ ๊ฐ๊ณตํด ์ฌ์ฉ์์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.