ํํธ๋ ํตํฉ์์ API ํค์ OAuth 2.0: ๋ฌด์์ด ๋ฌ๋ผ์ง๊น
API ํค์ OAuth 2.0 ๋น๊ต: ์จ๋ณด๋ฉ ๋์ด๋, ํ ํฐ ํ์ , ์ฌ์ฉ์ ์์ค ์ ๊ทผ, ๊ฐ์ฌ ๊ฐ๋ฅ์ฑ์ ๋น๊ตํด ํํธ๋ ๊ฐ๋ฐ์๊ฐ ์์ ํ๊ฒ ํตํฉํ ์ ์๋๋ก ํฉ๋๋ค.

๋น์ ์ด ์ค์ ๋ก ์ ํํ๋ ๊ฒ\n\n์ฌ๋๋ค์ด API ํค์ OAuth 2.0์ ๋น๊ตํ ๋, ๋ณด์ ๋ ผ์์ฒ๋ผ ๋ค๋ฆฌ๊ณค ํฉ๋๋ค. ํ์ง๋ง ํํธ๋ ํตํฉ์์๋ ์ด์์์ ๊ฒฐ์ ์ด๊ธฐ๋ ํฉ๋๋ค: ํํธ๋๊ฐ ์ผ๋ง๋ ๋นจ๋ฆฌ ์์ํ ์ ์๋์ง, ์ดํ ์ ๊ทผ์ ์ด๋ป๊ฒ ์ ์ดํ ์ง, ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ์ง์์ด ์ผ๋ง๋ ๊ณ ์์ค๋ฌ์์ง๋์ง ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.\n\n๋๋ถ๋ถ์ ํตํฉ์๋ ๊ณตํต์ ์ผ๋ก ํ์ํ ๊ฒ์ด ์์ต๋๋ค: ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ ๋ฐฉ์, ๋ช ํํ ํ๋(์์ฒญ ์ ํ๊ณผ ๊ถํ), ๊ทธ๋ฆฌ๊ณ โ๋๊ฐ ๋ฌด์์ ํ๋๊ฐโ๋ฅผ ์ถ์ ํ ์ ์๋ ๊ฐ์์ฑ. ์ด๋ค ์ธ์ฆ ๋ฐฉ์์ ์ ํํ๋๋์ ๋ฐ๋ผ ์ด ์๊ตฌ์ฌํญ์ด ๊ธฐ๋ณธ์ผ๋ก ์ฌ์์ง๋์ง, ์๋๋ฉด ์ถ๊ฐ ๊ท์นยท๋์๋ณด๋ยท์๋ ํ๋ก์ธ์ค๋ฅผ ๋ถ์ฌ์ผ ํ๋์ง๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค.\n\n๋ช ๊ฐ์ง ๊ฐ๋จํ ์ฉ์ด๋ฅผ ์ ๋ฆฌํ๋ฉด ํ์ค์ ์ธ ๋ํ์ ๋์์ด ๋ฉ๋๋ค:\n\n- API ํค: ํํธ๋ ์ฑ์ด๋ ์์คํ ์ ์๋ณํ๋ ๊ณต์ ๋น๋ฐ ๋ฌธ์์ด.\n- ํ ํฐ(token): API ํธ์ถ์ ์ฐ์ด๋ ์๊ฐ ์ ํ ์๊ฒฉ์ฆ๋ช .\n- ์ค์ฝํ(scope): "์ฒญ๊ตฌ์ ์ฝ๊ธฐ"๋ "ํฐ์ผ ์์ฑ"์ฒ๋ผ ์ด๋ฆ ๋ถ์ ๊ถํ ๋จ์.\n\n์ง์ง ๊ฒฐ์ ์ ํตํฉ์ด ๋ฌด์์ ๋์ ํ๋์ง์ ๋ฌ๋ ค ์์ต๋๋ค.\n\n๋จธ์ ๋ ๋จธ์ (machine-to-machine)์ด๋ผ๋ฉด API ํค๊ฐ ์ ์ ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์: ํํธ๋๊ฐ ์์ ๋ง๋ค ์๋ฒ์์ ๋น์ ์ API๋ก ๋๊ธฐํ๋ฅผ ๋๋ฆฌ๋ ๊ฒฝ์ฐ. ์ฌ์ฉ์๊ฐ "ํ์ฉ"์ ํด๋ฆญํ๋ ํ๋ฆ์ด ์๊ณ , ์ฃผ๋ก ํํธ๋ ์์ค์ ์ ๊ทผ, ์์ธก ๊ฐ๋ฅํ ํ์ , ๋น ๋ฅธ ์จ๋ณด๋ฉ์ด ์ค์ํฉ๋๋ค.\n\n์ฌ์ฉ์ ์์(user-delegated) ์๋๋ฆฌ์ค๋ผ๋ฉด OAuth 2.0์ด ์ผ๋ฐ์ ์ผ๋ก ๋ง์ต๋๋ค. ์: ๊ณ ๊ฐ์ด ํํธ๋ ์ฑ์์ ๋ณธ์ธ ๊ณ์ ์ ์ฐ๊ฒฐํ๊ณ ๊ฐ ๊ณ ๊ฐ์ด ๋ณธ์ธ ๋ฐ์ดํฐ์๋ง ์ ๊ทผ์ ํ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ. ์ด๋๋ ์ฌ์ฉ์๋ณ ๊ถํ, ์ฌ์ด ์ฒ ํ, ๋ ๊น๋ํ ๊ฐ์ฌ ๊ธฐ๋ก์ด ์ฃผ์ ๊ณ ๋ ค์ฌํญ์ ๋๋ค.\n\n์ด ์ ํ์ ์ง์ ๋ถ๋ด์๋ ์ํฅ์ ์ค๋๋ค. ํค๋ฅผ ์ฐ๋ฉด ํค ๊ณต์ ยทํ์ ์กฐ์ ยท์ด๋ ํํธ๋ ํ๊ฒฝ์ ์ด๋ค ํค๊ฐ ์ํ๋์ง ์ถ์ ํ๋ ๋ฐ ์๊ฐ์ด ๋ ๋ค ๊ฒ๋๋ค. OAuth๋ฅผ ์ฐ๋ฉด ๋์ ํ๋ก์ฐ์ ๋ฆฌ๋๋ ํธ ์ค์ ์ ์๊ฐ์ด ๋ ๋ค์ง๋ง, ์ด๋ค ์ฌ๋ ๋๋ ํ ๋ํธ๊ฐ ์์ ์ ์ด๋ฐํ๋์ง ์ถ์ธกํ๋ ์๊ฐ์ด ์ค์ด๋ญ๋๋ค.\n\nAppMaster ๊ฐ์ ๋๊ตฌ๋ก ํตํฉ ๋ฐฑ์๋๋ฅผ ๋ง๋ ๋ค๋ฉด ์ธ์ฆ์ ์ผ์ฐ ๊ณํํ์ธ์. ํํธ๋, ์ฌ์ฉ์, ์ค์ฝํ ๊ฐ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ์ฒ์๋ถํฐ ๊ฐ์ถ๊ณ ์ถ์ ๊ฐ์ฌ ๋ก๊ทธ์ ์ํฅ์ ์ค๋๋ค.\n\n## ํํธ๋ ํตํฉ์์ API ํค๋ ์ด๋ป๊ฒ ๋์ํ๋\n\nAPI ํค๋ ํํธ๋๊ฐ API๋ฅผ ํธ์ถํ๋๋ก ํ์ฉํ๋ ๊ฐ์ฅ ๋จ์ํ ๋ฐฉ๋ฒ์ ๋๋ค. ์๋ ๋ฉด์์ ์ ๋ฆฌํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค: ๋น๋ฐ ๋ฌธ์์ด์ ๊ฑด๋ค๋ฉด ํํธ๋๋ ์์ฒญ์ ํฌํจ์ํค๊ณ ๊ณง๋ฐ๋ก ๋ฐ์ดํฐ ๊ตํ์ ์์ํ ์ ์์ต๋๋ค.\n\n### ํค๊ฐ ์๋ฏธํ๋ ๊ฒ\n\n๋๋ถ๋ถ์ ๊ฒฝ์ฐ API ํค๋ ํน์ ์ต์ข ์ฌ์ฉ์๊ฐ ์๋๋ผ ํํธ๋ ์ ํ๋ฆฌ์ผ์ด์ (๋๋ ํตํฉ)์ ๋ํ๋ ๋๋ค. ํํธ๋๊ฐ ํ ์ ์ฒด์ ๋ชจ๋ ๊ณ ๊ฐ์ ๋ํด ํ๋์ ํค๋ง ์ฐ๋ฉด, ๋น์ ์ชฝ ๋ก๊ทธ์๋ ๋ชจ๋ ์์ฒญ์ด "ํํธ๋ X"๋ก ๋ณด์ ๋๋ค. ์ค์ ์ ์ฌ์์ง์ง๋ง ์ ๊ทผ ์ ์ด๋ ๊ฑฐ์น ์ด์ง๋๋ค.\n\n์ค๋ฌด์์๋ ํค๊ฐ ๊ด๋ฆฌ์ ์ฝ์์์ ๋ฐ๊ธ๋๊ฑฐ๋ ์ผํ์ฑ ํ๋ก๋น์ ๋ ๋จ๊ณ๋ก ๋ด๋ ค๊ฐ๋๋ค. ํํธ๋๋ ์ด๋ฅผ ๊ตฌ์ฑ ํ์ผ, ํ๊ฒฝ ๋ณ์, ์ํฌ๋ฆฟ ๋งค๋์ ์ ๋ณด๊ดํฉ๋๋ค. ๋ฌธ์ ๋ "์์" ํค๊ฐ ์คํ๋ ๋์ํธ์ ๋ณต์ฌ๋๊ฑฐ๋ ์ฑํ ์ ๋ถ์ฌ๋ฃ์ด์ง๊ฑฐ๋ ํด๋ผ์ด์ธํธ ์ชฝ ์ฝ๋์ ํฌํจ๋๋ ๋น๋์ ๋๋ค.\n\n์ ์ฝ์ ๋น ๋ฅด๊ฒ ๋๋ฌ๋ฉ๋๋ค. ๊ถํ์ ๋๊ฒ ์ค์ ๋๋ ๊ฒฝํฅ์ด ์๊ณ , ํค๋ ๊ณต์ ๋ ์๊ฒฉ์ฆ๋ช ์ด๋ฏ๋ก ํ๋์ ์ฌ๋ ๋จ์๋ก ์ ํํ ๊ท์์ํค๊ธฐ ์ด๋ ต์ต๋๋ค. ํ์ ์ ์กฐ์จ์ด ํ์ํ๊ณ , ํค๊ฐ ์ ์ถ๋๋ฉด ํ๊ธฐํ ๋๊น์ง ๊ณต๊ฒฉ์๊ฐ ํํธ๋๋ก์ ํ๋ํ ์ ์์ต๋๋ค.\n\n์: ๋ฌผ๋ฅ ํํธ๋๊ฐ ์์ ์ ์๋ฒ์์ ์ฃผ๋ฌธ์ ๊ฐ์ ธ์ค๊ณ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ํธ์ํฉ๋๋ค. ํ๋์ API ํค๋ฅผ ์ฐ๋ฉด ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๋ก๊ทธ์๋ ํํธ๋ ํค๋ง ๋จ๊ณ ๊ทธ๊ฒ์ด ๊ฐ๋ฐ์ ํ ์คํธ์ธ์ง, ์์ฝ ์์ ์ธ์ง, ์๋๋ฉด ์นจํด๋ ๊ธฐ๊ณ์ธ์ง ์๊ธฐ ์ด๋ ต์ต๋๋ค.\n\n### API ํค๊ฐ ์ฌ์ ํ ํฉ๋ฆฌ์ ์ธ ๊ฒฝ์ฐ\n\nAPI ํค๋ ์์ ๋ ์์์ ์์ ์ ์ํํ๋ ์๋ฒ ๋ ์๋ฒ ํตํฉ์ ์ ๋ง์ ์ ์์ต๋๋ค. ํนํ ํค๋ฅผ ํน์ IP, ์๋ํฌ์ธํธ, ํน์ ํ๊ฒฝ(ํ ์คํธ vs ํ๋ก๋์ )์ผ๋ก ์ ํํ ์ ์๋ค๋ฉด ๋์ฑ ๊ทธ๋ ์ต๋๋ค. AppMaster ๊ฐ์ ํด๋ก API ๋ ์ด์ด๋ฅผ ๋ง๋ค๋ฉด ๋น ๋ฅธ ํํธ๋ ํธ๋ผ์ด์ผ์๋ ํค๊ฐ ์ข์ ์ถ๋ฐ์ ์ผ ์ ์์ต๋๋ค. ๋จ, ์ด์ ์ ํ์ ๊ณผ ํ๊ธฐ ๊ณํ์ ๋ฏธ๋ฆฌ ์ ํ์ธ์.\n\n## OAuth 2.0์ ์ด๋ป๊ฒ ๋์ํ๋ (๊ต๊ณผ์์ ์ค๋ช ์ ํผํด)\n\nOAuth 2.0์ ์ฃผ๋ ๋ชฉ์ ์ ์์๋ ์ ๊ทผ(delegated access)์ ๋๋ค. ํํธ๋ ์ฑ์ด ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ์ง ์๊ณ ๋ ํน์ ์ฌ์ฉ์๋ฅผ ๋์ ํด API๋ฅผ ํธ์ถํ๊ฒ ํด ์ฃผ๋ฉฐ, ํํธ๋๊ฐ ์๊ตฌ์ ์ด๊ณ ๋ฌด์ ํ์ ์ธ ์ ๊ทผ์ ์ป์ง ์๋๋ก ํด์ค๋๋ค.\n\n์ธ ๋น์ฌ์ ๊ฐ์ ๊ถํ ํ๊ฐ ํธ๋์ ฐ์ดํฌ๋ก ์๊ฐํ์ธ์:\n\n- ์ฌ์ฉ์(๋ฆฌ์์ค ์์ ์): ๋ฐ์ดํฐ์ ์ ๊ทผ ๋นํ๋ ์ฌ๋.\n- ํํธ๋ ์ฑ(ํด๋ผ์ด์ธํธ): ํํธ๋๊ฐ ๋ง๋๋ ํตํฉ ์ ํ๋ฆฌ์ผ์ด์ .\n- ๋น์ ์ ์ธ์ฆ ์์คํ (๊ถํ ์๋ฒ): ์ฌ์ฉ์๋ฅผ ๊ฒ์ฆํ๊ณ ๋์๋ฅผ ๋ฌป๊ณ ํ ํฐ์ ๋ฐ๊ธํ๋ ์์คํ .\n\n์ฌ์ฉ์๊ฐ ์น์ธํ๋ฉด ํํธ๋ ์ฑ์ **์ก์ธ์ค ํ ํฐ(access token)**์ ๋ฐ์ต๋๋ค. ์ด ํ ํฐ์ ์ฑ์ด ์ง๊ธ ๋น์ฅ ๊ถํ์ด ์์์ ์ฆ๋ช ํ๊ธฐ ์ํด API์ ๋ณด๋ด๋ ๋จ๊ธฐ ์๊ฒฉ์ฆ๋ช ์ ๋๋ค. ์ก์ธ์ค ํ ํฐ์ ๋น ๋ฅด๊ฒ ๋ง๋ฃ๋๋๋ก ์ค๊ณ๋์ด ์ ์ถ ์ ์ํฅ ๋ฒ์๋ฅผ ์ค์ ๋๋ค.\n\n์ฌ์ฉ์์๊ฒ ๊ณ์ํด์ ์น์ธ ์์ฒญ์ ๊ฐ์ํ์ง ์๊ธฐ ์ํด ๋ง์ ์ค์ ์ **๋ฆฌํ๋ ์ ํ ํฐ(refresh token)**๋ ์ฌ์ฉํฉ๋๋ค. ๋ฆฌํ๋ ์ ํ ํฐ์ ๋ ์ค๋ ์ง์๋๋ฉฐ ๋ง๋ฃ๋ ์ก์ธ์ค ํ ํฐ์ ๊ฐฑ์ ํ๋ ๋ฐ๋ง ์๋๋ค. ์ฌ์ด ๋ชจ๋ธ์: ์ก์ธ์ค ํ ํฐ์ API ํธ์ถ์ฉ, ๋ฆฌํ๋ ์ ํ ํฐ์ ์ ์ก์ธ์ค ํ ํฐ์ ์ป๋ ์ฉ๋์ ๋๋ค.\n\n์ค์ฝํ๋ OAuth๋ฅผ ์ค์ฉ์ ์ผ๋ก ๋ง๋๋ ์์์ ๋๋ค. ์ค์ฝํ๋ "read:invoices"๋ "write:customers" ๊ฐ์ ๊ถํ ๊ฒฝ๊ณ์ ๋๋ค. ๋์ ๊ณผ์ ์์ ์ฌ์ฉ์๋ ํํธ๋ ์ฑ์ด ๋ฌด์์ ์์ฒญํ๋์ง ๋ณด๊ณ ์น์ธํ ๋ด์ฉ์ด ๊ธฐ๋ก๋ฉ๋๋ค. API๋ ๋งค ์์ฒญ๋ง๋ค ์ค์ฝํ๋ฅผ ๊ฒ์ฌํ๊ณ ์น์ธ๋์ง ์์ ํธ์ถ์ ์ฐจ๋จํฉ๋๋ค.\n\n์: CRM ํํธ๋๊ฐ ์ฐ๋ฝ์ฒ๋ฅผ ๋๊ธฐํํ๋ ค๊ณ ํฉ๋๋ค. ํํธ๋์๊ฒ "read:contacts"์ "write:contacts"๋ง ์์ฒญํ๋๋ก ์๊ตฌํ๋ฉด, ๋์ค์ ์ญ์ ์๋๋ฅผ ํ๋ฉด "delete:contacts"๊ฐ ์น์ธ๋์ง ์์ ํ API๊ฐ ์ฐจ๋จํฉ๋๋ค. ์ค์ ๋ก ํฐ ์ฐจ์ด๋ฅผ ๋ง๋๋ ์ ์ OAuth๊ฐ ์ต์ ๊ถํ ์์น์ ์ ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ ๋ค๋ ๊ฒ์ ๋๋ค.\n\n## ์จ๋ณด๋ฉ: ์ธ๋ถ ๊ฐ๋ฐ์์ ์ฒซ๋ ๊ฒฝํ\n\nAPI ํค๋ก๋ ์จ๋ณด๋ฉ์ด ๊ฑฐ์ ์ฆ์ ๊ฐ๋ฅํฉ๋๋ค. ํํธ๋๊ฐ ํค๋ฅผ ์์ฒญํ๋ฉด ํฌํธ์ด๋ ์ด๋ฉ์ผ๋ก ์ ๋ฌํ๊ณ , ํํธ๋๋ ์์ฒญ ํค๋์ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ฒซ ํธ์ถ๊น์ง ์๊ฐ์ด ๋ช ๋ถ๋ฐ์ ๊ฑธ๋ฆฌ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๋น ๋ฅด๊ฒ ์ฆ๋ช ํด์ผ ํ ๋ ๊ธฐ๋ถ์ด ์ข์ต๋๋ค.\n\nํ์ง๋ง ์๋์ ๋๊ฐ๊ฐ ์์ต๋๋ค: ์ฒซ๋ ์๋ "๋๊ฐ ํธ์ถํ๋"๊ฐ ๋ชจํธํฉ๋๋ค. ๊ฐ์ ํค๋ฅผ ํํธ๋ ํ์ด ๊ณต์ ํ๋ฉด ๋ฐ๋ชจ๋ ๋นจ๋ฆฌ ๋์ง๋ง ์ด๊ธฐ๋ถํฐ ๊ฒฝ๊ณ(ํ ์คํธ vs ํ๋ก๋์ , ์ต์ ๊ถํ, ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋์ ๋ช ํํ ์์ ๊ถ)๋ฅผ ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.\n\nOAuth ์จ๋ณด๋ฉ์ ๋ถํ์ด ๋ ๋ง์ ์ฒซ ํธ์ถ์ด ๋ ๋ฌด๊ฒ๊ฒ ๋๊ปด์ง๋๋ค. ํํธ๋๋ ๋ณดํต ์ฑ ๋ฑ๋ก, ๋ฆฌ๋๋ ํธ URI ์ค์ , ํ ์คํธ ์ฌ์ฉ์๋ ์๋๋ฐ์ค ๊ณ์ ์ฌ์ฉ์ด ํ์ํฉ๋๋ค. ์ฒซ ํธ์ถ์ด ๋ช ์๊ฐ ๋๋ ๋ฉฐ์น ๊ฑธ๋ฆฌ๋ ์ด์ ๋ OAuth ์์ฒด๊ฐ ๋ณต์กํด์๊ฐ ์๋๋ผ ์ฌ์ํ ์ค์ ์ด ํฐ ์ง์ฐ์ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋๋ค.\n\n๊ฐ์ฅ ํํ ์ฒซ๋ ์ฐจ๋จ ์์ธ์ ๋ฆฌ๋๋ ํธ URI ๋ถ์ผ์น, authorization code๋ฅผ access token์ผ๋ก ํผ๋, ํ๊ฒฝ ํผ์ฉ(ํ ์คํธ ์๊ฒฉ์ฆ๋ช ์ผ๋ก ํ๋ก๋์ ํธ์ถ), ์ค์ฝํ ๋๋ฝ, ํ ์คํธ ์ฌ์ฉ์ ์์ฑ/์ฌ์ค์ ๋ฐฉ๋ฒ ๋ถ์ฌ ๋ฑ์ ๋๋ค.\n\nOAuth์๋ ๋ฌธ์๊ฐ ๋ ์ค์ํฉ๋๋ค. API ํค์๋ "ํค ๋ณต์ฌ โ ํค๋์ ์ถ๊ฐ โ ์๋ํฌ์ธํธ ํธ์ถ" ์ ๋์ ์งง์ ์๋ด๊ฐ ์ถฉ๋ถํ ๋๊ฐ ๋ง์ง๋ง, OAuth์๋ ์ฒดํฌ๋ฆฌ์คํธ์ ์ค์ ๋ก ์คํ ๊ฐ๋ฅํ ์์ ๊ฐ ํ์ํฉ๋๋ค.\n\nAppMaster๋ก ํํธ๋ ํด๋ง์ ๋ง๋ค๋ฉด ์์ ์คํํฐ ์ฑ(์น UI + ๋ฐฑ์๋ ํ๋ก์)์ ์ ๊ณตํด ํํธ๋๊ฐ ๋ง์ ์ฝ๋ ์์ด๋ OAuth ํ๋ฆ์ ๋๊น์ง ์๋ฃํ๋๋ก ๋์ธ ์ ์๊ณ , ๊ทธ๋ผ์ผ๋ก์จ ์ฒซ๋ ๋ถํฐ ๋ณด์ ๋ชจ๋ธ์ ๋ช ํํ ์ ์งํ ์ ์์ต๋๋ค.\n\n## ์ค์ ์ธ๊ณ์ ํ ํฐ ํ์ ๊ณผ ํ๊ธฐ\n\nํ์ ์ ๋จ์ํด ๋ณด์ด์ง๋ง ํํธ๋์๊ฒ๋ ํฌ๋ก ์ก, ์ฌ๋ฌ ํ๊ฒฝ, "๋๊ตฐ๊ฐ๊ฐ 6๊ฐ์ ์ ์ ๋น๋ฐ์ ์คํ๋ ๋์ํธ์ ๋ถ์ฌ๋ฃ์๋ค" ๊ฐ์ ํ์ค์ด ์์ต๋๋ค. ์ค๋ฌด์ ์ง๋ฌธ์ "ํ์ ํ ์ ์๋?"๊ฐ ์๋๋ผ "ํ๋ก๋์ ์ ๊นจ๋จ๋ฆฌ์ง ์๊ณ ํ์ ํ ์ ์๋?"์ ๋๋ค.\n\nAPI ํค์ ๊ฒฝ์ฐ ํ์ ์ ๋๋ถ๋ถ ์กฐ์จ ๋ฌธ์ ์ ๋๋ค. ์์ ํ ํจํด์ ์ค๋ณต ํค ์ ์ง: ์ ํค๋ฅผ ๋ฐ๊ธํ๊ณ ์ ๊น ๋ ํค๋ฅผ ๋ชจ๋ ํ์ฉํ ๋ค ํํธ๋๊ฐ ์ ํ์ ํ์ธํ๋ฉด ๊ตฌ ํค๋ฅผ ๋นํ์ฑํํ๋ ๋ฐฉ์์ ๋๋ค. ๋ฐ๋๋ก ๊ธด๊ธ ํ๊ธฐ๋ ํ ๋ฒ์ ํด๋ฆญ์ผ๋ก ์ฃฝ์ผ ์ ์์ด์ผ ํฉ๋๋ค.\n\n์ค๋ฌด์ ์ธ ํ์ ์ ์ฑ ์ ๋ณดํต ํํธ๋๋น ๋ ๊ฐ์ ํ์ฑ ํค(ํ์ฌ์ ๋ค์), ํ๊ฒฝ๋ณ ๋ณ๋ ํค(dev/staging/prod), ์ด๋ค ์์คํ ์ด ์ด๋ค ํค๋ฅผ ์ฐ๋์ง ์ ์ ์๋ ๋ช ํํ ๋ผ๋ฒจ๋ง, ๊ทธ๋ฆฌ๊ณ ์ฆ์ ํ๊ธฐ ๊ฐ๋ฅํ ํ ์คํธ๋ ์ฌ๊ณ ๋์ ๊ฒฝ๋ก๋ฅผ ํฌํจํฉ๋๋ค.\n\nOAuth ์ชฝ์ ์ก์ธ์ค ํ ํฐ์ ์งง๊ฒ ์ ์งํ๋ฉด ํ์ ์ด ๋ ์๋ํ๋ฉ๋๋ค. ์ก์ธ์ค ํ ํฐ์ด ๋นจ๋ฆฌ ๋ง๋ฃ๋๋๋ก ํ๊ณ ๋ฆฌํ๋ ์ ํ ํฐ์ผ๋ก ๊ฐฑ์ ํ๋ฉด ์ ๊ทผ ์ฐจ๋จ ์ ๋ค์ดํ์ ์ํ์ด ์ค์ด๋ญ๋๋ค. ํ๊ธฐ๋ ๋ฆฌํ๋ ์ ํ ํฐ์ ์ง์ค๋ฉ๋๋ค: ๋ฆฌํ๋ ์ ํ ํฐ์ ํ๊ธฐํ๋ฉด ํํธ๋๋ ๋ ์ด์ ์ ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ ์ ์์ต๋๋ค.\n\n์ ์ฑ ์ด ์ด๋ ค์ด ๋ถ๋ถ์ ๋๋ค: ๋ฆฌํ๋ ์ ํ ํฐ ์๋ช , ์ฌ์ฌ์ฉ ๊ฐ๋ฅ์ฑ, ์ด๋ค ์ํฉ์์ ์ฌ์ธ์ฆ์ ์๊ตฌํ ์ง(๋น๋ฐ๋ฒํธ ์ฌ์ค์ , ๊ด๋ฆฌ์ ์ญ์ , ์์ฌ์ค๋ฌ์ด ํ๋ ๋ฑ). ๋น ๋ฅธ ์ฌ๊ณ ๋์์ด ํ์ํ๋ฉด ์ก์ธ์ค ํ ํฐ์ ์งง๊ฒ ์ ์งํ๊ณ ๋ฆฌํ๋ ์ ํ ํฐ ํ๊ธฐ๊ฐ ์ ๋ขฐ ๊ฐ๋ฅํ๋๋ก ํ์ธ์.\n\nํํ ์ฌ๊ณ ์: ํํธ๋ ์๋ฒ ๋ก๊ทธ์ ์๊ฒฉ์ฆ๋ช ์ด ์ฐ์ฐํ ๊ธฐ๋ก๋ฉ๋๋ค. API ํค๋ผ๋ฉด ํค๋ฅผ ํ๊ธฐํ๋ฉด ํตํฉ์ด ์ฆ์ ์ค๋จ๋๊ณ ์ฌ๋ฐ๊ธ ๋ฐ ์ ๋ฐ์ดํธ ์กฐ์ ์ ์๋๋ฌ์ผ ํฉ๋๋ค. OAuth๋ผ๋ฉด ํด๋น ํํธ๋๋ ์ฌ์ฉ์์ ๋ํ ๋ฆฌํ๋ ์ ํ ํฐ์ ํ๊ธฐํ๋ฉด ๊ธฐ์กด ์ก์ธ์ค ํ ํฐ์ ๊ณง ๋ง๋ฃ๋์ด ๋ณดํต ๋ ์ ์ ๊ฐ์์ค๋ฌ์ด ๋ค์ดํ์์ผ๋ก ๋์ํ ์ ์์ต๋๋ค.\n\n## ์ฌ์ฉ์ ์์ค ์ ๊ทผ: ์ฌ์ฉ์๋ณ, ํํธ๋๋ณ, ๋๋ ๋ ๋ค?\n\nํ์ฌ(ํํธ๋)๊ฐ ๋๊ฐ ํธ์ถํ๋์ง๋ง ์๋ฉด ์ถฉ๋ถํ๋ค๋ฉด ํํธ๋ ์์ค์ ์๋ณ์๋ง์ผ๋ก๋ ๋ฉ๋๋ค. ํ์ง๋ง ํํธ๋๊ฐ ์ฌ๋ฌ ์ต์ข ์ฌ์ฉ์๋ฅผ ๋์ ํด ํ๋ํ๋ค๋ฉด ๋ช ํํ ์ฌ์ฉ์ ์ปจํ ์คํธ๊ฐ ํ์ํฉ๋๋ค.\n\nAPI ํค์ ์ผ๋ฐ ํจํด์ ํํธ๋๋น ํ๋์ ๋น๋ฐ์ ๋๋ค. ์ฌ์ฉ์ ์ปจํ ์คํธ๋ ๋ณดํต ์ธ ๊ฐ์ง ๋ฐฉ์ ์ค ํ๋๋ก ๋ง๋ถ์ ๋๋ค: ์ฌ์ฉ์ ์์(๋ชจ๋ ํธ์ถ์ด ํํธ๋๋ก ๋ณด์), ํค๋๋ ํ๋์ ์ฌ์ฉ์ ID ์ ๋ฌ, ๋๋ ํํธ๋๊ฐ ๋น์ ์ด ๋ฐ๊ธํ ์ฌ์ฉ์ ID๋ฅผ ์๋ช ํด ์ ์กํ๋ ์ํผ์จํ(impersonation) ์คํ์ผ ํ๋ฆ. ์ด๋ค ๋ฐฉ๋ฒ์ ์๋ํ ์ ์์ง๋ง ํํธ๋๊ฐ ๋ณด๋ด๋ ์ฌ์ฉ์ ์๋ณ์๋ ๊ฒ์ฆ๋์ง ์์ผ๋ฉด ์ ๋ขฐํ ์ ์๋ค๊ณ ๊ฐ์ฃผํด์ผ ํฉ๋๋ค.\n\nOAuth๋ ์ฌ์ฉ์ ์์ค ์ ๊ทผ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ๊ฐ ์ฌ์ฉ์๋ ์ ๊ทผ์ ์น์ธํ๊ณ ์ค์ฝํ๊ฐ ํํธ๋๊ฐ ํ ์ ์๋ ์ผ์ ์ ํํฉ๋๋ค. ๊ทธ๋์ ์ต์ ๊ถํ์ ์ ์ฉํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค: ํตํฉ์ ์ฐ๋ฝ์ฒ๋ฅผ ์ฝ์ ์๋ง ์๊ณ ์ฒญ๊ตฌ ์ ๋ณด๋ฅผ ๋ด๋ณด๋ผ ์ ์๊ฒ ํ๊ฑฐ๋, ํฐ์ผ์ ์ ๋ฐ์ดํธํ ์๋ ์์ง๋ง ๊ด๋ฆฌ์ ์ค์ ์ ๋ณ๊ฒฝํ์ง ๋ชปํ๊ฒ ํ ์ ์์ต๋๋ค.\n\n### ํํธ๋๊ฐ ์ฌ๋ฌ ์ฌ์ฉ์๋ฅผ ๋์ ํ ๋ ๊ถํ ๋ชจ๋ธ๋ง\n\n๊ฐ๋จํ๊ฒ ์ ์งํ๋ ค๋ฉด ์ ์ฒด์ฑ(identity)๊ณผ ๊ถํ(permission)์ ๋ถ๋ฆฌํ์ธ์: ํํธ๋ ์๋ณ(๋๊ฐ ํตํฉํ๋๊ฐ), ์ฌ์ฉ์ ์๋ณ(๋๊ตฌ๋ฅผ ๋์ ํ๋๊ฐ), ์ญํ (์ฌ์ฉ์๊ฐ ์ ํ์์ ๋ฌด์์ ํ ์ ์๋๊ฐ), ์ค์ฝํ(ํํธ๋๊ฐ ํด๋น ์ฌ์ฉ์์ ๋ํด ๋ฌด์์ ํ ์ ์๋๊ฐ).\n\n์: ํฌํ๋ฐ์คํฌ ํํธ๋๊ฐ 200๋ช ์ ์๋ด์ ํฐ์ผ์ ๋๊ธฐํํฉ๋๋ค. ํ๋์ API ํค๋ง ์ฌ์ฉํ๋ฉด ๋ชจ๋ ์์ ์ด ๋ก๊ทธ์ "ํํธ๋ A"๋ก ๋ํ๋ฉ๋๋ค. OAuth๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ ์๋ด์์ด ์์ ์ ๊ถํ์ผ๋ก ์น์ธํ ์ ์์ด "์๋ด์ ๋ง๋ฆฌ์๊ฐ ํํธ๋ A๋ฅผ ํตํด ํฐ์ผ 1832๋ฅผ ์ ๋ฐ์ดํธํจ"์ฒ๋ผ ๊ธฐ๋กํ ์ ์์ต๋๋ค.\n\n๋ ๋ค ํ์ํ๋ฉด ํํธ๋ ์์ค์ ํด๋ผ์ด์ธํธ ์๋ณ๊ณผ ์ฌ์ฉ์ ์์(OAuth์ผ๋ก ์ฌ์ฉ์์ ๋ฌถ์ธ ํ ํฐ)์ ํจ๊ป ์ฌ์ฉํ์ธ์. AppMaster ๊ฐ์ ๋๊ตฌ์์๋ ์ด๋ฅผ ์ฌ์ฉ์ ์ธ์ฆ ๋ชจ๋, ํํธ๋ ๋ ์ฝ๋, ๋น์ฆ๋์ค ๋ก์ง์ ๊ถํ ๊ฒ์ฌ๋ก ๊น๋ํ๊ฒ ๋งคํํ ์ ์์ต๋๋ค.\n\n## ๊ฐ์ฌ์ฑ๊ณผ ๋ฌธ์ ํด๊ฒฐ: ๋๊ฐ ๋ฌด์์ ํ๋?\n\nํํธ๋ ํตํฉ์์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๊ณ ์น๋ ๊ฒ๋ณด๋ค ๋ฌด์จ ์ผ์ด ์์๋์ง๋ฅผ ์ฆ๋ช ํ๋ ๊ฒ ๋ ์ด๋ ต์ต๋๋ค.\n\nAPI ํค๋ฅผ ์ฐ๋ ํ์ ์ข ์ข ๊ณต์ ๋ ์ ์ฒด์ฑ ๋ฌธ์ ์ ๋ถ๋ชํ๋๋ค. ํ๋์ ํค๋ ๋ณดํต "๊ทธ ํํธ๋"๋ฅผ ๋ํํ๋ฏ๋ก ํน์ ์ฌ๋์ด๋ ์ฑ ์ธ์คํด์ค๋ก ๊ท์์ํค๊ธฐ ์ด๋ ต์ต๋๋ค. ์์ฒญ์ด ํค A๋ก ์ด๋ฃจ์ด์ก๋ค๋ ๋ก๊ทธ๋ ๋จ์ง๋ง ์ด๋ ์ต์ข ์ฌ์ฉ์๊ฐ ํธ๋ฆฌ๊ฑฐํ๋์ง, ์ง์์ธ์ง ์คํฌ๋ฆฝํธ์ธ์ง ์ ์ถ๋ ํค์ธ์ง ์ฆ๋ช ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ํํธ๋๊ฐ ํค๋ฅผ ์ฌ๋ฌ ์์คํ ์ ๋ณต์ฌํ๋ฉด ๋ก๊ทธ๋ ๋ชจ๋ ๋์ผํ๊ฒ ๋ณด์ ๋๋ค.\n\nOAuth๋ ๋๊ฐ ์ด๋ค ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ ์น์ธํ๊ณ ์ด๋ค ์ ๊ทผ(์ค์ฝํ)์ด ๋ถ์ฌ๋์๋์ง๋ฅผ ๋ ๋ช ํํ๊ฒ ๋จ๊น๋๋ค. ํํธ๋ ์ฑ์ด ์นจํด๋นํ๋ฉด ์ํฅ์ ํน์ client_id๋ ์ ๊ทผ์ ํ์ฉํ ์ฌ์ฉ์ ์งํฉ์ผ๋ก ์ขํ ์ ์์ต๋๋ค.\n\n๋ณด์ ๋ฆฌ๋ทฐ๋ ์ปดํ๋ผ์ด์ธ์ค์์ ๋ฐ๊ฒ ๋ ๊ฐ์ฌ ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: ์ด๋ค ์ฌ์ฉ์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ํํธ๋ ์ฑ์ ์ด๋ค ์ค์ฝํ๋ก ์ ๊ทผ๋์๋; ์ ๊ทผ์ด ์ธ์ ๋ถ์ฌ๋๊ณ ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉ๋ ์์ ์ ์ธ์ ์ธ๊ฐ; ํธ์ถ์ด ์ด๋์ ์๋๊ฐ(IP, ํ๊ฒฝ); ์น์ธ๋ ์ค์ฝํ๋ฅผ ์ด๊ณผํ ํ์๊ฐ ์์๋; ํ ์ฌ์ฉ์์ ์ ๊ทผ๋ง ์ฒ ํํ ์ ์๋ ๋ฑ์ ๋๋ค.\n\n๋ฌธ์ ํด๊ฒฐ์ ๋น ๋ฅด๊ฒ ํ๋ ค๋ฉด ๋ชจ๋ ์์ฒญ(์ธ์ฆ ๋ฐฉ์๊ณผ ๊ด๊ณ์์ด)์ ๋ช ๊ฐ์ง ํ๋๋ฅผ ์บก์ฒํ์ธ์: client_id(๋๋ ํค ID), ์ฃผ์ฒด(์ฌ์ฉ์ ID, ๊ฐ๋ฅํ๋ฉด), ์ค์ฝํ, IP ์ฃผ์, ๊ทธ๋ฆฌ๊ณ ์๋ต์ ๋ฐํํ๋ ๊ณ ์ ์์ฒญ ID. ํ์์คํฌํ์ ๊ฒฐ๊ณผ(์ฑ๊ณต, ๊ฑฐ๋ถ, ๋ ์ดํธ ์ ํ ๋ฑ)๋ ์ถ๊ฐํด ์ธ์๋ํธ ํ์๋ผ์ธ์ ๋ช ๋ถ ๋ด๋ก ์ฌ๊ตฌ์ฑํ ์ ์๊ฒ ํ์ธ์.\n\n## ๋ณด์ ๋ฐ ์ง์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ํํ ์ค์\n\n๋๋ถ๋ถ์ ํํธ๋ ์ธ์ฆ ์ฌ๊ณ ๋ ๊ณ ๊ธ ํดํน์ด ์๋๋ผ ์์ ์ ํ์์ ์์๋ฉ๋๋ค. ๋น๋ฐ์ ๋ ธ์ถํ๊ธฐ ์ฝ๊ฑฐ๋ ๊ต์ฒดํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋ ์ฌ์ํ ๊ฒฐ์ ์ด ๋ฌธ์ ๋ฅผ ๋ง๋ญ๋๋ค.\n\nAPI ํค ๋ฌธ์ ๋ ๋ณดํต ํค๊ฐ ์ด๋์ ๋จ๋๋์์ ์์ํฉ๋๋ค. ํํธ๋๊ฐ ํค๋ฅผ ๋ชจ๋ฐ์ผ ๋๋ ๋ธ๋ผ์ฐ์ ์ฑ์ ๋ฃ์ผ๋ฉด ๋ก๊ทธ, ์คํฌ๋ฆฐ์ท, ์ฑํ ์์ ๋ณต์ฌ๋ ์ ์์ต๋๋ค. ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ํค๋ฅผ ์๊ตฌ์ ์ธ ๊ฒ์ผ๋ก ์ทจ๊ธํ๋ ๊ฒ์ ๋๋ค. ํ์ ๊ณํ์ด ์์ผ๋ฉด ํ์ ๊ต์ฒด๋ฅผ ๊บผ๋ฆฌ๊ณ , ์ง์์ด ๋ ๋๊ฑฐ๋ ๋ ํฌ๊ฐ ๋ ธ์ถ๋์ด๋ ๋ฐ๊พธ์ง ์๊ฒ ๋ฉ๋๋ค.\n\nOAuth ์คํจ๋ ๋ค๋ฅด๊ฒ ๋ํ๋ฉ๋๋ค. ์ต์์ ์ง์ ํฐ์ผ์ ๋ฆฌ๋๋ ํธ URI ๋ถ์ผ์น์ ๋๋ค: ์คํ ์ด์ง์์๋ ์๋ํ๊ณ ํ๋ก๋์ ์์ ์คํจํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ค์์ ์ค์ฝํ๋ฅผ ๋๊ฒ ์ค์ ํด "๋๊ฒ ํ๊ธฐ ์ํด" ๊ถํ์ ๋ ์ฃผ๋ ๊ฒ์ธ๋ฐ, ์ด๊ฒ ๋์ค์ ๋ณด์ ๊ฒํ ์์ ๋ฌธ์ ๋ฉ๋๋ค. ๋์ ํ๋ฉด์ด ํผ๋์ค๋ฌ์ ์ฌ์ฉ์๊ฐ ํตํฉ ๋์๊ณผ ๊ถํ์ด ๋ง์ง ์๋ค๊ณ ๋๋ผ๋ ๊ฒฝ์ฐ๋ ์ด์๊ฐ ๋ฉ๋๋ค.\n\n๋ ๋ฐฉ์ ๋ชจ๋์ ํจ์ ์ด ์์ต๋๋ค. ์ฅ๊ธฐ๊ฐ ์ ํจํ ๋น๋ฐ๊ณผ ํ ํฐ์ ์ํฅ ๋ฒ์๋ฅผ ๋๋ฆฝ๋๋ค. ๋ ์ดํธ ๋ฆฌ๋ฐ ๋ถ์ฌ๋ ๋ฒ๊ทธ๋ฅผ ์ฅ์ ๋ก ํค์ธ ์ ์์ต๋๋ค. ๋ฆฌํ๋ ์ด ๋ฐฉ์ง ๋๋ฝ(์: ๋์ผํ ์๋ช ์์ฒญ์ ๋ ๋ฒ ํ์ฉ)์ ์ค๋ณต ์ฒญ๊ตฌ๋ ์ค๋ณต ์์ฑ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.\n\n์ง์ ์ด์๋ ์ข ์ข ์ค์ค๋ก ๋ง๋ ๋ฌธ์ ์ ๋๋ค. ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ชจํธํ๋ฉด(์: "unauthorized") ํํธ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์์ค์ปฌ๋ ์ด์ ํด์ผ ํฉ๋๋ค. ์๋๋ฐ์ค์ ์ผ๊ด๋ ํ๊ฒฝ์ด ์์ผ๋ฉด ํํธ๋๊ฐ ์ค์๋ก ํ๋ก๋์ ์ ํ ์คํธ ๋์์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.\n\n์จ๋ณด๋ฉ ์ ์ ๊ธฐ๋ณธ ๊ฐ๋๋ ์ผ์ ์ํ๋ค๋ฉด ๋จ์ํ๊ฒ ์ ์งํ์ธ์:\n\n- ๋น๋ฐ์ ์๋ฒ์๋ง ๋๊ณ ํด๋ผ์ด์ธํธ ์ฑ์ด๋ ๊ณต์ ์ฑ๋์ ๋ ธ์ถํ์ง ๋ง์ธ์.\n- ํ์ ๊ณผ ํ๊ธฐ๋ฅผ ๊ณ์ฝ์ ์ผ๋ถ๋ก ํฌํจํ๊ณ ๊ธฐํ๊ณผ ๋ด๋น์๋ฅผ ๋ช ํํ ํ์ธ์.\n- ์ดํดํ๊ธฐ ์ฌ์ด ๊ถํ ์ด๋ฆ์ผ๋ก ๋ช ํํ ์ค์ฝํ๋ฅผ ์ฌ์ฉํ์ธ์.\n- ์ฐ๊ธฐ ์ก์ ์๋ ๋ ์ดํธ ๋ฆฌ๋ฐ๊ณผ ๋ฉฑ๋ฑ์ฑ ๋๋ ๋ฆฌํ๋ ์ด ๋ฐฉ์ง๋ฅผ ์ถ๊ฐํ์ธ์.\n- ํ์ค์ ์ธ ๋ฐ์ดํฐ์ ์์ธก ๊ฐ๋ฅํ ์ค์ ์ ๊ฐ์ถ ์๋๋ฐ์ค๋ฅผ ์ ๊ณตํ์ธ์.\n\nAppMaster ๊ฐ์ ๋๊ตฌ๋ก ํตํฉ ๋ฐฑ์๋๋ฅผ ๋ง๋ ๋ค๋ฉด ์ธ์ฆ ๋ชจ๋๊ณผ ์ค๋ฅ ์๋ต์ ์ด๋ฌํ ๊ท์น์ ์ด๊ธฐ์ ๋ฐ์ํด ํํธ๋๊ฐ ์์กดํ๊ธฐ ์ ์ ๊ฐ์ ํ์ธ์.\n\n## ํํธ๋ ํ์ ์ํ ์ค์ฉ์ ์์ฌ๊ฒฐ์ ๊ฐ์ด๋\n\n๊ธฐ์ ๋ถํฐ ์์ํ์ง ๋ง๊ณ ๊ฒฐ๊ณผ๋ถํฐ ์์ํ์ธ์. ์ง์ง ์ ํ์ ๋น์ ์ด ๋จ์ผ ํตํฉ(์๋น์ค ์ ์ฒด์ฑ)์ ํ๊ฐํ ๊ฒ์ธ์ง, ์๋๋ฉด ์๋ก ๋ค๋ฅธ ๊ถํ์ ๊ฐ์ง ์ค์ ์ต์ข ์ฌ์ฉ์๋ฅผ ํ์ฉํ ๊ฒ์ธ์ง์ ๋๋ค.\n\nํํธ๋๊ฐ ๊ฐ๋ณ ์ฌ์ฉ์๋ฅผ ๋์ ํด ํ๋ํ๋ค๋ฉด OAuth 2.0์ด ๋ณดํต ๋ ์์ ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ํธ์ถ์ ์ฌ๋์๊ฒ ์ฐ๊ฒฐํ๊ณ ๊ทธ ์ฌ๋์ด ๋ฌด์์ ํ ์ ์๋์ง ์ ํํ๋ฉฐ ํํธ๋ ์ ์ฒด ํตํฉ์ ๊นจ์ง ์๊ณ ์ ๊ทผ์ ์ฐจ๋จํ ์ ์์ต๋๋ค.\n\nํตํฉ์ด ์ง์ ์ผ๋ก ์๋ฒ ๋ ์๋ฒ์ด๊ณ ์ ๊ทผ์ด ๊ณ ์ ๋์ด ์๋ค๋ฉด API ํค๋ก ์ถฉ๋ถํ ์ ์์ต๋๋ค. ์: "ํํธ๋ X๊ฐ ์ผ๊ฐ์ ์ฌ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ๋ณด๋ธ๋ค" ๊ฐ์ ๊ฒฝ์ฐ๋ ์ฌ๋ ์ปจํ ์คํธ๊ฐ ์๊ณ ํญ์ ๋์ผํ ๋์์ด ์ผ์ด๋ฉ๋๋ค.\n\n๊ฐ๋จํ ์ํยท์ด์ ์ ๊ฒ์ผ๋ก ๊ฒฐ์ ํ์ธ์:\n\n- ์ฌ์ฉ์๋ณ ๊ถํ์ด ํ์ํ๋ฉด OAuth๋ฅผ ์ ํํ์ธ์.\n- ๋จ์ผ ๊ณ ์ ์ํฌํ๋ก์ฐ๋ผ๋ฉด ํค๋ก๋ ๊ฐ๋ฅํ์ง๋ง ์์ ํ ํ์ ์ด ์ ์ ๋์ด์ผ ํฉ๋๋ค.\n- ๋ฐ์ดํฐ๊ฐ ๋ฏผ๊ฐ(PII, ๊ฒฐ์ , ๊ฑด๊ฐ, ๊ธ์ต)ํ๋ฉด ๋ฒ์๋ฅผ ์ ํํ๊ณ ์ฌ์ฉ์๋ณ ๊ฐ์ฌ๋ฅผ ํ ์ ์๊ฒ OAuth๋ก ๊ธฐ์ธ์ด์ธ์.\n\n- ํํธ๋ ์ฑ์๋๊ฐ ๋ฎ์ ํค๊ฐ ๊ณต์ ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ฉด OAuth๊ฐ ์ํฅ ๋ฒ์๋ฅผ ์ค์ฌ์ค๋๋ค.\n\n๋ ๋ค ์ง์ํด์ผ ํ๋ค๋ฉด ๋ช ํํ ๊ฒฝ๊ณ๋ฅผ ์ ํ์ธ์. ์: ๋ฐฑ์คํผ์ค ๋ฐฐ์น ์์ ์ API ํค, ์ฌ์ฉ์ ๊ณ์ ์ ๊ฑด๋๋ฆฌ๋ ๊ธฐ๋ฅ์ OAuth. ์ด๋ค ์๋ํฌ์ธํธ๊ฐ ์ด๋ค ๋ฐฉ์์ ๋ฐ๋์ง์ ์ ๊ทผ ์ฒ ํ ์ ์ด๋ป๊ฒ ๋๋์ง ๋ฌธ์ํํ์ธ์.\n\n๊ตฌ์ฒด์ ์: CRM ํํธ๋๊ฐ ๋ฆฌ๋๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์ดํฉ๋๋ค. ์ผ๊ฐ ์์ ์ผ๋ก ํ ํ์ฌ ๊ณ์ ์ผ๋ก ์คํํ๋ฉด API ํค๊ฐ ๊ด์ฐฎ์ ์ ์์ต๋๋ค. ๋ฐ๋ฉด ์์ ๋ด๋น์๊ฐ ์์ ์ ๊ณ์ ์ ์ฐ๊ฒฐํ๊ณ ์์ ๋ง์ ํ์ดํ๋ผ์ธ์ ๋ณด๊ฒ ํ๋ ค๋ฉด OAuth๊ฐ ์ ์ ํฉ๋๋ค.\n\n## ํํธ๋๋ฅผ ํ๋ก๋์ ์ ๋ด๋ณด๋ด๊ธฐ ์ ๋น ๋ฅธ ์ ๊ฒ ๋ชฉ๋ก\n\nํ๋ก๋์ ์ ๊ทผ์ ์ด๊ธฐ ์ ์ ์ธ์ฆ์ ๋จ์ํ ์ฒดํฌ๋ฐ์ค๊ฐ ์๋๋ผ ์ด์ ์์คํ ์ผ๋ก ์ทจ๊ธํ์ธ์. ํํธ๋ ํตํฉ์์ ๊ฐ์ฅ ํฐ ์ง์ ํ์ฌ๋ ๋ถ๋ช ํํ ์๊ฒฉ์ฆ๋ช , ๋ชจํธํ ๊ถํ, ๋๋ฝ๋ ๋ก๊ทธ์์ ์์๋ฉ๋๋ค.\n\n### ๋ณด์ ๋ฐ ์ ๊ทผ\n\n๋ช ํํ ๋ฐ๊ธ ๊ฒฝ๋ก ํ๋๋ฅผ ์ ํํ์ธ์. API ํค๋ OAuth๋ go-live ์ ๊ฒ ํญ๋ชฉ์ ๋น์ทํฉ๋๋ค: ๋๊ฐ ์๊ฒฉ์ฆ๋ช ์ ์ป์ ์ ์๋์ง, ๊ทธ๋ค์ด ๋ฌด์์ ํ ์ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ์ผ๋ง๋ ๋นจ๋ฆฌ ์ ๊ทผ์ ์ฐจ๋จํ ์ ์๋์ง.\n\nํํธ๋ ํ์ ์ํด ๊ธฐ๋ณธ์ ๋ฌธ์ํํ์ธ์: ๋๊ฐ ์ ๊ทผ์ ์น์ธํ๋์ง์ ํํธ๋ ์ ์์ ์ด๋ป๊ฒ ํ์ธํ๋์ง; ๋ง๋ฃ์ ํ์ ์ ์ฑ , ํ์ ์คํจ ์ ๋ฌด์์ด ๊นจ์ง๋์ง; ํ ํํธ๋(๋๋ ํ ์ฌ์ฉ์)๋ฅผ ๋ ์ ์๋ ํ ์คํธ๋ ํฌ ์ค์์น; ์ต์ ๊ถํ ๊ธฐ๋ณธ๊ฐ๊ณผ ๋ช ํํ ๋์ ๋ฌธ๊ตฌ; ๊ทธ๋ฆฌ๊ณ ํ ์คํธ ์๊ฒฉ์ฆ๋ช ๊ณผ ์์ธก ๊ฐ๋ฅํ ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ถ ์๋๋ฐ์ค.\n\nํ์ค ์ ๊ฒ: ํํธ๋์ API ํค๊ฐ ๊ณต๊ฐ ๋ ํฌ์ ๋ ธ์ถ๋๋ฉด, ๋ช ๋ถ ๋ด๋ก ํ๊ธฐํ๊ณ ์ํฅ ๋ฒ์๋ฅผ ํ์ธํ๋ฉฐ ์ ํค๋ฅผ ๋ฐ๊ธํด ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์ง ์์ด ๋์ฒดํ ์ ์๋์?\n\n### ์ด์ ๋ฐ ์ง์\n\n"๋ฌด์จ ์ผ์ด ์์๋?"์ ๋ํ ์ฆ๊ฑฐ๋ฅผ ์ ์ํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ชจ๋ ์์ฒญ์ ๋๊ฐ ํธ์ถํ๋์ง(ํํธ๋ ID, ์ฌ์ฉ์ ID ๊ฐ๋ฅ), ๋ฌด์์ ์๋ํ๋์ง(์๋ํฌ์ธํธ, ์ค์ฝํ), ์์คํ ์ด ๋ฌด์จ ๊ฒฐ์ ์ ํ๋์ง(์ํ ์ฝ๋, ์ค๋ฅ ์ด์ )๋ฅผ ๋ก๊ทธ๋ก ๋จ๊ธฐ์ธ์.\n\n๋ํ ํํธ๋๊ฐ ๊ณ ์น ์ ์๋๋ก ๋ช ํํ ์ค๋ฅ ๋ฉ์์ง(์ค์ฝํ ๋๋ฝ, ํ ํฐ ๋ง๋ฃ, ์๋ช ๋ถ์ผ์น ๋ฑ), ํํธ๋๋ฅผ ๋๋ผ๊ฒ ํ์ง ์๋ ๋ณดํธ์ฉ ๋ ์ดํธ ๋ฆฌ๋ฐ, ์ ๊ทผ ์ผ์ ์ค์ง ๋ฐ ๊ด๋ จ ํํธ๋ ํต๋ณด๋ฅผ ์ํ ์ธ์๋ํธ ํ๋ ์ด๋ถ์ ์ค๋นํ์ธ์.\n\nAppMaster๋ก ํํธ๋ API๋ฅผ ๋ง๋ค๋ฉด ์ด๋ฐ ํ๋์ ๊ฒ์ฌ๋ฅผ ์ด๊ธฐ์ ์ค์ ํด ์์ฑ๋๋ ๋ฐฑ์๋์ ๋ก๊ทธ๊ฐ ์๊ตฌ์ฌํญ ๋ณํ์๋ ์ผ๊ด๋๊ฒ ์ ์ง๋๋๋ก ํ์ธ์.\n\n## ํ์ค์ ์ธ ์: CRM ํํธ๋ ํตํฉ\n\n์์ญ ๊ฐ์ ๊ณตํต ๊ณ ๊ฐ์ ์ํด ์ฐ๋ฝ์ฒ๋ฅผ ๋๊ธฐํํ๋ CRM ํํธ๋๋ฅผ ์์ํด ๋ณด์ธ์. ๊ฐ ๊ณ ๊ฐ์ฌ์๋ ์ฌ๋ฌ ํ์ด ์๊ณ ๋ชจ๋ ํ์ด ๊ฐ์ ์ฐ๋ฝ์ฒ๋ฅผ ๋ณผ ํ์๋ ์์ต๋๋ค. CRM ๊ณต๊ธ์ ์ฒด๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์ ํตํฉ์ ์ํ์ง๋ง ๋น์ ์ ์ง์ ํฐ์ผ์ ์ค์ด๊ณ ๋๊ฐ ๋ฌด์์ ๋ณ๊ฒฝํ๋์ง ๋ช ํํ ๊ธฐ๋กํ๊ณ ์ถ์ต๋๋ค.\n\nAPI ํค๋ก๋ ์จ๋ณด๋ฉ์ด ๋จ์ํด ๋ณด์ ๋๋ค: ํํธ๋์๊ฒ ํค๋ฅผ ์ฃผ๋ฉด ํธ์๋ฅผ ์์ํฉ๋๋ค. ์ผ์ฃผ์ผ ํ์ ๊ณ ๊ฐ์ด "์์ ํ์ ๋๊ธฐํ๋์ง๋ง ์ง์ํ์ ์ ๋๊ฒ ํ ์ ์๋?"๋ผ๊ณ ๋ฌป๋ ์๊ฐ ๋ฌธ์ ๊ฐ ๋๋ฌ๋ฉ๋๋ค. ํ๋์ ํค๊ฐ ๋ง๋ฅ ์ด์ ๊ฐ ๋์ด๋ฒ๋ฆฝ๋๋ค.\n\n์ด ๊ตฌ์ฑ์์ API ํค์ ํ๊ณ๋ ์์ธก ๊ฐ๋ฅํฉ๋๋ค: ์ ๊ทผ์ ๋ณดํต ํค ๋จ์๋ก ์ ๋ถ ํน์ ์ ๋ฌด๊ฐ ๋๊ณ (๊ทธ๋์ ๊ณ ๊ฐยทํยทํ๊ฒฝ๋ณ๋ก ํค๋ฅผ ๋ ๋ง๋ ๋ค), ์ ์ถ ์ ์ ์ญ ํ์ ์ด ํ์ํ๊ณ , ๊ท์์ฑ์ด ์ฝํด ์ด๋ ๊ฐ์ธ์ด ํ๋์ง ์๊ธฐ ์ด๋ ต๊ณ , ํ ์ฌ์ฉ์๋ฅผ ์ํด ์ฐจ๋จํ๋ ค๋ฉด ์ ์ฒด ํค๋ฅผ ๋นํ์ฑํํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.\n\nOAuth๋ฅผ ์ฌ์ฉํ๋ฉด ํํธ๋ CRM์ด ๊ฐ ๊ณ ๊ฐ์ ๊ด๋ฆฌ์์๊ฒ ๋์ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ํฉ๋๋ค. ์ฐ๋ฝ์ฒ ๋๊ธฐํ์ ํ์ํ ์ค์ฝํ(์ฐ๋ฝ์ฒ ์ฝ๊ธฐยท์ฐ๊ธฐ, ์ฒญ๊ตฌยท๊ด๋ฆฌ ๊ถํ ์์)๋ง ์์ฒญํ๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ๊ถํ ๋ฒ์๋ฅผ ์๊ฒ ๋๋๋ฉด "์ ์ด๊ฑธ ๋ณผ ์ ์์ง?"๋ผ๋ ํฐ์ผ์ด ์ค์ด๋ญ๋๋ค.\n\n์ผ์ ์ด์์ OAuth๊ฐ ๋ ๊น๋ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค: ํ ๊ณ ๊ฐ(๋๋ ํ ์ฌ์ฉ์)์ ์ ๊ทผ๋ง ์ฒ ํํ ์ ์๊ณ , ๋จ๊ธฐ ์ก์ธ์ค ํ ํฐ์ ์ํฅ ๋ฒ์๋ฅผ ์ค์ด๋ฉฐ, ๊ฐ์ฌ ๋ก๊ทธ๋ ํํธ๋ ์ฑยท๊ณ ๊ฐ ๊ณ์ ยท์ข ์ข ํน์ ์ฌ์ฉ์ ID๊น์ง ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.\n\nAppMaster ๊ฐ์ ํ๋ซํผ์์ ์ด ์์ ์ ํ๋ค๋ฉด ๋๊ธฐํ๋ ์ฐ๋ฝ์ฒ ์ ๋ฐ์ดํธ๋ง๋ค ํํธ๋ ์ฑ, ๊ณ ๊ฐ ๊ณ์ , ๊ทธ๋ฆฌ๊ณ OAuth ์ฌ์ฉ ์ ๋์ํ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋๋ก ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ค๊ณํ์ธ์. ๊ทธ๋ฌ๋ฉด "์ฐ๋ฝ์ฒ๊ฐ ๋ฐค์ฌ์ด์ ์ค๋ณต ์์ฑ๋จ" ๊ฐ์ ๋ฌธ์ ๋ฅผ ์กฐ์ฌํ๊ธฐ ์ฌ์์ง๋๋ค.\n\n## ๋ค์ ๋จ๊ณ: ๋ ์์ ํ ํํธ๋ ํตํฉ ์ถ๋ฒ\n\nํตํฉ์ ๋ ๊ฐ์ ์งง์ ์ด์ผ๊ธฐ๋ก ์ ์ด๋์ธ์: ํ๋ณต ๊ฒฝ๋ก(์๊ฒฉ์ฆ๋ช ์ ์ป๊ณ , ์๋ํฌ์ธํธ ํธ์ถํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ํ์ธํจ)์ ์คํจ ๊ฒฝ๋ก(ํ ํฐ ๋ง๋ฃ, ์ค์ฝํ ๋๋ฝ, ์๋ชป๋ ๊ณ์ ). ์ด ํ ํ์ด์ง๊ฐ ํํธ๋๊ฐ ์ค์ค๋ก ์ง๋จํ๊ฒ ํด ์ง์ ์๊ฐ์ ๋ง์ด ์ค์ฌ์ค๋๋ค.\n\nํ์ผ๋ฟ ํํธ๋์ ์๊ฒ ์์ํ์ธ์. ์ค์ ํธ๋ํฝ์ ๋น ๋ฅด๊ฒ ๋ฌด์์ด ๋น ์ก๋์ง ๋ณด์ฌ์ค๋๋ค: ์ด๋ค ์๋ํฌ์ธํธ์ ๋ ๋ช ํํ ์ค์ฝํ๊ฐ ํ์ํ์ง, ์ด๋ค ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๊ฐ์ ํด์ผ ํ๋์ง, ๋ฌด์์ ๋ก๊น ํด์ผ ๋น ๋ฅด๊ฒ ๋ตํ ์ ์๋์ง ๋ฑ.\n\n์์ฒด ํตํฉ ํ๋ซํผ์ ๋ง๋ค ๊ณํ์ด๋ผ๋ฉด ์ด๊ธฐ ๋ฒ์ ์ ๋จ์ํ๊ฒ ์ ์งํ์ธ์. AppMaster ๊ฐ์ ๋๊ตฌ๋ ์ธ์ฆ ํ๋ฆ, API, ๊ฐ์ฌ ์นํ์ ๋ฐฑ์๋๋ฅผ ๋ ๋นจ๋ฆฌ ๋ง๋ค๋๋ก ๋์์ฃผ๋ฉฐ ๋ชจ๋ ๊ฑธ ์์์ ์ผ๋ก ์ฝ๋ฉํ์ง ์์๋ ๋ฉ๋๋ค. ํ๋ซํผ์ ๋ ์ดํด๋ณด๊ณ ์ถ๋ค๋ฉด AppMaster์ appmaster.io๋ฅผ ํ์ธํ์ธ์.\n\n๋ค์์ "์๋ํจ"์์ "์์ ํ๊ณ ์ง์ ๊ฐ๋ฅํ ์ํ"๋ก ์ฎ๊ธฐ๊ธฐ ์ํ ์ค๋ฌด ์ฒดํฌ๋ฆฌ์คํธ์ ๋๋ค:\n\n- ๊ธฐ๋ณธ ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ ํํ๊ณ ์์ธ ํ์ฉ ์กฐ๊ฑด์ ๋ฌธ์ํํ์ธ์.\n- ํ์ ์ ์ฑ (์ฃผ๊ธฐ, ์ค๋ณต ํ์ฉ, ๊ธด๊ธ ํ๊ธฐ ๋ฐฉ์)์ ์ ํ์ธ์.\n- ์ ๊ทผ ๊ท์น์ ์ ์ํ์ธ์(ํํธ๋ ๋จ์, ์ฌ์ฉ์ ๋จ์, ๋๋ ๋ ๋ค).\n- ๋ฌด์์ ๋ก๊น ํ ์ง ๊ฒฐ์ ํ์ธ์(ํํธ๋ ID, ์ฌ์ฉ์ ID(์๋ค๋ฉด), ์๋ํฌ์ธํธ, ์ก์ , ํ์์คํฌํ).\n- ํ ์คํธ ์๊ฒฉ์ฆ๋ช ๊ณผ ์์ธก ๊ฐ๋ฅํ ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ถ ํํธ๋ ์๋๋ฐ์ค๋ฅผ ์ค๋นํ์ธ์.\n\n๋ง์ง๋ง์ผ๋ก ์จ๋ณด๋ฉ์ ๊ฐ์ด๋๋ ์ค์ ์ฒ๋ผ ๋๊ปด์ง๊ฒ ํ์ธ์. ๊นจ๋ํ ์๋๋ฐ์ค, ๋ช ํํ ์ค๋ฅ, ์ ์ฉํ ๋ก๊ทธ๊ฐ ์ผ์ฃผ์ผ ์ฐจ ์ข์ ์ ์ถ์๋ก ๋ฐ๊ฟ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
API ํค๋ ํตํฉ์ด ์ง์ ํ ์๋ฒ ๋ ์๋ฒ(server-to-server)์ด๊ณ ๊ฐ๋ณ ์ต์ข ์ฌ์ฉ์๋ฅผ ์๋ณํ ํ์๊ฐ ์์ ๋ ์ฌ์ฉํ์ธ์. ํํธ๋ ์ฑ์ด ์ฌ๋ฌ ์ฌ์ฉ์๋ ํ ๋ํธ๋ฅผ ๋์ ํด ๋์ํ๊ณ ์ฌ์ฉ์๋ณ ๋์, ๋ฒ์(scope), ์ฆ๊ฐ์ ์ธ ์ ๊ทผ ์ฐจ๋จ์ด ํ์ํ๋ฉด OAuth 2.0์ ์ฌ์ฉํ์ธ์.
API ํค๋ ๋ณดํต ํํธ๋ ํตํฉ์ ํ๋์ ๊ณต์ ๋ ์๋ณ์๋ก ์๋ณํ๋ฏ๋ก ๊ถํ๊ณผ ๋ก๊ทธ๊ฐ ๊ฑฐ์น ๊ฒ ๋ํ๋ฉ๋๋ค. OAuth 2.0์ ํน์ ์ฌ์ฉ์์ ๋์์ ์ฐ๊ฒฐ๋ ํ ํฐ์ ๋ฐ๊ธํด ์ฌ์ฉ์ ์์ค์ ๊ถํ ๊ฒ์ฌ์ ๊ฐ์ฌ ์ถ์ ์ ํจ์ฌ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
API ํค๋ ๋ณดํต ํํธ๋๊ฐ ํค๋ฅผ ์์ฒญ๋ฐ์ ์์ฒญ ํค๋์ ์ถ๊ฐํ๋ฉด ๋์ด ์จ๋ณด๋ฉ์ด ๋ช ๋ถ ์์ ๋๋ฉ๋๋ค. OAuth๋ ์ฑ ๋ฑ๋ก, ๋ฆฌ๋๋ ํธ URI ์ค์ , ๋์ ํ๋ฆ ๋ฑ ์ฌ์ ์ค๋น๊ฐ ๋ ํ์ํด ์ฒซ ํธ์ถ๊น์ง ๋ช ์๊ฐ์์ ๋ฉฐ์น ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๊ฐ์ฅ ํํ ๋ฌธ์ ๋ ๋ฆฌ๋๋ ํธ URI ๋ถ์ผ์น์ ๋๋ค. ๊ทธ ๋ฐ์ ํ ์คํธ/ํ๋ก๋์ ์๊ฒฉ์ฆ๋ช ํผ๋, authorization code์ access token ํผ๋, ์๋ชป๋ ์ค์ฝํ ์์ฒญ ๋ฑ์ด ์์ฃผ ๋ฐ์ํฉ๋๋ค.
ํํธ๋๋น ๋ ๊ฐ์ ํค๋ฅผ ๋ง๋ค์ด ์ค๋ณต ํ์ฉ ๊ธฐ๊ฐ(overlap window)์ ๋๋ ๋ฐฉ์์ด ์์ ํฉ๋๋ค: ์ ํค ๋ฐ๊ธ ํ ๋ ํค๋ฅผ ์ ๊น ํ์ฉํ๊ณ ์ ํ ํ์ธ์ด ๋๋ฉด ๊ตฌ ํค๋ฅผ ๋นํ์ฑํํ์ธ์. ํ๊ฒฝ๋ณ๋ก ๋ณ๋ ํค๋ฅผ ์ ์งํ๊ณ , ๋ ธ์ถ ์ ์ฆ์ ํ๊ธฐํ ์ ์์ด์ผ ํฉ๋๋ค.
์ก์ธ์ค ํ ํฐ์ ์งง๊ฒ ์ ์งํ๊ณ ๋ฆฌํ๋ ์ ํ ํฐ์ผ๋ก ๊ฐฑ์ ํ๋๋ก ํ์ธ์. ์ฌ๊ณ ๋์์ ์ํด์๋ ๋ฆฌํ๋ ์ ํ ํฐ ํ๊ธฐ๊ฐ ์ ๋ขฐํ ์ ์๊ณ ์ฆ์ ์ ์ฉ๋๋๋ก ํด์ผ ํํธ๋๊ฐ ๊ณ์ ์ ๊ทผ์ ๊ฐฑ์ ํ์ง ๋ชปํ๊ฒ ํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ๋ ๋ชจ๋ฐ์ผ ์ฑ์ ๋ฃ์ ๊ฒ์ ์ถ์ถ๋ ์ ์๋ค๊ณ ๊ฐ์ ํ์ธ์. API ํค๋ ์๋ฒ์๋ง ๋ณด๊ดํด์ผ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์ธก์์ ์ฌ์ฉ์๋ณ ์ ๊ทผ์ด ํ์ํ๋ฉด ์๊ตฌ์ ์ธ ๊ณต์ ๋น๋ฐ์ ์ฌ๋ ๋์ OAuth๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์์ ํฉ๋๋ค.
์ค์ฝํ๋ โread contactsโ๋ โwrite ticketsโ ๊ฐ์ ์ด๋ฆ ์๋ ๊ถํ์ ๋๋ค. ์ค์ฝํ๋ ์๊ฒ ์ค๊ณํ๊ณ ์ค์ ์์ ์ ๋ง์ถฐ ์ ๋ฆฌํ์ธ์. ํํธ๋๊ฐ ํ์ํ ๊ถํ๋ง ์์ฒญํ๋๋ก ์๊ตฌํ๋ฉด ์ต์ ๊ถํ ์์น์ ์งํค๊ธฐ ์ฝ์ต๋๋ค.
๋ก๊ทธ์ ๋จ๊ฒจ์ผ ํ ํ๋๋ ํํธ๋ ์๋ณ์(ํค ID ๋๋ client_id), ์ฌ์ฉ์๊ฐ ์์ผ๋ฉด ์ฌ์ฉ์/์ฃผ์ฒด(subject), ๋ถ์ฌ๋ ์ค์ฝํ, ์๋ํ ์๋ํฌ์ธํธ/์ก์ , ๊ฒฐ์ ๊ฒฐ๊ณผ(์ฑ๊ณต ๋๋ ๊ฑฐ๋ถ)์ ์ด์ , IP ์ฃผ์, ๊ทธ๋ฆฌ๊ณ ์๋ต์ ๋ฐํํ๋ ๊ณ ์ ์์ฒญ ID์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ธ์๋ํธ์์ "๋๊ฐ ๋ฌด์์ ํ๋๊ฐ"๋ฅผ ๋น ๋ฅด๊ฒ ํ์ ํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ์ธ์ฆ ๋ฐฉ์์ ์ ํ๊ณ ์์ธ๋ฅผ ํ์ฉํ ์กฐ๊ฑด์ ๋ฌธ์ํํ์ธ์. ์๊ฒฉ์ฆ๋ช ์ ๋น ๋ฅด๊ฒ ๋ฐ๊ธํ๊ณ ํ๊ธฐํ ์ ์๋์ง ํ์ธํ๊ณ , ๋ ์ดํธ ๋ฆฌ๋ฐ๊ณผ ์ฐ๊ธฐ ์๋ํฌ์ธํธ์ ๋ฉฑ๋ฑ์ฑ(idempotency)์ ์ ๊ฒํ์ธ์. ์๋๋ฐ์ค, ๋ช ํํ ์ค๋ฅ ๋ฉ์์ง, ํน์ ํํธ๋๋ ์ฌ์ฉ์๋ฅผ ์ผ์ ์ค์งํ ์ ์๋ ์คํ ์ ์ฐจ๋ ์ค๋นํ์ธ์.


