์ธ์ฆ ์ด ์ •๋ฆฌ :: 3. SSO ์ธ์ฆ ๋ฐ ์ด ์ •๋ฆฌ
์›น (WEB)/๊ณต๋ถ€ 2022. 3. 15. 22:17

SSO SSO(Single Sign On)๋Š” ํ•œ ๋ฒˆ์˜ ๋กœ๊ทธ์ธ์œผ๋กœ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ•ฉ ์ธ์ฆ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ ๋•Œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด SSO๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. SSO๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐ€์ง€ ํŒจํ„ด์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. ์ธ์ฆ gateway ๋ฐฉ์‹ ๊ฐ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ๋•Œ ์ด์ „ ๋ ˆ์ด์–ด์— ํ†ตํ•ฉ ์ธ์ฆ ์„œ๋น„์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. User๋Š” SessionID๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ํ†ตํ•ฉ ์ธ์ฆ ์„œ๋น„์Šค๋ฅผ ํ†ต๊ณผํ•˜๋ฉด ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์˜ ๋‹จ์ ์€ ๊ฐ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ๋งˆ๋‹ค ์ธ์ฆ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•˜๋ฉฐ ์ธ์ฆ ์„œ๋น„์Šค ์ž์ฒด๊ฐ€ bottle neck์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 2. ์ธ์ฆ ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐฉ์‹ ์œ ์ €๋Š” ์šฐ์„  ํ†ตํ•ฉ ์ธ์ฆ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ํ† ํฐ์ด๋ผ๋Š” ์ธ์ฆ ๋Œ€ํ–‰ ๋งค์ฒด..

์ธ์ฆ ์ด ์ •๋ฆฌ :: 1. ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” Auth Flow Best Case (feat. OpenIDC)
์›น (WEB)/๊ณต๋ถ€ 2022. 3. 15. 21:59

์ธ์ฆ Best Case ๊ธฐ๋ณธ flow (OpenIDC) Best Case๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ธ์ฆ flow(OpenIDC)๋ฅผ ๋จผ์ € ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ €, Auth Service๊ฐ€ ํƒ€ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹Œ ์ž์‚ฌ์˜ ์„œ๋น„์Šค์ผ ๋•Œ๋Š” OAuth ๊ธฐ๋ฐ˜์˜ flow๊ฐ€ ํ•„์š”์—†์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์ด ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค. (ํƒ€ ์„œ๋น„์Šค์ผ ๊ฒฝ์šฐ OAuth ๋ณด๊ธฐ) Client๊ฐ€ id(username)์™€ password๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ์š”์ฒญ์€ BFF → Server → Auth Service๋กœ ์ „ํ•ด์ง‘๋‹ˆ๋‹ค. ์ „๋‹ฌ๋œ id์™€ password๋กœ Auth Service์—์„œ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์— ์„ฑ๊ณตํ•˜๋ฉด access token, refresh token, id token ๋ฅผ Server๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. Server๋Š” id token ์„ d..

์ธ์ฆ ๋ฐฉ์‹ :: ๊ธฐ๋ณธ ์ธ์ฆ ์›๋ฆฌ๋ถ€ํ„ฐ MSA ์ธ์ฆ๊นŒ์ง€
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 22. 08:54

