๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป ํ”„๋กœ์ ํŠธ/๐Ÿ‘‘ VIP ์ดˆ๋Œ€์žฅ ๐Ÿ’Œ

[Spring, React] Keycloak์„ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์ „, ๋ฌด์—‡์„ ํ•  ์ง€ ๊ตฌ์กฐ ์„ค๊ณ„ํ•˜๊ธฐ.

by ._.sori 2026. 3. 24.
์ง€๊ธˆ ํ•ด์•ผํ•  ๊ฒƒ๋“ค์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์žˆ๋‹ค.
DB๋„ ๋งŒ๋“ค์–ด์•ผํ•˜๊ณ , keycloak๋„ ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค.
๊ณผ์—ฐ ๋ญ๋ถ€ํ„ฐ ํ•˜๋Š”๊ฒŒ ์ข‹์„๊นŒ?

 

 

 

1. ํ˜„์žฌ ์ƒํ™ฉ ์ ๊ฒ€

  • ์ผ๋ฐ˜๊ด€๋ฆฌ์ž ๋กœ๊ทธ์ธ ํ™”๋ฉด
    VIP ๋“ฑ๊ธ‰ ์ด์ƒ์ธ ๊ณ ๊ฐ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ๊ฐ ๊ด€๋ฆฌํŽ˜์ด์ง€๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์ „, ๊ด€๋ฆฌ์ž๋Š” ๋กœ๊ทธ์ธ์„ ํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ๋กœ๊ทธ์ธ ์ฐฝ์„ ๋งŒ๋“ค์—ˆ๋‹ค. ์ผ๋ฐ˜ ๊ด€๋ฆฌ์ž๋Š” ์ตœ๊ณ  ๊ด€๋ฆฌ์ž๊ฐ€ ๋ถ€์—ฌํ•œ ๊ถŒํ•œ์— ๋งž์ถฐ ๊ณ ๊ฐ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ตœ๊ณ  ๊ด€๋ฆฌ์ž๊ฐ€ ์ผ๋ฐ˜ ๊ด€๋ฆฌ์ž์ธ 'ํ‹ฐ์Šคํ† ๋ฆฌ'์—๊ฒŒ '๊ฒ€์ƒ‰'์˜ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌํ–ˆ๋‹ค๋ฉด ์ผ๋ฐ˜๊ด€๋ฆฌ์ž 'ํ‹ฐ์Šคํ† ๋ฆฌ'๋Š” ๊ณ ๊ฐ ๊ด€๋ฆฌ ํŽ˜์ด์ง€ ๋‚ด์—์„œ '๊ฒ€์ƒ‰'๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

  • ์ตœ๊ณ  ๊ด€๋ฆฌ์ž ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€
    ์ตœ๊ณ  ๊ด€๋ฆฌ์ž๋Š” ์ผ๋ฐ˜ ๊ด€๋ฆฌ์ž์˜ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ด€๋ฆฌ์ž ์„ค์ • ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค. ์ง€๊ธˆ์€ ํ”„๋ก ํŠธ์—”๋“œ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•ด ์ž…๋ ฅํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋งž์œผ๋ฉด ๊ด€๋ฆฌ์ž๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŽ˜์ด์ง€๋กœ ๋“ค์–ด๊ฐ€๋„๋ก ๋งŒ๋“ค์—ˆ์ง€๋งŒ ์ดํ›„์— ์ด๋ถ€๋ถ„๋„ ๊ณ ์น  ๊ฒƒ์ด๋‹ค.

 

 

  • ์ผ๋ฐ˜ ๊ด€๋ฆฌ์ž๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŽ˜์ด์ง€
    ์ถ”๊ฐ€, ๊ฒ€์ƒ‰, ์ˆ˜์ •, ์‚ญ์ œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์•„์ง ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„์„œ ์‹ค์ œ๋กœ ์ˆ˜์ •, ์‚ญ์ œ ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ํ™•์ธํ•˜๊ธด ์–ด๋ ต๋‹ค. ๊ตฌ์กฐ๋ฅผ ์žก๊ณ  ๋‚˜๋ฉด ์ฒซ๋ฒˆ์งธ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ถ”๊ฐ€, ๊ฒ€์ƒ‰, ์ˆ˜์ •, ์‚ญ์ œ ๊ธฐ๋Šฅ์ด ์ œ๋Œ€๋กœ ๋˜๋Š”์ง€ ํ™•์ธํ•  ๊ฒƒ์ด๋‹ค.

 

 

 

 

 


 

 

 

 

2. ๊ถŒํ•œ ๊ตฌ์กฐ ์„ค์ •ํ•˜๊ธฐ

  • ์ตœ๊ณ ๊ด€๋ฆฌ์ž๋Š” SUPER_ADMIN์œผ๋กœ ์ผ๋ฐ˜๊ด€๋ฆฌ์ž๋Š” ADMIN์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
  • ๊ถŒํ•œ์€ CUSTOMER_READ(์•„๋ฌด ๊ถŒํ•œ๋„ ๋ชป๋ฐ›์•„์„œ ๋ณด๊ธฐ๋งŒ ํ•  ์ˆ˜ ์žˆ์Œ), CUSTOMER_ADD(๊ณ ๊ฐ ์ •๋ณด ์ถ”๊ฐ€), CUSTOMER_EDIT(๊ณ ๊ฐ ์ •๋ณด ์ˆ˜์ •), CUSTOMER_DELETE(๊ณ ๊ฐ ์ •๋ณด ์‚ญ์ œ), CUSTOMER_SEARCH(๊ณ ๊ฐ ์ •๋ณด ๊ฒ€์ƒ‰)์ด ์žˆ๋‹ค.
  • Keycloak์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…ํ–ˆ์„๋•Œ, Realm Level์ด ์žˆ์—ˆ๊ณ  Client Level์ด ์žˆ์—ˆ๋‹ค. ์ž‘์€ ํ”„๋กœ์ ํŠธ๋ผ์„œ Realm Level๋กœ ๋‹ค๋ฃจ์ง€ ์•Š์„๊นŒ ์‹ถ๋‹ค.
  • Keycloak์—์„œ๋Š” SUPER_ADMIN์ธ์ง€, ADMIN์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๋„๋ก ํ•˜๊ณ  ๊ถŒํ•œ ๋ถ€์—ฌ๋Š” MySQL์—์„œ ์„ค์ •ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค. ์›๋ž˜๋Š” ๊ถŒํ•œ๊นŒ์ง€๋„ Keycloak์—์„œ ํ•  ์ˆ˜ ์žˆ์„ ์ค„ ์•Œ์•˜๋Š”๋ฐ, ์ง€๊ธˆ ํ•˜๊ณ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ณ ๊ฐ ๊ด€๋ฆฌ์™€ ์—ฐ๊ด€๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์—์„œ Keycloak๋ณด๋‹ค MySQL์„ ํ†ตํ•ด ๊ถŒํ•œ์„ ์ €์žฅํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๋Š”๊ฒŒ ๋งž์„ ๊ฒƒ ๊ฐ™๋‹ค.