SSO
SSO(Single Sign On)๋ ํ ๋ฒ์ ๋ก๊ทธ์ธ์ผ๋ก ์ฌ๋ฌ ์๋น์ค์ ์ ๊ทผํ ์ ์๋ ํตํฉ ์ธ์ฆ ๋ฐฉ์์ ๋๋ค. ์๋น์ค์ ๊ท๋ชจ๊ฐ ์ปค์ง ๋ ์ฌ๋ฌ ์๋น์ค๋ฅผ ํตํฉ ๊ด๋ฆฌํ๊ธฐ ์ํด SSO๋ฅผ ์ฌ์ฉํฉ๋๋ค.
SSO๋ฅผ ๊ตฌํํ ๋ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ํจํด์ด ์กด์ฌํ ์ ์์ต๋๋ค.
1. ์ธ์ฆ gateway ๋ฐฉ์
๊ฐ ์๋น์ค์ ์ ๊ทผํ ๋ ์ด์ ๋ ์ด์ด์ ํตํฉ ์ธ์ฆ ์๋น์ค๊ฐ ์กด์ฌํ๋ ๋ฐฉ์์ ๋๋ค. User๋ SessionID๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ํตํฉ ์ธ์ฆ ์๋น์ค๋ฅผ ํต๊ณผํ๋ฉด ํด๋น ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ์์ ๋จ์ ์ ๊ฐ ์๋น์ค๋ฅผ ์ด์ฉํ ๋๋ง๋ค ์ธ์ฆ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ฉฐ ์ธ์ฆ ์๋น์ค ์์ฒด๊ฐ bottle neck์ด ๋ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
2. ์ธ์ฆ ํ ํฐ ๋ฐ๊ธ ๋ฐฉ์
์ ์ ๋ ์ฐ์ ํตํฉ ์ธ์ฆ ์๋น์ค๋ฅผ ํตํด ํ ํฐ์ด๋ผ๋ ์ธ์ฆ ๋ํ ๋งค์ฒด๋ฅผ ๋ถ์ฌ๋ฐ๊ณ , ์ ์ ๊ฐ ์๋น์ค๋ฅผ ์์ฒญํ๋ฉด ๊ฐ ์๋น์ค๋ ์ ์ ๊ฐ ๋ณด์ ํ๊ณ ์๋ ํ ํฐ์ผ๋ก ์ธ์ฆ ์ฌ๋ถ๋ฅผ ํ์ ํฉ๋๋ค. ํ ํฐ์ ๋ณดํต ํด์ํจ์์ ์ํด ๋ณํ๋์ด ์ ์ ์ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค์ ์ ์ฅ๋ฉ๋๋ค.
์ด ์ ๋ฆฌ
์ธ์ฆ ์ข ๋ฅ | ์ธ์ฆ | ์ฌ์ธ์ฆ | ์ธ์ฆ๊ฐฑ์ | ๋น๊ณ |
SAML | SAMLResponse | Session Cookie | - | XML๊ธฐ๋ฐ์ด๋ผ ๋ธ๋ผ์ฐ์ ์์๋ง ๊ฐ๋ฅํ๋ค. |
OAuth 2.0 | 1. API key(Client id, Client secret, redirect URL) - Client ์ธ์ฆ id, pw - User ์ธ์ฆ 2. Authorization code 3. access token |
access token | refresh token | ๋ค๋ฅธ ์๋น์ค์ Auth๋ฅผ ์ด์ฉํด์ผ ํ ๋ ์ฌ์ฉํ๋ค. |
OpenIDC | id, pw - User ์ธ์ฆ API key - Client ์ธ์ฆ |
access token | refresh token | ์ธ๊ฐ๋ id token์ ํตํด์ ์ด๋ฃจ์ด์ง๋ค. |
๊ฒฐ๋ก
๊ฒฐ๋ก ์ OpenIDC ๋ฐฉ์์ Client ์ธ์ฆ์ ๋ํ๊ธฐ ์ํด API key ๋ฐฉ์์ ๋์ ํ๋ฉด ๋๋ถ๋ถ์ ๊ฒฝ์ฐ๋ฅผ ์ปค๋ฒํ ์ ์๋ค. ๋ํ, ์ด๋ฌํ ์ธ์ฆ flow๋ฅผ ์ฌ์ฉํ ๋ refresh token์ BFF ์๋ฒ์์ ์ธ๋ฑ์ค DB์ ์ํตํ๋๋ก ํ๋ฉฐ key๊ฐ ๋๋ ์ธ๋ฑ์ค๋ฅผ Client๋ก ๋ด๋ ค์ฃผ๋ ๊ฒ์ด ๋ณด์์ ์ข๋ค.
์ฐธ๊ณ
https://cloud.google.com/endpoints/docs/openapi/when-why-api-key?hl=ko
https://gruuuuu.github.io/security/ssofriends/
https://wiki.dailyhou.se/display/OHP/Auth+Service+Tech+Design
Comment