์๋ก
ํ์ฌ ์ผํ๊ณ ์๋ ๊ณณ์์๋ ๋ด๋ถ๋ง์์ ๋ค์ํ ์์คํ
๋ค์ ์ด์ํ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ฃผ๋ชฉํ ์ ์ ํ ๋ฒ์ ๋ก๊ทธ์ธ์ผ๋ก ๋ด๋ถ์ ๋ชจ๋ ์์คํ
์ ์ฌ ๋ก๊ทธ์ธ ์์ด ์ด์ฉํ ์ ์๋ ๋ฐฉ์์ธ SSO(Single Sign On) ์ธ์ฆ ๋ฐฉ์์
๋๋ค.
์ด๋ฒ ๊ฒ์๊ธ์์๋ ์ด๋ฌํ SSO(Single Sign On)์ ๋ํด์ ํ๋ฒ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค.
SSO๋?
SSO๋ Single-Sign-On์ ์ฝ์๋ก ํ ๋ฒ์ ๋ก๊ทธ์ธ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ์ฌ์ดํธ๋ค์ ์ฌ ๋ก๊ทธ์ธ ์์ด ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ฉฐ, ํตํฉ์ธ์ฆ์ด๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค.
์ ์ด๋ฏธ์ง๋ SSO๊ฐ ์๋ ๋ฐฉ์์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ ์ด๋ฏธ์ง์ฒ๋ผ ์๋ก ๋ค๋ฅธ ์์คํ
์ ์๋ก ๊ฐ๊ฐ์ ์ฌ์ฉ์ ์ธ์ฆ ๋ฐฉ์์ด ํ์ํฉ๋๋ค. ์นด์นด์คํก ๋ก๊ทธ์ธ์ ํ๋ค๊ณ ํด์ ํ์ด์ค๋ถ์ ์ถ๊ฐ์ ์ธ ๋ก๊ทธ์ธ ์์ด ์ด์ฉํ ์ ์๊ณ , ๋ง์ฐฌ๊ฐ์ง๋ก gmail๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
๋ง์ฝ ๋์ผ ํ์ฌ์์ ์๋น์คํ๋ ๊ฐ๊ฐ์ ์๋น์ค๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์ ๋งค ์๋น์ค๋ง๋ค ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค๋ฉด, ์๋น์ค๋ฅผ ๋ง๋๋ ์
์ฅ์์๋ ์ถ๊ฐ์ ์ธ ๊ตฌํ์ด ๋ค์ด๊ฐ์ผ ํ๊ณ , ์ฌ์ฉ์ ์
์ฅ์์๋ ๊ฐ๊ฐ์ ์๋น์ค๋ง๋ค ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ธฐ์ตํด์ผ ํฉ๋๋ค.
์ ์ด๋ฏธ์ง๋ SSO ๋ฐฉ์์
๋๋ค. google์ด ๋ํ์ ์ธ SSO๋ฅผ ์ฌ์ฉํ๋ ์๋ผ๊ณ ํ ์ ์๋๋ฐ, ๊ตฌ๊ธ ๋ก๊ทธ์ธ๋ง ํ๋ฉด gmail, google drive, google photo ๋ฑ ๋ค์ํ ์๋น์ค๋ค์ ์ถ๊ฐ์ ์ธ ๋ก๊ทธ์ธ ์์ด ์ด์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด์ SSO๋ฅผ ๋ ์์ธํ ์๊ธฐ ์ ์ ๋ ๊ฐ์ง ๋จ์ด์ ๋ํด ๋จผ์ ์์๋ณด๊ฒ ์ต๋๋ค.
- SP(Service Provider): ์๋น์ค, ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ ๋ค์ํ๊ฒ ๋ถ๋ฆฌ๊ณ ์์ผ๋ฉฐ, ์ธ์ฆ์ ๊ฑฐ์ณ์ผ๋ง ์ฌ์ฉํ ์ ์๋ ์๋น์ค๋ฅผ ์๋ฏธํฉ๋๋ค.
- IdP(Identity Provider): SP๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ธ์ฆ์ ํ ์ ์๋๋ก ๊ณตํต ์ธ์ฆ ๊ด๋ จ ๋ถ๋ถ๋ง ๋ชจ์์ ๊ตฌ์ฑํ ์๋น์ค์ ๋๋ค. ๋ณดํต ํ๋์ ํ์ฌ๊ฐ ๋ค์ํ ์ธ์ฆ์ด ํ์ํ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋๋ก ํ๊ธฐ ์ํ ๊ทธ๋ฃน์ด๋ฉฐ, ํ ํ์ฌ ์ธ์ฆ ๋ถ๋ถ๊น์ง ํฌํจํ๋ IdP๋ ๊ฑฐ์ ์๋ค๊ณ ํฉ๋๋ค.
SSO์ ์ ํ
SSO๋ ํฌ๊ฒ ๋ ๊ฐ์ง ์ ํ 1)์ธ์ฆ ์์ ๋ชจ๋ธ(Delegation)๊ณผ 2)์ธ์ฆ ์ ๋ณด ์ ๋ฌ ๋ชจ๋ธ(Propagation)๋ก ๋๋ฉ๋๋ค.
1) ์ธ์ฆ ์์ ๋ชจ๋ธ(Delegation)
- SSO ์์ด์ ํธ๊ฐ ์ธ์ฆ์ ๋ํํ๋ ๋ฐฉ์
- ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ฆ ๋ฐฉ์์ ๋ณ๊ฒฝํ๊ธฐ ์ด๋ ค์ธ ๋ ๋ง์ด ์ฌ์ฉ
- ์ฌ์ฉ์์ ์ธ์ฆ ์ ๋ณด๋ฅผ SSO ์์ด์ ํธ๊ฐ ๊ด๋ฆฌํ๋ฉฐ ๋ก๊ทธ์ธ ๋์ ์ํ
2) ์ธ์ฆ ์ ๋ณด ์ ๋ฌ ๋ชจ๋ธ(Propagation)
- SSO์์ ์ธ์ฆ์ ์ํ, ํ ํฐ์ ๋ฐ๊ธํ๊ณ ์ ๋ฌํ์ฌ ์ธ์ฆ ์ํ
- SSO์์ ์ธ์ฆ์ ๋ฐ์ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ ๋ฌํ ํ ํฐ ์์ฑ
- ์ ํ๋ฆฌ์ผ์ด์ ์์ SSO์ ํ ํฐ ๊ฒ์ฆ์ ์ธ์ฆ๋ ๊ฒ์ผ๋ก ์ฒ๋ฆฌ
๋ณดํต ์น ๊ธฐ๋ฐ์ ๋ฐฉ์์์๋ 2๋ฒ ๋ฐฉ์์ธ ํ ํฐ์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.
SSO๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ๊ธฐ์ ์์๋?
SSO๋ฅผ ๊ตฌํํ๋ ค๋ฉด, ๋จผ์ ์ธ์ฆ ์๋ฒ๊ฐ ์์ด์ผ ํ๊ณ , ์ด๋ฅผ ๋ค์ํ ์๋น์ค๋ค๊ณผ ์ด๋ ํ ์ธ์ฆ ๊ด๋ จ์ผ๋ก ์ฐ๊ณํ ์ง ์ค๊ณํด์ผ ํฉ๋๋ค. ๋ํ ์ธ์ฆ ์๋ฒ์์ ์ธ์ฆ์ ์ฑ๊ณต์ ์ผ๋ก ์ํํ๋ค๋ "์ฆ๊ฑฐ"๋ฅผ ๋ค๋ฅธ ์๋น์ค๋ค์ด ์ด๋ป๊ฒ ๋ฐ์๋ค์ผ ๊ฒ์ธ์ง์ ๋ํ ๊ธฐ์ ์ ๊ณ ๋ฏผ๋ ํ์ํฉ๋๋ค.
๊ธฐ์
๋ด ์๋ฃจ์
์์ SSO๋ ์ ํต์ ์ผ๋ก ๋ชจ๋ ์ฌ์ฉ์(์ฌ์)์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ AD(Active Directory)๋ LDAP(Lightweight Directory Access Protocol)์ ์ ์ฉํ ์๋ฃจ์
๋ค์ ๋ง์ด ์ฌ์ฉํด์์ต๋๋ค.
SSO์ ์ง์ ์ ์ธ ๊ตฌํ์ ์ํด์๋ ์์์ ์ธ๊ธํ๋ ๋๋ก ๋ ๊ฐ์ง์ ๋ฐฉ๋ฒ ์์ง๋ง ์ ๋ SSO์ ์ธ์ฆ ์ ๋ณด ์ ๋ฌ๋ชจ๋ธ(Propagation)์ ์ธ์ฆ ํ ํฐ(authentication token)์ ์ฌ์ฉํ SSO ๋ฐฉ์์ ๋ํด ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์ ํ ํฐ์ ์ต์ด ์ธ์ฆ์ด ์ฑ๊ณตํ ์ฌ์ฉ์์๊ฒ ์ผ์ข
์ ์ฆ๊ฑฐ๋ก ์ธ์ฆ ์๋ฒ๊ฐ ๋ฐ๊ธํ๋ ์ ๋ณด๋ฉฐ, ์ต๊ทผ์๋ RestAPI ๋ฐฉ์์ผ๋ก ํต์ ํ๋ ์ถ์ธ ์ด๋ฉฐ ์ด๋ JWT ํ ํฐ์ ์ฃผ๋ก ์ด์ฉํฉ๋๋ค.
์์ ์ ์น ๊ฐ๋ฐ์์๋ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ ์ฌ์ฉ์๋ ์น ์๋ฒ์ Session์ ๋งบ๊ณ , Session ID ์ ๋ณด๋ฅผ ์ฟ ํค๋ก ๋ฐ์, ๊ทธ ์ฟ ๊ธฐ๋ฅผ ๋ก๊ทธ์ธ์ ์ฆ๊ฑฐ๋ก ์ฌ์ฉํ์ต๋๋ค. ๋ชจ๋ ์์ฒญ๋ง๋ค ํค๋์ Session ID ์ฟ ํค๋ฅผ ๋ฃ๊ณ ์น ์๋ฒ์ ์ ์์ ํ๊ฒ ๋๋ฉด, ์น ์๋ฒ๋ ์๋ฒ์ ๋ณด๊ด๋์ด ์๋ Session ์ ๋ณด์ ๋น๊ตํ์ฌ ์ ํจํ๊ฒ ๋ก๊ทธ์ธํ ์ฌ์ฉ์์์ ํ์ธํ๊ณ ์ฝํ
์ธ ๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ์์ด์์ต๋๋ค. ํ์ง๋ง ์ด ์ธ์
๋ฐฉ์์ ๊ฒฝ์ฐ ๋งค๋ฒ ์์ฒญ๋ง๋ค ์๋ฒ๊ฐ Session ์ ๋ณด๋ฅผ ํ์ธํด์ผ ํ๋ ๋ถ๋ด๊ณผ, ์ธ์
์ ์ฅ์ ์ฌ์ฉ์ผ๋ก ์ธํ ์๋ฒ ๋ถํ๊ฐ ๋ฌธ์ ๊ฐ ๋์์ต๋๋ค.(์ ํฌ ํ์ฌ๋ ์ธ์
์ ์ฌ์ฉํฉ๋๋ค.)
์ด์ ๋ฐํด ํ ํฐ ๋ฐฉ์์ ๊ฒฝ์ฐ๋ ์ธ์ฆ์ ์ํ ๋ณ๋์ ์ ์ฅ์๊ฐ ํ์ ์๊ณ , ๋ณ๋์ I/O ์์
์๋ ๋น ๋ฅธ ์ธ์ฆ์ฒ๋ฆฌ์ ๋๋ถ์ด ํ์ฅ์ฑ์ด ์ฐ์ํฉ๋๋ค. ํ์ฌ ์ต์ B2C ๊ธฐ์
๋ค์ ์ ๋ถ ํ ํฐ ์ธ์ฆ ๋ฐฉ์์ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์ ์ธ์
๊ณผ ํ ํฐ์ ์ฐจ์ด์ ์ ๋ํด ๋ ์์ธํ ์๊ณ ์ถ์ผ์ ๋ถ๋ค์ "ํ ํฐ vs ์ธ์
"์ด๋ผ๋ ํค์๋๋ก ์์น ํ์๋ฉด ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ป์ผ์ค ์ ์์ ๊ฒ๋๋ค.
๋ง๋ฌด๋ฆฌ
์ฌ๋ด๋ง ํฌํธ์ ์ ์ ๊ณผ์ ์ ๋ํด ์ดํด๋ณด๋ค๊ฐ AD์ SSO๋ผ๋ ์ฉ์ด๊ฐ ๋์์ ์ ๋ฆฌํ๊ฒ ๋์์ต๋๋ค. ์ฌ์ค ์ง๊ธ๊น์ง๋ ํ ํฐ์ ์ด์ฉํ๋ฉด ํ ๋ฒ์ ๋ก๊ทธ์ธ์ผ๋ก ๋ค์ํ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋ ํตํฉ์ธ์ฆ ๋ฐฉ์์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๋น์ฐํ ๊ฒ์ด๊ธฐ์ ์ด๋ ๊ฒ๊น์ง ํตํฉ์ธ์ฆ์ ์ ์ํ๋ ์ฉ์ด๋ฅผ ์๊ฐํด๋ณด๋ ค๋ ์๋๋ ํด๋ณด์ง ์์๊ธฐ์ ์กฐ๊ธ ์์ํ๋ฉด์๋ ์๋ฏธ ์๋ ์ ๋ฆฌ์๊ฐ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค.
'BackEnd๐ฑ > Etc' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring Boot + GitHub Actions + AWS CodeDeploy๋ฅผ ํ์ฉํ CI/CD ๊ตฌ์ถ (9) | 2022.12.04 |
---|---|
[GitHub] README.md์ ๋ธ๋ก๊ทธ ์ต์ ๊ธ ๊ฐ์ ธ์ค๊ธฐ (18) | 2022.08.29 |
CORS(๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ )๋? (0) | 2022.07.14 |
[GitHub] submodule ์ฌ์ฉํด์ yml๊ณผ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด ์จ๊ธฐ๊ธฐ (2) | 2022.07.10 |
Sourcetree "permission denied (publickey)" error ํด๊ฒฐ (0) | 2022.07.06 |
[git] Git - HEAD (2) | 2022.07.03 |
๋๊ธ