OAuth (Open Authorization)
์ฌ์ฉ์ ์ ๋ณด์ ์ ๊ทผํ๊ธฐ ์ํ ๊ฐ๋ฐฉํ ์ธ์ฆ ํ์ค
โข
OAuth ์คํ ๋ฌธ์
โข
OAuth ๊ตฌ์ฑ ์์
โฆ
์ฃผ์ฒด
โช
์ฌ์ฉ์
โช
์๋ฒ
โช
์ธ์ฆ ์๋ฒ
โช
๋ฆฌ์์ค ์๋ฒ
โฆ
์ฃผ์ ์ ๋ณด
โช
์ธ๊ฐ ์ฝ๋
โช
์ก์ธ์ค ํ ํฐ
โช
์ฌ์ฉ์ ์ ๋ณด
โข
OAuth ์ธ์ฆ ๊ณผ์
OAuth ์คํ ๋ฌธ์
์ด ๋ฌธ์๋ "OAuth 2.0 ์ธ์ฆ ํ๋ ์์ํฌ"๋ฅผ ์ ์ํ๋ฉฐ, ํด๋ผ์ด์ธํธ๊ฐ ์์ ์์ ์์ ์์์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๊ท์ ํฉ๋๋ค. ์ด ๋ฌธ์๋ OAuth 2.0 ํ๋กํ ์ฝ์ ๊ธฐ์ ์ ์ธ ์ธ๋ถ ์ฌํญ์ ์ค๋ช
ํ๊ณ ์์ต๋๋ค.
OAuth ๊ตฌ์ฑ ์์
โข
์ฃผ์ฒด
โฆ
์ฌ์ฉ์
โฆ
์๋ฒ
โฆ
์ธ์ฆ ์๋ฒ
โฆ
๋ฆฌ์์ค ์๋ฒ
โข
์ฃผ์ ์ ๋ณด
โฆ
์ธ๊ฐ ์ฝ๋
โฆ
์ก์ธ์ค ํ ํฐ
โฆ
์ฌ์ฉ์ ์ ๋ณด
์ฃผ์ฒด
OAuth ๊ตฌ์ฑ ์์์๋ ์ฌ์ฉ์, ์๋ฒ, ์ธ์ฆ ์๋ฒ, ๋ฆฌ์์ค ์๋ฒ๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์๋ฒ๋ ์ธ์ฆ ์๋ฒ์ ๋ํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋๋ ์๋ฒ์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ์นด์นด์ค, ๋ค์ด๋ฒ๊ฐ ์ธ์ฆ ์๋ฒ๊ฐ ๋๊ณ ์ 3์ ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ, ์ฆ ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์
๋๋ค.
์ด ๊ธ์์๋ ํธ์ ์ ์ฌ์ฉ์, ์๋ฒ, ์ธ์ฆ ์๋ฒ, ๋ฆฌ์์ค ์๋ฒ ๋ผ๋ ์ฉ์ด๋ก ์ฌ์ฉํฉ๋๋ค.
(์ฆ, ํด๋ผ์ด์ธํธ๋ฅผ ๊ทธ๋ฅ ์๋ฒ๋ผ๊ณ ๋ถ๋ฅด๊ฒ ์ต๋๋ค.)
์ฌ์ฉ์
์์์ ์ฃผ์ธ.
์ธ์ฆ ์๋ฒ์ ์ธ์ฆ์ ๋ฐ์ ์๋ฒ์ ์ฌ์ฉ์ ์ ๋ณด ์ ๊ทผ ๊ถํ์ ์์ํ๋ ์ฃผ์ฒด
์ธ์ฆ ์๋ฒ์ ๋ก๊ทธ์ธํ ์ฌ์ฉ์๋ฅผ ๋งํฉ๋๋ค.
์ฌ๊ธฐ์ ๋งํ๋ ์์์ ์ฃผ๋ก ์ฌ์ฉ์ ์ ๋ณด๋ก, ์์ด๋, ๋๋ค์, ์ด๋ฉ์ผ, ํ๋กํ ์ฌ์ง ๋ฑ์ด ์์ต๋๋ค.
์๋ฒ
์ฌ์ฉ์์๊ฒ ์ ๊ทผ ๊ถํ์ ์์๋ฐ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ฃผ์ฒด
์๋ฒ๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๋ฉด, ์ธ์ฆ ์๋ฒ๋ก๋ถํฐ โ์ธ๊ฐ ์ฝ๋โ ๋ผ๋ ์์์ฅ์ ๋ฐ๊ณ , ์ด ์์์ฅ์ ๊ฐ์ง๊ณ ๊ธ๊ณ ์ ์ด์ ์ธ โ์ก์ธ์ค ํ ํฐโ๋ฅผ ์ธ์ฆ ์๋ฒ์ ์์ฒญํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ โ์ก์ธ์ค ํ ํฐโ์ด๋ผ๋ ์ด ์ด์ ๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉ์ ์ ๋ณด๊ฐ ์๋ ๊ธ๊ณ ์ธ ๋ฆฌ์์ค ์๋ฒ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์์ฒญํ๊ณ ์๋ต๋ฐ์ต๋๋ค.
์ธ์ฆ ์๋ฒ
์ฌ์ฉ์๊ฐ ์์ฒญํ ์ธ์ฆ์ ์ฒ๋ฆฌํ์ฌ, ์๋ฒ์๊ฒ ์ธ๊ฐ ์ฝ๋์ ์ธ์ฆ ํ ํฐ์ ๋ฐ๊ธํด์ฃผ๋ ์๋ฒ
๋ฆฌ์์ค ์๋ฒ
์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์ฅ ๋ฐ ์ ๊ณตํ๋ ์๋ฒ
์ฌ์ฉ์ ์ ๋ณด๊ฐ ๊ด๋ฆฌ๋๋ ์๋ฒ๋ก, ์๋ฒ๊ฐ โ์ธ์ฆ ํ ํฐโ์ด๋ผ๋ ์ด์ ๋ก ์ฌ์ฉ์ ๋์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ฉด, ์๋ฒ์๊ฒ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ฃผ๋ ์๋ฒ์
๋๋ค.
์ฃผ์ ์ ๋ณด
์ธ๊ฐ ์ฝ๋ (Authorization Code)
์ฌ์ฉ์๊ฐ ์ธ์ฆ ์๋ฒ์ ์ธ์ฆ(๋ก๊ทธ์ธ)ํ๋ฉด,
์ธ์ฆ ์๋ฒ๊ฐ ์๋ฒํํ
๋ฐ๊ธ ํด์ฃผ๋ ์์์ฅ ์ญํ ์ ์ฝ๋
โข
์ธ๊ฐ ์ฝ๋๋ ๋ณด์์์ ์ด์ ๋ก ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์์ ํ๊ฒ ์ ๋ฌ๋ฉ๋๋ค.
โข
๋ณดํต์ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉ์๋ฅผ ์ธ์ฆ๋ฐ๊ณ ์ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์๋ํํฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ก๊ทธ์ธํ๊ณ ๊ถํ์ ๋ถ์ฌํ ๋, ์ธ๊ฐ ์ฝ๋๊ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
โข
์ธ๊ฐ ์ฝ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ ์๋ฒ๋ก๋ถํฐ ์ก์ธ์ค ํ ํฐ์ ์์ฒญํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
OAuth ์ ๋ชฉ์ ์ ๋ฆฌ์์ค ์๋ฒ์ ์๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๋ฒ(ํด๋ผ์ด์ธํธ)์ ๊ณต์ ํ๋ ๊ฒ์
๋๋ค.
์ด ๋, ์ฌ์ฉ์๋ ์ง์ ๋ฆฌ์์ค ์๋ฒ์ ๊ฐ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ์๋ฒ์ ์ ๊ณตํ์ง ์๊ณ , ์๋ฒ๊ฐ ๋์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ผ๊ณ ์ํต๋๋ค. ์ฆ, ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ๊ถํ์ ์์ํด์ค๋๋ค.
์ฌ์ฉ์๊ฐ ์๋ฒ์ ์ฌ์ฉ์ ์ ๋ณด์ ์ ๊ทผํ๊ธฐ ์ํ ๊ถํ์ ์์ํด์ฃผ๋ ์ ์ฐจ๋, ์ฌ์ฉ์๊ฐ ์ธ์ฆ ์๋ฒ์์ ์ ๊ณตํด์ฃผ๋ ๋ก๊ทธ์ธ ํ์ด์ง(๊ตฌ๊ธ, ํ์ด์ค๋ถ, ์นด์นด์ค, ๋ค์ด๋ฒ ๋ฑ)์ ๋ก๊ทธ์ธํ๋ ๊ฒ์
๋๋ค.
์ฌ์ฉ์๊ฐ ์ธ์ฆ ์๋ฒ๊ฐ ์ ๊ณตํด์ค ๋ก๊ทธ์ธ ํ์ด์ง์ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด, ์ธ์ฆ ์๋ฒ๋ ์๋ฒ์ ์ธ๊ฐ ์ฝ๋๋ฅผ ๋ฐ๊ธํด์ค๋๋ค. ์ด ์ธ๊ฐ ์ฝ๋๋ ์๋ฒ๊ฐ ์ฌ์ฉ์ ๋์ ์ฆ๋ช
์๋ฅผ ๋ฐ๊ธํ ์ ์๋ ์์์ฅ๊ณผ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค.
์ด๋ ๊ฒ ์ฌ์ฉ์๋ ์์ ์ ๋์ ํด์ ์๋ฒ๊ฐ ์์ ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ธ์ฆ ์๋ฒ์ ์ ๊ทผํ๋ ๊ถํ์ ์์ํ๊ธฐ ์ํด ์ธ์ฆ ์๋ฒ์ ๋ก๊ทธ์ธํ์ฌ, ์ธ์ฆ ์๋ฒ๋ก ํ์ฌ๊ธ ์๋ฒ์๊ฒ ์ธ๊ฐ ์ฝ๋๋ฅผ ๋ฐ๊ธํด์ค ์ ์๊ฒ ์ธ์ฆํฉ๋๋ค.
1.
์๋ฒ์ ์์
๋ก๊ทธ์ธ ๋ฒํผ ํด๋ฆญ
2.
์๋ฒ๊ฐ ์ธ์ฆ ์๋ฒ์ ์ธ๊ฐ ์ฝ๋ ์์ฒญ
3.
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ํ์ด์ง์ ๋ก๊ทธ์ธ
4.
์ธ์ฆ ์๋ฒ๊ฐ ์ธ๊ฐ ์ฝ๋๋ฅผ ์๋ฒ์ ๋ฐ๊ธ
์ด ์ ์ฐจ๋ ๋ง์น, ๋ถ๋ชจ๋ ๋์ ๋ด๊ฐ ํ์ ๋ณต์ง ์ผํฐ์ ๊ฐ์ ์ธ๊ฐ ์ฆ๋ช
์๋ฅผ ๋ฐ๊ธํ๊ธฐ ์ํ ์์์ฅ์ ์ฐ๋ ์ผ๊ณผ ๋น์ทํฉ๋๋ค.
1.
๋ถ๋ชจ๋ : โ์์์ผ, ํ์ ๋ณต์ง ์ผํฐ์ ๊ฐ์ ์์์ฅ ์์ ๋ฐ์์ค๋ ด~!โ
2.
๋(์์) : โ์ ์๋, ์์์ฅ ์์ ์ข ์ฃผ์ธ์~!โ
3.
๊ณต๋ฌด์ : โ์ ์ฌ๊ธฐ์์ต๋๋ค. ์์์ฅ ์์ฑ, ๋ณธ์ธ ์ ๋ถ์ฆ, ๋๋ฆฌ์ธ ์ ๋ถ์ฆ ๊ฐ์ ธ์ค์ธ์~!โ
4.
์ด์ ์์์ฅ์ ๊ฐ์ง๊ณ ๋ถ๋ชจ๋์ ๋์ ํด์ ์ธ๊ฐ ์ฆ๋ช
์๋ฅผ ๋ฐ๊ธํ ์ ์๊ฒ ๋์์ด์.
์ก์ธ์ค ํ ํฐ(Access Token)
์ฌ์ฉ์ ์ ๋ณด๊ฐ ์๋ ๋ฆฌ์์ค ์๋ฒ์ ์ ๊ทผํ๊ธฐ ์ํ ์ด์
โข
์ก์ธ์ค ํ ํฐ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค ์๋ฒ์ ์ ๊ทผํ ์ ์๋๋ก ๊ถํ์ ๋ถ์ฌ๋ฐ์ ํ์ ์ฌ์ฉ๋ฉ๋๋ค.
โข
์ธ๊ฐ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ ์๋ฒ๋ก๋ถํฐ ๊ตํ๋๊ฑฐ๋, ํด๋ผ์ด์ธํธ ์๊ฒฉ ์ฆ๋ช
์ ์ง์ ์ฌ์ฉํ์ฌ ๋ฐ์ ์ ์์ต๋๋ค.
โข
์ด ํ ํฐ์ ํด๋ผ์ด์ธํธ๊ฐ ํน์ ๋ฆฌ์์ค์ ์ก์ธ์คํ ๋ ๋ฆฌ์์ค ์๋ฒ์ ์ ๊ณต๋ฉ๋๋ค.
์๋ฒ๋ ์ฌ์ฉ์์๊ฒ ๊ถํ์ ์์ ๋ฐ์ ๊ฒ์ ์ฆ๋ช
ํ๋ ์ธ๊ฐ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์ธ์ฆ ์๋ฒ์ ์ก์ธ์ค ํ ํฐ์ ์์ฒญํฉ๋๋ค. ์ด ๋ API KEY, redirect uri, client secret ๋ฑ์ ์ ๋ณด๋ ํฌํจํ์ฌ ์์ฒญํฉ๋๋ค.
์ธ์ฆ ์๋ฒ๋ ์๋ฒ๊ฐ ๋ณด๋ธ ์์ฒญ ์ ๋ณด์์ ์ธ๊ฐ ์ฝ๋์ ์ฌ๋ฌ ์ ๋ณด๋ค์ ํ์ธํ์ฌ ์ธ์ฆ์ ํ๊ณ ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธํฉ๋๋ค. ์๋ฒ๊ฐ ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธ ๋ฐ์ผ๋ฉด ์ด์ ์๋ฒ๋ ๋ฆฌ์์ค ์๋ฒ๋ก ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์์ฒญํ ์ ์์ต๋๋ค.
1.
์๋ฒ๊ฐ ์ธ์ฆ ์๋ฒ์ ์ก์ธ์ค ํ ํฐ ์์ฒญ
2.
์ธ์ฆ ์๋ฒ๊ฐ ์๋ฒ์ ์ก์ธ์ค ํ ํฐ ๋ฐ๊ธ
์ด ๊ณผ์ ์ ๋ง์น, ๋ถ๋ชจ๋์ด ์จ์ค ์์์ฅ๊ณผ ๋์ ์ ๋ถ์ฆ, ๋ถ๋ชจ๋ ์ ๋ถ์ฆ์ ๊ฐ์ง๊ณ ํ์ ๋ณต์ง ์ผํฐ์ ๊ฐ์ ๋ถ๋ชจ๋์ ์ธ๊ฐ ์ฆ๋ช
์๋ฅผ ๋๋ฆฌ ๋ฐ๊ธ ํ๋ ๊ณผ์ ๊ณผ ๋น์ทํฉ๋๋ค.
์ฌ์ฉ์ ์ ๋ณด
๋ฆฌ์์ค ์๋ฒ์ ์ ์ฅ๋ ๋๋ค์, ํ๋กํ ์ฌ์ง, ์ด๋ฉ์ผ ๋ฑ์ ์ฌ์ฉ์ ์ ๋ณด
์ฌ์ฉ์์ ํ๋กํ, ์ด๋ฏธ์ง, ๋ฌธ์, ๋๋ ๊ธฐํ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ์ด ์ ๋ณด๋ ์ฌ์ฉ์์ ๊ณ์ ์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ, ํด๋น ์ฌ์ฉ์์ ๊ถํ์ ๋ฐ๋ผ ๋ค์ํ ํํ๋ก ์ ์ฅ๋ ์ ์์ต๋๋ค.
๋ฆฌ์์ค ์๋ฒ๋ ์ด๋ฌํ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ๊ณ , ์ธ๊ฐ๋ ํด๋ผ์ด์ธํธ์๊ฒ๋ง ์ก์ธ์ค๋ฅผ ํ์ฉํ์ฌ ์ฌ์ฉ์์ ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ณดํธํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก OAuth 2.0๊ณผ ๊ฐ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ์ธ๊ฐ๋ฅผ ๋ฐ๊ณ , ๊ถํ์ ๋ถ์ฌ๋ฐ์ ํ์๋ง ๋ฆฌ์์ค ์๋ฒ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์๋ฒ๋ ์ธ์ฆ ์๋ฒ๋ก๋ถํฐ ๋ฐ๊ธ ๋ฐ์ ์ก์ธ์ค ํ ํฐ์ผ๋ก ์ฌ์ฉ์๋ก๋ถํฐ ์์๋ ์๊ฒฉ์ ์ฆ๋ช
์ ๋ฐ๊ณ , ๋ฆฌ์์ค ์๋ฒ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์์ฒญํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ฆฌ์์ค ์๋ฒ๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๋ฒ์ ์๋ตํฉ๋๋ค.
๋ง์นจ๋ด ์๋ฒ๋ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ต๋๋ค.
์ด์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ป์์ผ๋ ์๋ฒ๋ โ๊ตฌ๊ธ๋ก ํ์๊ฐ์
โ, โ์นด์นด์ค๋ก ํ์๊ฐ์
โ ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ์ฌ, ์ฌ์ฉ์๊ฐ ์์
๋ก๊ทธ์ธ์ ํตํด ์ต์ด์๋ ์๋์ผ๋ก ํ์ ๊ฐ์
์ ํ๊ณ ์ดํ์๋ ์์
๋ก๊ทธ์ธ์ผ๋ก ๋ฐ๋ก ๋ก๊ทธ์ธ์ ํ ์ ์๊ฒ ์ง์ํ ์ ์์ต๋๋ค.
์ด ๊ณผ์ ์ ๋ง์น, ์ธ๊ฐ ์ฆ๋ช
์๋ก ?????
OAuth ์ธ์ฆ ๊ณผ์
OAuth ์ธ์ฆ ๊ณผ์ ์ ์ผ๋ฐ์ ์ผ๋ก ์๋์ ๊ฐ์ต๋๋ค.
1.
์ฌ์ฉ์๊ฐ ์๋ฒ์ ์์
๋ก๊ทธ์ธ ๋ฒํผ ํด๋ฆญ
2.
์๋ฒ๊ฐ ์ธ์ฆ ์๋ฒ์ ์ธ๊ฐ ์ฝ๋ ์์ฒญ
3.
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ํ์ด์ง์ ๋ก๊ทธ์ธ
4.
์ธ์ฆ ์๋ฒ๊ฐ ์ธ๊ฐ ์ฝ๋๋ฅผ ์๋ฒ์ ๋ฐ๊ธ
5.
์๋ฒ๊ฐ ์ธ์ฆ ์๋ฒ์ ์ก์ธ์ค ํ ํฐ ์์ฒญ
6.
์ธ์ฆ ์๋ฒ๊ฐ ์๋ฒ์ ์ก์ธ์ค ํ ํฐ ๋ฐ๊ธ
7.
์๋ฒ๊ฐ ๋ฆฌ์์ค ์๋ฒ์ ์ฌ์ฉ์ ์ ๋ณด ์์ฒญ
8.
๋ฆฌ์์ค ์๋ฒ๊ฐ ์๋ฒ์ ์ฌ์ฉ์ ์ ๋ณด ์๋ต