์ฌ๋ด์์ ํตํฉ ์ผํ๋ชฐ ์ฐ๋์๋น์ค์ ์๋กญ๊ฒ ๋๋จ์ ์์ฅ์ ๊ฒจ๋ฅํ์ฌ, TikTok Shop ์คํ๋ง์ผ ์ฐ๋์ ๋ด๋นํ๊ฒ ๋์ต๋๋ค. TikTok Shop API ๋ฅผ ์ฐ๋ํ๋ฉด์ TikTok Shop ์์ ์ธ์ฆ์ธ๊ฐ๋ฅผ OAuth 2.0 ๋ฐฉ์์ ์ฌ์ฉํ๊ธธ๋, ๊ณต๋ถ๋ํ ๊ฒธ ๊ธ๋ก ์์ฑํด๋ณด์์ต๋๋ค.
ํ๋ ์น ์๋น์ค์์ OAuth 2.0 ๊ฐ ๋งค์ฐ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ํนํ, ๋ง์ ๊ฐ๋ฐ์๋ค์ด ๋จ์ํ '์์ ๋ก๊ทธ์ธ' ๊ธฐ์ ๋ก๋ง ์๊ณ ์๋ OAuth 2.0์ ๋ณธ์ง์ ์ธ ๋ชฉ์ ๊ณผ, ํ์ ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ Authorization Code Flow์ ๋์ ์๋ฆฌ, ๊ทธ๋ฆฌ๊ณ OpenID Connect(OIDC)๋ฅผ ํตํ ์ธ์ฆ(Authentication) ํ์ฅ๊น์ง ๋ช ํํ ์ ๋ฆฌํด ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
๐OAuth 2.0 — ์ธ๊ฐ(Authorization)๋ฅผ ์ํ ํ์ค ํ๋กํ ์ฝ
๋๋ถ๋ถ์ ํ์ด ์๋น์ค๋ฅผ ๊ฐ๋ฐํ ๋, ๊ตฌ๊ธ ์บ๋ฆฐ๋๋ ํธ์ํฐ API์ ๊ฐ์ ํ์ฌ ์๋น์ค์ API๋ฅผ ์ด์ฉํ๊ณ ์ ํ๋ ์์ด๋์ด๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. ์ด ํ์ฌ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ ์ํด ๊ณผ๊ฑฐ์๋ ์ด๋ค ๋ฐฉ์์ ์ฌ์ฉํ์๊น์?
OAuth๊ฐ ์๋ ์์ ์๋, ์๋น์ค๊ฐ ์ฌ์ฉ์(Resource Owner)์ ๊ตฌ๊ธ ์บ๋ฆฐ๋์ ์ ๊ทผํ๊ธฐ ์ํด ์ฌ์ฉ์๋ก๋ถํฐ ๊ตฌ๊ธ ์์ด๋์ ํจ์ค์๋๋ฅผ ์ง์ ์ ๋ฌ๋ฐ์ ๋ก๊ทธ์ธ์ ์ํํด์ผ ํ์ต๋๋ค.
์ด ๋ฐฉ์์ ์น๋ช ์ ์ธ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ๋ขฐ ๋ฌธ์
์ฌ์ฉ์๋ ID์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ, ์บ๋ฆฐ๋ ์ ๋ณด๋ฟ๋ง ์๋๋ผ ๊ตฌ๊ธ ํฌํ , ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๋ฑ ์ํ์ง ์๋ ๋ชจ๋ ์๋น์ค์ ์ ๊ทผํ ๊ถํ์ ๋๊ฒจ์ฃผ๊ฒ ๋ฉ๋๋ค. - ํด๋ผ์ด์ธํธ ๊ด๋ฆฌ ๋ถ๋ด
๊ฐ๋ฐํ ์๋น์ค(ํด๋ผ์ด์ธํธ)๋ ์๋ง์ ์ฌ์ฉ์์ ๋ฏผ๊ฐํ ๊ตฌ๊ธ ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํด์ผ ํ๋ ๋ณด์์ ๋ถ๋ด์ ์๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ ์ด ์ ๋ณด๊ฐ ๋ ธ์ถ๋๋ค๋ฉด ์๋น์ค๋ ์ฌ๊ฐํ ๋ฒ์ ๋ฌธ์ ๋ฅผ ๊ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค. - ๋ฆฌ์์ค ์ ๊ณต์ ๋ณด์ ๋ฌด๋ ฅํ
๊ตฌ๊ธ์ด ์๋ฌด๋ฆฌ ๋ณด์ ์์ค์ ๋์ฌ๋, ์ธ๋ถ์์ ์ฌ์ฉ์ ID/PW๊ฐ ๋ ธ์ถ๋๋ค๋ฉด ๋ชจ๋ ๋ณด์ ์กฐ์น๊ฐ ๋ฌด์ฉ์ง๋ฌผ์ด ๋ฉ๋๋ค.
๊ฒฐ๊ตญ, ์ด ๋ชจ๋ ๋ฌธ์ ๋ ํด๋ผ์ด์ธํธ๊ฐ ID์ ํจ์ค์๋๋ฅผ ์ง์ ๊ด๋ฆฌํ๋ ๋ฐ์ ๋ฐ์ํฉ๋๋ค
๐ฐOAuth์ ํต์ฌ ์์น: "์ธ์ฆ"๊ณผ "์ธ๊ฐ"์ ๋ถ๋ฆฌ
ํด๋ผ์ด์ธํธ(๊ฐ๋ฐํ ์ ํ๋ฆฌ์ผ์ด์ )๊ฐ ํ์ํ ๊ฒ์ ๋ฆฌ์์ค(ํ์ฌ ์๋น์ค์ ๋ฆฌ์์ค: ๊ตฌ๊ธ ์บ๋ฆฐ๋)์ ์ ๊ทผํ ์ ์๋ ๊ถํ(Authorization), ์ฆ ์ธ๊ฐ์ ๋๋ค.
์ด ์ธ๊ฐ๋ฅผ ์ํด์๋ ์ธ์ฆ(Authentication)์ด ์ ํ๋์ด์ผ ํฉ๋๋ค.
OAuth๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ธ์ฆ๊ณผ ์ธ๊ฐ์ ๋์์ ๋ถ๋ฆฌํฉ๋๋ค.
์ธ์ฆ (Authentication): ์ฌ์ฉ์๊ฐ ๋ฆฌ์์ค ์ ๊ณต์์๊ฒ ์ง์ ์ํํฉ๋๋ค.
์ธ๊ฐ (Authorization): ์ธ์ฆ ํ, ๋ฆฌ์์ค ์ ๊ทผ ๊ถํ์ ํด๋ผ์ด์ธํธ๊ฐ ์์๋ฐ์ต๋๋ค.
์ฌ์ฉ์๋ ํ์ฌ ์๋น์ค์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฃผ์ง ์๊ณ (์ธ์ฆ์ ์ ์ ๊ฐ ์ง์ ), ์๋น์ค ์ ๊ณต์๊ฐ ๋ฐ๊ธํด์ฃผ๋ "ํ ํฐ"(๊ถํ์ ์๋น์ค์๊ฒ ์์)๋ง ๋งก๊น๋๋ค.
๐ OAuth 2.0์ ์ฃผ์ ๊ตฌ์ฑ ์์
๊ตฌ๊ธ ์บ๋ฆฐ๋๋ก ์์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
| ์ฃผ์ฒด (Role) | ์์ | ์ญํ |
| Resource Owner (๋ฆฌ์์ค ์ค๋) | ์ฌ์ฉ์ (User) | ์ธ์ฆ์ ์ํํ๋ ์ฃผ์ฒด. |
| Client (ํด๋ผ์ด์ธํธ) | ์ฌ๋ด์์ ๊ฐ๋ฐํ ์๋น์ค | ๊ถํ์ ์์๋ฐ๋ ์ฃผ์ฒด. |
| Authorization Server (์ธ๊ฐ ์๋ฒ) | ๊ตฌ๊ธ์ ์ธ์ฆ ์๋ฒ | ์ธ์ฆ ๊ฒ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ๋ด๋น. |
| Resource Server (๋ฆฌ์์ค ์๋ฒ) | ๊ตฌ๊ธ ์บ๋ฆฐ๋ API | ์ธ๊ฐ๋ฅผ ์ํํ๊ณ ๋ฆฌ์์ค๋ฅผ ์ ๊ณต. |
1. Resource Owner (๋ฆฌ์์ค ์ค๋)
๋ฆฌ์์ค ์ค๋๋ ์์ ์ด ์์ ํ ๋ณดํธ๋ ๋ฆฌ์์ค(Protected Resource)์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ ์ ์๋ ์ฃผ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค.
- ์ญํ : ์ผ๋ฐ์ ์ผ๋ก๋ ์๋น์ค๋ฅผ ์ด์ฉํ๋ ์ต์ข ์ฌ์ฉ์(End-User)์ ๋๋ค. (์: ๊ตฌ๊ธ ์บ๋ฆฐ๋ ์ผ์ ์ ๊ฐ์ง ์ฌ์ฉ์, ํฑํก ์ต์ ํ๋งค์ ๊ณ์ ์ฃผ์ธ)
- ๊ถํ ๋ถ์ฌ: ํด๋ผ์ด์ธํธ๊ฐ ์์ ์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋๋ก ํ์ฉํ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ฉฐ, ์ธ๊ฐ ์๋ฒ์ ์ง์ ์ธ์ฆ(Authentication)์ ์ํํ์ฌ ์ด๋ฅผ ์ ์ฆํฉ๋๋ค.
2. Client (ํด๋ผ์ด์ธํธ)
ํด๋ผ์ด์ธํธ๋ ๋ฆฌ์์ค ์ค๋๋ฅผ ๋์ ํ์ฌ ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ ์ํด ๊ถํ์ ์์ฒญํ๊ณ , ๊ทธ ๊ถํ์ ์์๋ฐ์ ๋ฆฌ์์ค ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค.
- ์ญํ : ์ค์ ๋ก ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์๋น์ค (์: ํฑํก ์ต ์๋น์ค๋ฅผ ์ฐ๋ํ๋ ค๋ ์ฑ)
- ์๋ณ ๋ฐ ๋ณด์: OAuth ์ ๊ณต์์๊ฒ ์ฌ์ ์ ๋ฑ๋กํ์ฌ Client ID์ Client Secret์ ๋ฐ๊ธ๋ฐ์ต๋๋ค. Client ID๋ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ๋ฉฐ, Client Secret์ ํ ํฐ ๊ตํ ๋จ๊ณ์์ ํด๋ผ์ด์ธํธ์ ์ ์์ ์ฆ๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- Redirection URI: ์ธ๊ฐ ์ฝ๋๋ฅผ ์ ๋ฌ๋ฐ์ ์ฝ๋ฐฑ(Callback) ์ฃผ์๋ฅผ ์ธ๊ฐ ์๋ฒ์ ๋ฏธ๋ฆฌ ๋ฑ๋กํด์ผ ํฉ๋๋ค.
3. Authorization Server (์ธ๊ฐ ์๋ฒ)
์ธ๊ฐ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ Access Token์ ๋ฐ๊ธํ๋ ์ญํ ์ ์ ๋ดํ๋ ์ฃผ์ฒด์ ๋๋ค. ์ด ์๋ฒ๋ ๋ฆฌ์์ค ์ค๋์ ์ธ์ฆ ์ ๋ณด๋ฅผ ํ์ธํ๊ณ , ํด๋ผ์ด์ธํธ์๊ฒ ๋ฆฌ์์ค ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ ํต์ฌ ๊ฒ์ดํธ์จ์ด์ ๋๋ค.
- ์ญํ : ๋ฆฌ์์ค ์ค๋์ ์ธ์ฆ์ ๊ฒ์ฆํ๊ณ (์ฌ์ฉ์ ๋ก๊ทธ์ธ ํ์ธ), ์ ํจํ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ธ๊ฐ ์ฝ๋(Authorization Code)์ ์ต์ข ์ ์ผ๋ก Access Token์ ๋ฐ๊ธํฉ๋๋ค. (์: Google OAuth Server, TikTok Shop Open Authorization Center)
- ๋ณด์: Access Token ๋ฐ๊ธ ์, ํด๋ผ์ด์ธํธ์ Client Secret์ ๊ฒ์ฆํ์ฌ ๋ณด์์ ๊ฐํํฉ๋๋ค.
4. Resource Server (๋ฆฌ์์ค ์๋ฒ)
๋ฆฌ์์ค ์๋ฒ๋ ๋ณดํธ๋ ๋ฆฌ์์ค๋ฅผ ํธ์คํ ํ๊ณ , ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ Access Token์ ๊ฒ์ฆํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฆฌ์์ค(๋ฐ์ดํฐ)๋ฅผ ์ ๊ณตํ๋ ์ฃผ์ฒด์ ๋๋ค.
- ์ญํ : ์ค์ API ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. (์: Google Calendar API, TikTok Shop Open API)
- ์ธ๊ฐ ์ํ: ํด๋ผ์ด์ธํธ๊ฐ ์ ์กํ Access Token์ ์ ํจ์ฑ๊ณผ, ํ ํฐ์ด ๋ถ์ฌ๋ ๊ถํ ๋ฒ์(Scope)๊ฐ ์์ฒญ๋ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ์ ์ถฉ๋ถํ์ง ํ์ธํ ํ ๋ฆฌ์์ค๋ฅผ ์๋ตํฉ๋๋ค. Access Token์ด ์๊ฑฐ๋ ์ ํจํ์ง ์์ผ๋ฉด ์์ฒญ์ ๊ฑฐ๋ถํฉ๋๋ค.
๐ขOAuth 2.0์ ๋ํ ํ๋ฆ — Authorization Code Flow
OAuth 2.0์๋ ์ฌ๋ฌ Grant Type์ด ์์ง๋ง, ์ค์ ํ๋ก๋์ ํ๊ฒฝ์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฐ์ด๋ ๋ฐฉ์์ Authorization Code Flow์ ๋๋ค. ํฑํก ์ต์ Open API Document ์์ ์ ๊ณตํด์ฃผ๋ ํฑํก์ต OAuth ์ํ์ค ๋ค์ด์ด๊ทธ๋จ์ ๊ธฐ๋ฐ์ผ๋ก ์ด ํ๋ฆ์ ๋จ๊ณ๋ณ๋ก ๋ถ์ํด ๋ณด๊ฒ ์ต๋๋ค.