์ธ์ฆ ๋ฐฉ์‹ 1. API key๋ฅผ ํ†ตํ•œ ์ธ์ฆ ๊ณผ์ • user๊ฐ€ login ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. Client๋Š” ์ด๋ฏธ Server์— ๋“ฑ๋กํ•œ API key๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Client๋Š” user๊ฐ€ ์ž…๋ ฅํ•œ Login ์ •๋ณด๋ฅผ ๋ฐ›์•„์„œ API key์™€ ํ•จ๊ป˜ Login API๋ฅผ ์š”์ฒญํ•œ๋‹ค. Server๋Š” API key๋ฅผ ํ†ตํ•ด ํ•ด๋‹น Client๊ฐ€ ๋“ฑ๋ก๋˜์–ด์žˆ๋Š” ์ง€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค. Sever๋Š” Login ์ •๋ณด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น User๊ฐ€ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค. ๋‹จ์  API key๋Š” ๋ชจ๋“  Client๋“ค์ด ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ์ถœ๋˜๋ฉด ์ „์ฒด API๊ฐ€ ๋…ธ์ถœ๋œ๋‹ค. API key๋Š” ์‹œ๊ฐ„์ด ๋ฌด์ œํ•œ์ด๊ณ  ํ•œ ๋ฒˆ ๋…ธ์ถœ๋˜๋ฉด API key ๋ณ€๊ฒฝ ์ „๊นŒ์ง€ ๊ณ„์† ๋…ธ์ถœ๋œ๋‹ค. 2. API Token์„ ํ†ตํ•œ ์ธ์ฆ ๊ณผ์ • user๊ฐ€ login ์ •๋ณด๋ฅผ ์ž…..

Refresh Token
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 22. 08:36

Refresh token์˜ ์žฅ์  ๋ณธ์ธ์€ ์›๋ž˜ API ์š”์ฒญ ์‹œ ๋งค๋ฒˆ Access Token์„ ๋ฐœ๊ธ‰ํ•˜๋Š” ์‹์œผ๋กœ API๋ฅผ ๊ตฌ์„ฑํ•˜์˜€๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์งˆ ์ˆ˜๋ก ์‹œ์Šคํ…œ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Refresh Token์„ ๋ฐœ๊ธ‰ํ•˜๋Š” ๊ฒƒ์ด ๋‚ซ๋‹ค. ๋˜ํ•œ, refresh token์ด ์žˆ์„ ๊ฒฝ์šฐ access token์˜ ์œ ํšจ ์‹œ๊ฐ„์„ ์งง๊ฒŒ ํ•˜์—ฌ ํƒˆ์ทจ ์‹œ ๋น ๋ฅด๊ฒŒ ๋ฌดํšจํ™” ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. Refresh token์˜ ๋™์ž‘ Access Token์„ ํ†ตํ•ด User๊ฐ€ request๋ฅผ ๋ณด๋‚ด๊ณ , ์œ ํšจ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ ๋˜์—ˆ๋‹ค๋Š” ์‘๋‹ต์„ ๋ฐ›๋Š”๋‹ค. User๋Š” Access Token๊ณ  ํ•จ๊ป˜ Refresh Token์„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ๋‹ค. Refresh Token์ด ์œ ํšจํ•˜๋‹ค๋ฉด ์œ ํšจ์‹œ๊ฐ„์ด ๊ฐฑ์‹ ๋œ Access Token์ด ์ƒˆ๋กœ ๋ฐœ๊ธ‰๋˜์–ด User..

OAuth 2.0
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 22. 08:32

๊ฐœ๋… ์ •๋ฆฌ ๋‚ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ Client, ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ Resource Server, ๋‘ ์„œ๋น„์Šค๋ฅผ ๋ชจ๋‘ ์ด์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ Resource Owner๋ผ๊ณ  ์ •์˜ํ•œ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ Resource Server์—์„œ ์ธ์ฆ์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ๋”ฐ๋กœ Authorization Server๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์—ฐํ•ฉํ•ด์„œ ์ธ์ฆ์ฒด๊ณ„๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ federated Identity๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋ฐฐ๊ฒฝ Client๊ฐ€ Resource Server(google, facebook ๋“ฑ)์— ์žˆ๋Š” Resource Owner์˜ ๊ณ„์ •์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ? Resource Server์— ๋Œ€ํ•œ Resource Owner์˜ id, pw๋ฅผ ์ œ๊ณต๋ฐ›์œผ๋ฉด ๋” ์ข‹๊ฒ ์ง€๋งŒ ๋ณด์•ˆ ์‹ ๋ขฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ oAuth๊ฐ€ ๋‚˜์™”๋‹ค. oAuth๋ฅผ ..