"Open Authorization"์ ์๋ฏธํ๋ OAuth๋ ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์๊ฒฉ ์ฆ๋ช ์ ์ด๋ฌํ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๊ณต์ ํ์ง ์๊ณ ๋ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ๋ณดํธ๋ ๋ฆฌ์์ค์ ์์ ํ๊ฒ ์ก์ธ์คํ ์ ์๋๋ก ํ๋ ๊ฐ๋ฐฉํ ํ์ค ์ธ์ฆ ํ๋กํ ์ฝ์ ๋๋ค. OAuth๋ ์ ์ฐ์ฑ, ์ํธ ์ด์ฉ์ฑ ๋ฐ ๊ฐ๋ ฅํ ๋ณด์ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ธํด ์์ ๋ฏธ๋์ด ๋คํธ์ํฌ ๋ฐ ์ ์ ์๊ฑฐ๋ ์น ์ฌ์ดํธ์์ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง ํ๋ซํผ ๋ฐ ๊ธฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์ฐ์ ๋ถ์ผ์์ ๋๋ฆฌ ์ฑํ๋๊ณ ์์ต๋๋ค.
์น์ฌ์ดํธ ๊ฐ๋ฐ์ ๋งฅ๋ฝ์์ OAuth๋ ๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ธ๋ถ ์๋น์ค ๊ฐ์ ๋ณด์ ์ฐ๊ฒฐ์ ์์ฑํ๊ณ ๊ด๋ฆฌํ ์ ์๋ ์์ ์ ์ธ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ฉ์ปค๋์ฆ ๊ตฌํ ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ ๋จ์ํํ์ฌ ๊ฐ๋ฐ์์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ ์ฝํ๋ ๋์์ ์ฌ์ฉ์ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ๋ฐ์ดํฐ ๋ณด์์ ๋ณด์ฅํฉ๋๋ค.
OAuth๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ์ ์ ๊ฑฐ์ณค์ผ๋ฉฐ ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ OAuth 2.0์ ๋๋ค. ์ด๋ ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ๋ฐฐํฌ ์๋๋ฆฌ์ค๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ํฌ๊ด์ ์ธ ํ์ค, ์ง์นจ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก ์ธํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ด๋ฒ์ํ ์ ๊ณ ํ์ ์ ์ฐ๋ฌผ์ ๋๋ค.
OAuth์ ์ฃผ์ ๊ฐ๋ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฆฌ์์ค ์์ ์: ์ผ๋ฐ์ ์ผ๋ก ์๋น์ค ์ ๊ณต์ ์ฒด ํ๋ซํผ์ ๊ณ์ ์ผ๋ก ํ์๋๋ ๋ณดํธ๋๋ ๋ฆฌ์์ค๋ฅผ ์์ ํ๊ณ ์ ์ดํ๋ โโ์ฌ์ฉ์์ ๋๋ค.
- ํด๋ผ์ด์ธํธ: ๋ฆฌ์์ค ์์ ์๋ฅผ ๋์ ํ์ฌ ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค.
- ๋ฆฌ์์ค ์๋ฒ: ๋ณดํธ๋๋ ๋ฆฌ์์ค๋ฅผ ํธ์คํ ํ๋ ์๋ฒ์ ๋๋ค.
- ๊ถํ ๋ถ์ฌ ์๋ฒ: ๋ฆฌ์์ค ์์ ์๋ฅผ ์ธ์ฆํ๊ณ ํด๋ผ์ด์ธํธ์ ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์๋๋ก ํ๋ ์๋ฒ์ ๋๋ค.
- ์ก์ธ์ค ํ ํฐ: ๋ฆฌ์์ค ์์ ์๊ฐ ํด๋ผ์ด์ธํธ์ ๋ถ์ฌํ ๊ถํ์ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋๋ค. ์ก์ธ์ค ํ ํฐ์ ์๋ช ๊ณผ ํน์ ๋ฒ์๊ฐ ์ ํ๋์ด ์์ต๋๋ค. ์ฆ, ํน์ ์์ ๊ณผ ํน์ ๊ธฐ๊ฐ ๋ด์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
OAuth์ ์ฃผ์ ์ฅ์ ์ ๋ฆฌ์์ค ์์ ์๊ฐ ์๊ฒฉ ์ฆ๋ช (์: ์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ๋น๋ฐ๋ฒํธ)์ ๊ณต์ ํ์ง ์๊ณ ๋ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณดํธ๋ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ๋จ๊ณ๋ฅผ ํฌํจํ๋ "์์๋ ๊ถํ ๋ถ์ฌ"๋ผ๋ ํ๋ก์ธ์ค๋ฅผ ํตํด ๋ฌ์ฑ๋ฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ๋ฆฌ์์ค ์์ ์๋ฅผ ์ธ์ฆ ์๋ฒ๋ก ๋ฆฌ๋๋ ์ ํ์ฌ ํน์ ์์ ์ด๋ ๋ฒ์์ ๋ํ ์ธ์ฆ์ ์์ฒญํฉ๋๋ค.
- ๋ฆฌ์์ค ์์ ์๋ ๊ถํ ๋ถ์ฌ ์๋ฒ๋ก ์ธ์ฆํ๊ณ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์น์ธํฉ๋๋ค.
- ์ธ์ฆ ์๋ฒ๋ ์ธ์ฆ ์ฝ๋๋ฅผ ๋ฐ๊ธํ๊ณ , ์ด ์ฝ๋๋ ๋ฆฌ๋๋ ์ URI๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ก ๋ค์ ์ ์ก๋ฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ธ์ฆ ์๋ฒ์ ์์ฒญํ์ฌ ์ธ์ฆ ์ฝ๋๋ฅผ ์ก์ธ์ค ํ ํฐ์ผ๋ก ๊ตํํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ก์ธ์ค ํ ํฐ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ์๋ฒ์์ ๋ณดํธ๋๋ ๋ฆฌ์์ค์ ์ก์ธ์คํฉ๋๋ค.
OAuth 2.0์ ์ฃผ์ ๊ธฐ๋ฅ ์ค ํ๋๋ ๋ค์ํ ํด๋ผ์ด์ธํธ ์ ํ ๋ฐ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๊ฒ ์กฐ์ ๋ ์ฌ๋ฌ "๋ถ์ฌ ์ ํ"์ ์ง์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ๋ถ์ฌ ์ ํ์ ํด๋ผ์ด์ธํธ๊ฐ ์ก์ธ์ค ํ ํฐ์ ์ป๋ ํน์ ๋ฐฉ๋ฒ์ ์ ์ํ๋ฉฐ ๋ค์์ ํฌํจํฉ๋๋ค.
- ์ธ์ฆ ์ฝ๋: ์ด ๋ถ์ฌ ์ ํ์ ๋น๋ฐ์ ์์ ํ๊ฒ ์ ์ฅํ๊ณ ๋ฐฑ์ฑ๋์ ์ฌ์ฉํ์ฌ ์ธ์ฆ ์๋ฒ์ ํต์ ํ ์ ์๋ ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค.
- ์์์ : ๋น๋ฐ์ ์์ ํ๊ฒ ์ ์ฅํ ์ ์๊ณ ํ๋ก ํธ ์ฑ๋์ ํตํด ์ง์ ํ ํฐ์ ๋ฐํํด์ผ ํ๋ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA) ๋ฐ ๊ธฐํ ์ฌ์ฉ์ ์์ด์ ํธ ๊ธฐ๋ฐ ํด๋ผ์ด์ธํธ๋ฅผ ์ํด ์ค๊ณ๋์์ต๋๋ค.
- ๋ฆฌ์์ค ์์ ์ ์ํธ ์๊ฒฉ ์ฆ๋ช : ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ขฐํ ์ ์๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์๋๋ฆฌ์ค๋ ์์ฌ ํด๋ผ์ด์ธํธ์ ๊ฐ์ด ๋ฆฌ์์ค ์์ ์์ ์๊ฒฉ ์ฆ๋ช ์ ์์ ํ๊ฒ ์ป๊ณ ์ ์ฅํ ์ ์๋ ์๋๋ฆฌ์ค์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ์๊ฒฉ ์ฆ๋ช : ํด๋ผ์ด์ธํธ๊ฐ ํน์ ๋ฆฌ์์ค ์์ ์๊ฐ ์๋ ์์ฒด์ ์ผ๋ก ์๋ํ๋ M2M(Machine-to-Machine) ์ธ์ฆ์ ์ ํฉํฉ๋๋ค.
AppMasterno-code ํ๋ซํผ์ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๋ AppMaster ์ ๋ง์ถคํ API ๋ฐ ์ธ์ฆ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ OAuth ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ฉ์ปค๋์ฆ์ ์ฝ๊ฒ ํตํฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด SSO(Single Sign-On) ๊ธฐ๋ฅ, ์์ ๋ฏธ๋์ด ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ฑฐ๋ OAuth๋ฅผ ์ง์ํ๋ ํ์ฌ API ๋ฐ ํด๋ผ์ฐ๋ ์๋น์ค์ ๋ํ ๋ณด์ ์ฐ๊ฒฐ์ ์ค์ ํ ์๋ ์์ต๋๋ค. ๋ํ AppMaster ๋ก ๊ตฌ์ถ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ Go, Vue3 ๋ฐ Kotlin๊ณผ ๊ฐ์ ์ ๊ณ ํ์ค ๊ธฐ์ ๋ก ์์ฑ๋์ด OAuth์์ ํธํ์ฑ ๋ฐ ์ํธ ์ด์ฉ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก OAuth๋ ํนํ ๋ณด์ ๋ฐ ํตํฉ ์ฉ์ด์ฑ ์ธก๋ฉด์์ ์น ์ฌ์ดํธ ๊ฐ๋ฐ์์๊ฒ ์๋นํ ์ด์ ์ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ๊ณ ์ ์ ๊ฐ๋ฅํ๋ฉฐ ๋๋ฆฌ ์ฑํ๋๋ ์ธ์ฆ ํ๋กํ ์ฝ์ ๋๋ค. OAuth๋ฅผ ํ์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ฌ์ฉ์ ์ง์ ๋ฐ ์ ์ฌ์ ์ผ๋ก ์์ ํ์ง ์์ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๊ตฌํ์ ๋ํ ์์กด๋๋ฅผ ์ค์ฌ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๊ณ ์๊ฒฉํ ์ก์ธ์ค ์ ์ด ์ ์ฑ ์ ์ํํ๋ ๋ณด๋ค ์์ ํ๊ณ ์์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.