0๋จ๊ณ: ํด๋ผ์ด์ธํธ ๋ฑ๋ก ๋ฐ ์ค์
OAuth๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋จผ์ ์ ๊ณต์์ API์ ์ ํฌ์ ์๋น์ค๋ฅผ ๋ฑ๋กํด์ผ ํฉ๋๋ค.
- Client ID: ์๋น์ค์ ์๋ณ์.
- Client Secret: ํด๋ผ์ด์ธํธ๊ฐ ์ค์ ๋ก ์ธ์ฆ๋ ์ฃผ์ฒด์ธ์ง ํ์ธํ๊ธฐ ์ํ ๋น๋ฐ๋ฒํธ.
- Redirection URI: ๊ถํ์ ๋ค์ ์๋น์ค์๊ฒ ๋ฐํ๋ฐ์ ์๋ํฌ์ธํธ. OAuth ์ฌ์ฉ์ ์ํ ๊ธฐ๋ณธ ์กฐ๊ฑด์ด๋ฉฐ, ๋ธ๋ผ์ฐ์ ์ ๋ฆฌ๋ค์ด๋ ์ ์ด ํ์ํฉ๋๋ค.
- Scope (๊ถํ ๋ฒ์): ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ๋ API ๊ถํ์ ์ข ๋ฅ๋ฅผ ์ ํํฉ๋๋ค. (e.g. ์ํ API, ์ฃผ๋ฌธ API, ๋ฌผ๋ฅ API ๋ฑ)
1๋จ๊ณ: ์ธ๊ฐ ์ฝ๋ ์์ฒญ ๋ฐ ์ธ์ฆ ์ํ (User Interaction)
์ด ๋จ๊ณ๋ ๋ฆฌ์์ค ์ค๋(User)๊ฐ ํด๋ผ์ด์ธํธ(Service/App)์๊ฒ ๊ถํ์ ์์ํ๊ธฐ ์ํด ์ธ๊ฐ ์๋ฒ(Authorization Server)์ ์ํธ์์ฉํ๋ ๊ณผ์ ์ ๋๋ค.
| ๋จ๊ณ | TikTok Shop OAuth ํ๋ฆ | OAuth 2.0 ์ญํ ์ค๋ช |
| โ ~โก ์ด๊ธฐ ์ง์ | User๊ฐ TikTok Shop ํํธ๋ ์ผํฐ์์ Service/App์ ๋ํ ๊ตฌ๋ /์ฌ์ฉ ์น์ธ์ ํ ํ, Service/App์ ์น์ฌ์ดํธ(๋ก๊ทธ์ธ ํ์ด์ง) ๋งํฌ๋ก ์ด๋ํฉ๋๋ค. | ํด๋ผ์ด์ธํธ๊ฐ ๊ถํ ์์์ ์์ํ๋ ์์ ์ ๋๋ค. |
| โข ์ธ๊ฐ ์์ฒญ (Authorization Request) | Service/App์ TikTok Shop Open Authorization Center์ ์ธ์ฆ ์๋ฒ URL๋ก User์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ฆฌ๋ค์ด๋ ์ ํฉ๋๋ค. ์ด๋ service_id ๋๋ app_key (ํด๋ผ์ด์ธํธ ์๋ณ์)์ CSRF ๋ฐฉ์ง๋ฅผ ์ํ state ํ๋ผ๋ฏธํฐ๋ฅผ ํจ๊ป ์ ๋ฌํฉ๋๋ค. | client_id (app_key), redirect_uri, scope ๋ฑ์ ํ๋ผ๋ฏธํฐ๊ฐ ํฌํจ๋ ์ธ๊ฐ ์์ฒญ์ ๋๋ค. |
| โฃ ์ธ์ฆ (Authentication) | User๋ TikTok Shop Open Authorization Center์์ ๊ณ์ ์ ๋ณด(์: ํ๋งค์ ๋ก๊ทธ์ธ)์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ฌ ์ง์ ์ธ์ฆ์ ์ํํฉ๋๋ค. | ํด๋ผ์ด์ธํธ๋ ์ด ์ธ์ฆ ๊ณผ์ ์ ์ ํ ๊ด์ฌํ์ง ์์ผ๋ฉฐ, ๊ณ์ ์ ๋ณด๊ฐ ์ ์ถ๋ ์ํ์ด ์์ฒ์ ์ผ๋ก ์ฐจ๋จ๋ฉ๋๋ค. |
2๋จ๊ณ: ์ธ๊ฐ ์ฝ๋ ๋ฐ๊ธ ๋ฐ ๊ตํ (Token Exchange)
User ์ธ์ฆ์ด ์๋ฃ๋ ํ, ํด๋ผ์ด์ธํธ(Service/App)๋ ์ธ๊ฐ ์ฝ๋(Auth Code)๋ฅผ ์ด์ฉํด Access Token์ ๊ตํํฉ๋๋ค. ์ด ๊ณผ์ ์ ํด๋ผ์ด์ธํธ ์๋ฒ์ ์ธ๊ฐ ์๋ฒ ๊ฐ์ ์ง์ ํต์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ ๊ฒ์ด ํต์ฌ์ ๋๋ค.
| ๋จ๊ณ | TikTok Shop OAuth ํ๋ฆ | OAuth 2.0 ์ญํ ์ค๋ช |
| โค ์ธ๊ฐ ์ฝ๋ ๋ฐ๊ธ (Authorization Code Grant) | Authorization Center๋ ์ธ์ฆ์ด ์ ํจํ๋ค๊ณ ํ๋จ๋๋ฉด, auth code๋ฅผ ์์ฑํ๊ณ ์ฌ์ ์ ๋ฑ๋ก๋ redirect URL (Callback URI)๊ณผ ํจ๊ป User์ ๋ธ๋ผ์ฐ์ ๋ฅผ Service/App์ผ๋ก ๋ฆฌ๋ค์ด๋ ์ ํฉ๋๋ค. | ํด๋ผ์ด์ธํธ๊ฐ ๊ถํ์ ์์๋ก ๋ฐ์ ์ ์๋ ์ผํ์ฑ ์ฝ๋๋ฅผ ํ๋ํฉ๋๋ค. |
| โฅ Access Token ์์ฒญ (Token Request) | Service/App ์๋ฒ๋ ์์ ํ auth code๋ฅผ ์ฌ์ฉํ์ฌ Authorization Center์ Access Token ๋ฐ๊ธ์ ์ง์ ์์ฒญํฉ๋๋ค. ์ด๋ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ก app_key, app_secret, auth_code, grant_type (authorization_code), granted_scopes ๋ฑ์ ํฌํจํฉ๋๋ค. | ์๋ฒ ๊ฐ์ ์์ ํ ํต์ ์ ํตํด app_secret์ ๊ฒ์ฆํ์ฌ, ์์ฒญ ์ฃผ์ฒด๊ฐ ๋ฑ๋ก๋ ์ ์ ํด๋ผ์ด์ธํธ์์ ํ์ธํฉ๋๋ค. |
| โฆ Access Token ๋ฐ๊ธ | Authorization Center๋ ์ ํจ์ฑ์ ํ์ธํ ํ, access_token (์ค์ ๊ถํ), refresh_token (ํ ํฐ ๊ฐฑ์ ์ฉ), ๊ทธ๋ฆฌ๊ณ open_id (์ฌ์ฉ์ ์๋ณ์, OIDC ์์)๋ฅผ ์๋ต ํ๋ผ๋ฏธํฐ๋ก Service/App ์๋ฒ์ ์ง์ ๋ฐํํฉ๋๋ค. | ์ด ์๋ฒ ๋ ์๋ฒ ํต์ ์ ๋ณด์ ๊ฐํ๋ฅผ ์ํด ๋ฐ๋์ HTTPS๋ก ์ํธํ๋์ด์ผ ํฉ๋๋ค. |
3๋จ๊ณ: ๋ฆฌ์์ค ์ ๊ทผ ๋ฐ ์๋น์ค ์ ๊ณต
ํด๋ผ์ด์ธํธ๊ฐ ํ๋ํ Access Token์ ํ์ฉํ์ฌ ์ต์ข ์ ์ผ๋ก ๋ฆฌ์์ค ์๋ฒ์ ์ ๊ทผํ๋ ๋จ๊ณ์ ๋๋ค.
| ๋จ๊ณ | TikTok Shop OAuth ํ๋ฆ | OAuth 2.0 ์ญํ ์ค๋ช |
| โง Open API ์์ฒญ (Resource Access) | Service/App์ ๋ฐ๊ธ๋ฐ์ access_token์ ํค๋ ๋ฑ์ ํฌํจํ์ฌ TikTok Shop Open API (๋ฆฌ์์ค ์๋ฒ)์ ์ํ๋ ์ ๋ณด๋ฅผ ์์ฒญํฉ๋๋ค. | Access Token์ ํด๋ผ์ด์ธํธ๊ฐ ์์๋ฐ์ ๊ถํ ๋ฒ์(Scope) ๋ด์์๋ง ๋ฆฌ์์ค ์ ๊ทผ์ด ๊ฐ๋ฅํ๋๋ก ์ ํํฉ๋๋ค. |
| โจ~โฉ ๊ฒฐ๊ณผ ํ์ | Open API๊ฐ ์์ฒญ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ฉด, Service/App์ ์ด๋ฅผ ๊ฐ๊ณตํ์ฌ User์๊ฒ ํ์ํฉ๋๋ค. | ์๋น์ค๋ฅผ ์์ฑํ๊ณ ์ฌ์ฉ์์๊ฒ ๊ฐ์น๋ฅผ ์ ๊ณตํ๋ ์ต์ข ๋จ๊ณ์ ๋๋ค. |
๐ก๋ฒ์ธ - ์์ ๋ก๊ทธ์ธ๊ณผ OpenID Connect (OIDC)
๋ง์ ๊ฐ๋ฐ์๋ค์ด OAuth 2.0์ ์์ ๋ก๊ทธ์ธ์ ์ฌ์ฉํ์ง๋ง, ์์ ๊ฐ์กฐํ๋ฏ์ด OAuth์ ๋ณธ์ง์ ์ธ๊ฐ(Authorization) ๊ธฐ์ ์ ๋๋ค.
OAuth 2.0์ ํ์ฉํ ์์ ๋ก๊ทธ์ธ
OAuth๋ ์ธ๊ฐ๋ฅผ ์ํ ๊ธฐ์ ์ด์ง๋ง, ์ด๋ฅผ ํตํด ์ฌ์ฉ์์ ์๋ณ ์ ๋ณด๋ฅผ ์ป์ด ์ธ์ฆ(๋ก๊ทธ์ธ)์ ๊ตฌํํ ์ ์์ต๋๋ค.
- Access Token ํ๋: ์ 3๋จ๊ณ๊น์ง ๋์ผํ๊ฒ Access Token์ ๋ฐ๊ธ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ์ ํ๋กํ ์์ฒญ: ํ๋ํ Access Token์ ์ด์ฉํด ๋ฆฌ์์ค ์๋ฒ์ ์ฌ์ฉ์์ ํ๋กํ(์๋ณ์) ์ ๋ณด๋ฅผ ์์ฒญํฉ๋๋ค.
- ์๋น์ค ๋ด๋ถ ์ธ์ฆ: ํด๋ผ์ด์ธํธ๋ ์ด ํ๋กํ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค์ ๋ณ๋ ๋ฉค๋ฒ DB์์ ์ฌ์ฉ์๋ฅผ ์กฐํํ๊ฑฐ๋ ์ ๊ท ์์ฑํฉ๋๋ค.
- ์ธ์ ์์ฑ: ์๋น์ค ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ JWT ๋ฑ์ ํ ํฐ์ ์์ฑํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ฐํ, ๋ก๊ทธ์ธ ์ธ์ ์ ์ ์งํฉ๋๋ค.
์ฃผ์: OAuth๊ฐ ID/PW ๊ด๋ฆฌ๋ฅผ ์์ํด ์ฃผ์ง๋ง, ์ฌ์ฉ์์ ์ฐ ์ ๋ณด, ์ผ์ ๋ฑ ์๋น์ค ํนํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ณ๋์ ๋ฉค๋ฒ DB ๊ตฌ์ถ์ ํ์์ ๋๋ค.
OpenID Connect (OIDC)์ ๋ฑ์ฅ
์ธ์ฆ(Authentication)์ ๋ช ํํ ์ง์ํ๊ธฐ ์ํด OAuth 2.0 ์์ ๊ตฌ์ถ๋ ๊ธฐ์ ์ด ๋ฐ๋ก OpenID Connect์ ๋๋ค.
- ID Token: OIDC๋ Access Token ์์ฒญ ์, ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ID Token์ ๋ฐ๊ธ์ ์์ฒญํฉ๋๋ค.
- JWT ๊ธฐ๋ฐ: ID Token์ JWT(JSON Web Token) ํํ๋ก ์ด๋ฃจ์ด์ ธ ์์ด, ํ์ด๋ก๋๋ฅผ ๋์ฝ๋ฉํ์ฌ ์ฌ์ฉ์์ ์๋ณ์๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์, OIDC๋ฅผ ์ง์ํ๋ ์๋น์ค๋ผ๋ฉด Access Token ๋์ ID Token์ ํตํด ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ป์ด์ ์์ ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ ๊ฒ์ด ๊ฐ์ฅ ํ์ค์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
ํฑํก ์ต์ Access Token ๋ฐ๊ธ ๋จ๊ณ(โฆ) ์๋ต ํ๋ผ๋ฏธํฐ๋ฅผ ๋ณด๋ฉด open_id๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ด open_id๋ ์ฌ์ฉ์๋ฅผ ์๋ณํ ์ ์๋ ๊ณ ์ ๊ฐ์ผ๋ก, ์ด๋ OpenID Connect(OIDC) ๊ธฐ์ ์ด OAuth 2.0 ๊ธฐ๋ฐ ์์์ ์ฌ์ฉ์ ์ธ์ฆ(Authentication) ์ ๋ณด๋ฅผ ์ ๊ณตํ๋๋ก ํ์ฅ๋์์์ ๋ณด์ฌ์ค๋๋ค.
- OAuth 2.0์ ๋ณธ์ง: ์ธ๊ฐ(Authorization)
- OpenID Connect (OIDC): OAuth 2.0 ์์ ๊ตฌ์ถ๋์ด ์ธ์ฆ(Authentication) ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ ํ๋กํ ์ฝ. ID Token์ด๋ open_id ๊ฐ์ ์ฌ์ฉ์ ์๋ณ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
โจ๋ง๋ฌด๋ฆฌ ํ๋ฉฐ
OAuth 2.0์ ์ธ๊ฐ ๊ณผ์ ์์ ์ธ์ฆ์ ์ฌ์ฉ์์๊ฒ ๋ถ๋ฆฌํ์ฌ, ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ๋ฏผ๊ฐํ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ค๋ฃจ์ง ์๊ณ ๋ ํ์ํ ๊ถํ์ ์์ ํ๊ฒ ์์๋ฐ์ ์ ์๋๋ก ์ค๊ณ๋ ํต์ฌ ๋ณด์ ๊ธฐ์ ์
๋๋ค.
ํ๋์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก์ ์ด ์ธ๊ฐ(Authorization) ํ๋ฆ์ ๋ช
ํํ ์ดํดํ๊ณ , ์์
๋ก๊ทธ์ธ ๊ตฌํ ์ OAuth์ OIDC์ ์ฐจ์ด์ ์ ์ธ์งํ์ฌ ํ์ค์ ์ธ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋๊ธ