SSO (Single Sign-On)
๋ช ์ฌ ยท ์ธ์ฆ
์ฌ์ฉ์๊ฐ ํ ๋ฒ ๋ก๊ทธ์ธํ๋ฉด ๋์งํธ ์ํ๊ณ์ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์๋น์ค์ ์ ๊ทผํ ์ ์๋ ํตํฉ ์ธ์ฆ ๋ฉ์ปค๋์ฆ โ ์ฌ๋ฌ ๊ฐ์ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑ๋๋ค.
ํ์คํ๋ ํ๋กํ ์ฝ(OAuth 2.0, SAML, OpenID Connect)์ ๊ธฐ๋ฐํ์ฌ ์ ๋ขฐํ ์ ์๋ ์ ๊ณต์์๊ฒ ์ ์ ํ์ธ์ ์์ํ๋ ์ค์ ์ง์ค์ ๋ณด์ ์ํคํ ์ฒ๋ก, ์ฌ์ฉ์ ๊ฒฝํ์ ๋จ์ํํ๋ฉด์ ์ ๋ฐ์ ์ธ ๋ณด์์ ๊ฐํํฉ๋๋ค.
์ฌ์ฉ์ ์ฌ์ ์ ์ํํ๊ฒ ํ๊ณ , ์ฝํ ๋น๋ฐ๋ฒํธ ๊ด๋ จ ์ํ์ ์ค์ด๋ฉฐ, ๋จ์ผ ๋๋ ํ ๋ฆฌ ๋ด์์ ์ ๊ทผ ๊ด๋ฆฌ๋ฅผ ์ค์ํํ๊ธฐ ์ํด ๊ธฐ์ ๊ณผ ์น ํ๋ซํผ์ด ์ฑํํ ์ฐํฉ ์๋ณ ์๋ฃจ์ ์ ๋๋ค.
SSO(Single Sign-On), ์ฆ ํตํฉ ์ธ์ฆ์ ์ฌ์ฉ์๊ฐ ํ ๋ฒ ์ธ์ฆํ๋ฉด ๋ค์ ๋ก๊ทธ์ธํ์ง ์๊ณ ๋ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์๋น์ค์ ์ ๊ทผํ ์ ์๊ฒ ํ๋ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ์ ๋ขฐํ ์ ์๋ ID ๊ณต๊ธ์(IdP)๋ฅผ ํตํด ID ๊ด๋ฆฌ๋ฅผ ์ค์ํํฉ๋๋ค. Async Code์์๋ OAuth 2.0๊ณผ OpenID Connect ๊ธฐ๋ฐ์ ์์ ํ SSO ์๋ฃจ์ ์ ๊ตฌํํ์ฌ ์ฌ์ฉ์์๊ฒ ์ ์ฐํ๊ณ ๋ณดํธ๋ ๋ก๊ทธ์ธ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
SSO๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ค์ ์ง์ค์ ID ์๋ฒ ๊ฐ์ ์ธ์ฆ ํ ํฐ ๊ตํ์ ํตํด ์๋ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๋ฉด SSO ์๋ฒ๊ฐ ๋ณด์ ํ ํฐ์ ์์ฑํ๊ณ , ์ด ํ ํฐ์ ์๋ก์ด ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ์์ด ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฒ์ฆ๋ฉ๋๋ค. ์ ํฌ ์์ด์ ์๋ ์ต๋ํ์ ๋ณด์์ ์ํด ํ ํฐ์ ์์ฑ, ๊ฒ์ฆ ๋ฐ ๊ฐฑ์ ์ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒฌ๊ณ ํ SSO ํ๋ก์ฐ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
SSO ๊ตฌ์ถ์๋ ํ๋กํ ์ฝ ์ ํ(OAuth 2.0, SAML ๋๋ OpenID Connect), ID ๊ณต๊ธ์ ๊ตฌ์ฑ, ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํ ์ ํ๋ฆฌ์ผ์ด์ ์ธก ํตํฉ์ด ํ์ํฉ๋๋ค. ์ธ์ , ๋ฆฌ๋ค์ด๋ ์ ๋ฐ ์ ๊ทผ ์ทจ์๋ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ์ ํฌ ์น ์์ด์ ์๋ Redux๋ฅผ ํตํ ์ค์ ์ง์ค์ ์ํ ๊ด๋ฆฌ์ ๋๊น ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ๋ง์ถคํ SSO ์ํคํ ์ฒ๋ฅผ ๊ตฌํํฉ๋๋ค.
SSO ํ์ฑํ๋ ๊ธฐ์กด ์ธํ๋ผ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ID ๊ณต๊ธ์์ OAuth ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ์ฑํ๊ณ , ์ธ์ฆ ๋ฆฌ๋ค์ด๋ ์ ์ ๊ตฌํํ๊ณ , ํด๋ผ์ด์ธํธ ์ธก ํ ํฐ ์ ์ฅ์ ๋ณด์ํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ ๋ฌธ ์ค์ํธ์ ๊ฒฝ์ฐ, ๋๋ถ๋ถ์ ํ๋ซํผ์ด ๊ด๋ฆฌ ํจ๋์ ํตํ ํ์ฑํ๋ฅผ ์ ๊ณตํฉ๋๋ค. Async Code์์๋ ๊ตฌ์ฑ๋ถํฐ SSO ํ๋ก๋์ ๋ฐฐํฌ๊น์ง ์์ ํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
SSO๋ ๋น๋ฐ๋ฒํธ ํผ๋ก๋ฅผ ์์ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ณ ์ธ์ฆ ์ ์ฑ ์ ์ค์ํํ์ฌ ๋ณด์์ ๊ฐํํ๋ ์ด์ค ๋ชฉ์ ์ ๋ถํฉํฉ๋๋ค. ์ฐ๊ตฌ์ ๋ฐ๋ฅด๋ฉด ๋ฐ์ดํฐ ์ ์ถ์ 80%๊ฐ ์์๋ ๋น๋ฐ๋ฒํธ์ ๊ด๋ จ์ด ์์ต๋๋ค. ์ธ์ฆ์ ์ค์ํํจ์ผ๋ก์จ SSO๋ ์ด ๊ณต๊ฒฉ ํ๋ฉด์ ํ๊ธฐ์ ์ผ๋ก ์ค์ ๋๋ค. ์ ํฌ ์์ด์ ์๋ ์ฌ๋ฌ ์ ๊ทผ ํฌ์ธํธ๊ฐ ํ์ํ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๊ณ์ SSO๋ฅผ ๊ถ์ฅํฉ๋๋ค.
ํตํฉ ์ธ์ฆ ํฌ์ธํธ๋ ์ฌ์ฉ์์ ์ ์์ ํ์ธํ๊ณ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผ ๊ถํ์ ๋ฐฐํฌํ๋ ์ค์ ์ง์ค์ ์๋ฒ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ํ ๋ฒ๋ง ์ ์์ ์ฆ๋ช ํ๋ ์ ๋ขฐํ ์ ์๋ ๋จ์ผ ํฌํ ์ญํ ์ ํฉ๋๋ค. ์ด ํฌ์ธํธ๋ ์ธ์ ๊ด๋ฆฌ, ๋น๋ฐ๋ฒํธ ์ ์ฑ ๋ฐ ๋ค์ค ์ธ์ฆ(MFA)๋ ์ค์ํํฉ๋๋ค. Async Code๋ ๊ณ ๊ฐ์ฉ์ฑ๊ณผ ๋ณด์์ ํน๋ณํ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ ์ด๋ฌํ ์ํคํ ์ฒ๋ฅผ ์ค๊ณํฉ๋๋ค.
SSO ์ฐ๊ฒฐ์ ์ฌ์ฉ์๊ฐ ์ค์ ์ง์ค์ ID ๊ณต๊ธ์์ ์ธ์ฆํ ํ, ์ถ๊ฐ ์ธ์ฆ ์์ด ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋์ผ๋ก ์ ๊ทผํ๋ ํ๋ก์ธ์ค์ ๋๋ค. ์ฌ์ฉ์๋ ์๊ฒฉ ์ฆ๋ช ์ ํ ๋ฒ๋ง ์ ๋ ฅํ๊ณ ์ดํ ์๋น์ค ๊ฐ์ ์์ ๋กญ๊ฒ ์ด๋ํฉ๋๋ค. ์ ํฌ ์์ด์ ์๋ ๊ฐํ๋ ๋ณด์๊ณผ ๋จ์ํ๋ ์ฌ์ฉ์ ์ฌ์ ์ ๊ฒฐํฉํ์ฌ React ๋ฐ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉ๋๋ ์ํํ SSO ์ฐ๊ฒฐ ๊ฒฝํ์ ๊ฐ๋ฐํฉ๋๋ค.
SSO๋ฅผ ๊ตฌํํ๋ฉด ๋น๋ฐ๋ฒํธ ๋ถ์ค ๊ด๋ จ ์ง์ ๋น์ฉ์ ์ค์ด๊ณ , ํ ์์ฐ์ฑ์ ํฅ์์ํค๋ฉฐ, ์กฐ์ง์ ์ ๋ฐ์ ์ธ ๋ณด์ ์ฒด๊ณ๋ฅผ ๊ฐํํ ์ ์์ต๋๋ค. ๊ณ ๊ฐ์ ์ํ๊ณ์ ์ํํ ํตํฉ์ ์ ๊ณตํ๋ ค๋ SaaS ํ๋ซํผ์๊ฒ๋ ๊ฒฝ์ ์ฐ์๊ฐ ๋ฉ๋๋ค. Async Code๋ ์คํํธ์ ๊ณผ ๊ธฐ์ ์ด ๊ธฐ์กด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ณธ ํตํฉ๋๋ SSO ๊ตฌํ์ ์ง์ํฉ๋๋ค.
SSO๋ฅผ ๊ตฌ์ถํ๋ ค๋ฉด ID ์ํคํ ์ฒ(๋ด๋ถ ๋๋ ์ธ๋ถ IdP)๋ฅผ ์ ์ํ๊ณ , ์ ํฉํ ํ๋กํ ์ฝ(ํ๋ ์น์ฉ OpenID Connect, ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์ฉ SAML)์ ์ ํํ๊ณ , ์ธ์ฆ ํ๋ก์ฐ๋ฅผ ๊ฐ๋ฐํ๊ณ , ์ํธํ์ ์ธ์ฆ์๋ก ์ ๋ขฐ ์ฒด์ธ์ ๋ณด์ํด์ผ ํฉ๋๋ค. ์ ํฌ ์น ์์ด์ ์๋ Auth0, Keycloak ๋๋ ๋ง์ถค ๊ฐ๋ฐ๊ณผ ๊ฐ์ ๊ฒ์ฆ๋ ์๋ฃจ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ์ ์ค๊ณ๋ถํฐ ๋ฐฐํฌ๊น์ง ์์ ํ SSO ๊ตฌํ์ ์ํํฉ๋๋ค.
Social Login์ ์ฌ์ฉ์๊ฐ ๊ธฐ์กด Google, Facebook, Apple ๋๋ LinkedIn ๊ณ์ ์ผ๋ก ์ฌ์ดํธ์ ๋ก๊ทธ์ธํ ์ ์๊ฒ ํ๋ ์ธ๊ธฐ ์๋ SSO ํํ์ ๋๋ค. ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ์ ์ ๊ทผํ์ง ์๊ณ ์์ ํ๊ฒ ํ๋กํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด OAuth 2.0 ํ๋กํ ์ฝ์ ํ์ฉํฉ๋๋ค. Async Code๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ ์ฑ๋ฅ Social Login์ ํตํฉํ์ฌ ๊ฐ์ ๋ง์ฐฐ์ ์ค์ด๊ณ ์ ํ์จ์ ํฌ๊ฒ ๋์ ๋๋ค.