๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
BackEnd๐ŸŒฑ/Etc

SSO(Single Sign-On) ํ†ตํ•ฉ์ธ์ฆ ์ด๋ž€?

by dkswnkk 2022. 7. 13.

์„œ๋ก 

ํ˜„์žฌ ์ผํ•˜๊ณ  ์žˆ๋Š” ๊ณณ์—์„œ๋Š” ๋‚ด๋ถ€๋ง์—์„œ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ๋“ค์„ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•œ ์ ์€ ํ•œ ๋ฒˆ์˜ ๋กœ๊ทธ์ธ์œผ๋กœ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ์‹œ์Šคํ…œ์„ ์žฌ ๋กœ๊ทธ์ธ ์—†์ด ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ธ SSO(Single Sign On) ์ธ์ฆ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
์ด๋ฒˆ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” ์ด๋Ÿฌํ•œ SSO(Single Sign On)์— ๋Œ€ํ•ด์„œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

SSO๋ž€?

SSO๋Š” Single-Sign-On์˜ ์•ฝ์ž๋กœ ํ•œ ๋ฒˆ์˜ ๋กœ๊ทธ์ธ์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‚ฌ์ดํŠธ๋“ค์„ ์žฌ ๋กœ๊ทธ์ธ ์—†์ด ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•˜๋ฉฐ, ํ†ตํ•ฉ์ธ์ฆ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

SSO๊ฐ€ ์•„๋‹Œ ๋ฐฉ์‹

์œ„ ์ด๋ฏธ์ง€๋Š” SSO๊ฐ€ ์•„๋‹Œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์€ ์„œ๋กœ ๊ฐ๊ฐ์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐฉ์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์นด์นด์˜คํ†ก ๋กœ๊ทธ์ธ์„ ํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ํŽ˜์ด์Šค๋ถ์„ ์ถ”๊ฐ€์ ์ธ ๋กœ๊ทธ์ธ ์—†์ด ์ด์šฉํ•  ์ˆ˜ ์—†๊ณ , ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ gmail๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.
๋งŒ์•ฝ ๋™์ผ ํšŒ์‚ฌ์—์„œ ์„œ๋น„์Šคํ•˜๋Š” ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งค ์„œ๋น„์Šค๋งˆ๋‹ค ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค๋ฉด, ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์ž…์žฅ์—์„œ๋„ ์ถ”๊ฐ€์ ์ธ ๊ตฌํ˜„์ด ๋“ค์–ด๊ฐ€์•ผ ํ•˜๊ณ , ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋„ ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋งˆ๋‹ค ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

SSO ๋ฐฉ์‹

์œ„ ์ด๋ฏธ์ง€๋Š” 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)

์ธ์ฆ ๋Œ€ํ–‰ ๋ชจ๋ธ(Delegation)

  1. SSO ์—์ด์ „ํŠธ๊ฐ€ ์ธ์ฆ์„ ๋Œ€ํ–‰ํ•˜๋Š” ๋ฐฉ์‹
  2. ๋Œ€์ƒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ธ์ฆ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ค์šธ ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ
  3. ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ •๋ณด๋ฅผ SSO ์—์ด์ „ํŠธ๊ฐ€ ๊ด€๋ฆฌํ•˜๋ฉฐ ๋กœ๊ทธ์ธ ๋Œ€์‹  ์ˆ˜ํ–‰

2) ์ธ์ฆ ์ •๋ณด ์ „๋‹ฌ ๋ชจ๋ธ(Propagation)

์ธ์ฆ ์ •๋ณด ์ „๋‹ฌ ๋ชจ๋ธ(Propagation)

  1. SSO์—์„œ ์ธ์ฆ์„ ์ˆ˜ํ–‰, ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๊ณ  ์ „๋‹ฌํ•˜์—ฌ ์ธ์ฆ ์ˆ˜ํ–‰
  2. SSO์—์„œ ์ธ์ฆ์„ ๋ฐ›์•„ ๋Œ€์ƒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ „๋‹ฌํ•  ํ† ํฐ ์ƒ์„ฑ
  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ 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๋ผ๋Š” ์šฉ์–ด๊ฐ€ ๋‚˜์™€์„œ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ง€๊ธˆ๊นŒ์ง€๋Š” ํ† ํฐ์„ ์ด์šฉํ•˜๋ฉด ํ•œ ๋ฒˆ์˜ ๋กœ๊ทธ์ธ์œผ๋กœ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ•ฉ์ธ์ฆ ๋ฐฉ์‹์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์€ ๋‹น์—ฐํ•œ ๊ฒƒ์ด๊ธฐ์— ์ด๋ ‡๊ฒŒ๊นŒ์ง€ ํ†ตํ•ฉ์ธ์ฆ์„ ์ •์˜ํ•˜๋Š” ์šฉ์–ด๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ ค๋Š” ์‹œ๋„๋Š” ํ•ด๋ณด์ง€ ์•Š์•˜๊ธฐ์— ์กฐ๊ธˆ ์ƒ์†Œํ•˜๋ฉด์„œ๋„ ์˜๋ฏธ ์žˆ๋Š” ์ •๋ฆฌ์‹œ๊ฐ„์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€