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

[Spring, React] Keycloak์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ์‚ฌ์šฉ ์ „ ์•Œ์•„์•ผํ•  ๊ฐœ๋… ์ •๋ฆฌ

by ._.sori 2026. 3. 19.

 

 

๊ด€๋ฆฌ์ž๋ฅผ ์„ค์ •ํ•˜๋Š” ์ตœ๊ณ ๊ด€๋ฆฌ์ž์™€
์ผ๋ฐ˜ ๊ณ ๊ฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ผ๋ฐ˜๊ด€๋ฆฌ์ž๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋ ค ํ•œ๋‹ค.
์ด๋•Œ ์ด ๋ถ„๋ฅ˜๋ฅผ keycloak์œผ๋กœ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.
keycloak์ด ๋ฌด์—‡์ด๋ฉฐ, ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด์ž.


 

 

 

1. Keycloak์˜ ๊ธฐ๋Šฅ

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋กœ๊ทธ์ธ ์–‘์‹์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†์ด Keycloak์„ ํ†ตํ•ด ์ธ์ฆํ•œ๋‹ค.
  • Single Sign-On : Keycloak์— ํ•œ ๋ฒˆ ๋กœ๊ทธ์ธํ•˜๋ฉด ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘์†ํ•  ๋•Œ ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ๊ฐ๊ฐ ๋กœ๊ทธ์ธ ํ•  ํ•„์š”๊ฐ€ ์—†์ด ํ•œ ๋ฒˆ์˜ ์ธ์ฆ์ด๋ฉด ๋ชจ๋“  ์—ฐ๊ฒฐ๋œ ์•ฑ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ธฐ๋Šฅ์€ ๋กœ๊ทธ์•„์›ƒ๋„ ๊ทธ๋Œ€๋กœ ์ ์šฉ๋œ๋‹ค.
  • Identity Brokering and Social Login : ์ž์ฒด ๊ณ„์ • ์™ธ์— ์™ธ๋ถ€ ์ธ์ฆ ์‹œ์Šคํ…œ์„ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์˜ˆ์‹œ๋กœ ์†Œ์…œ ๋กœ๊ทธ์ธ(OIDC Brokering)์ด ์žˆ๋‹ค. ๊ตฌ๊ธ€, ๊นƒํ—ˆ๋ธŒ, ํŽ˜์ด์Šค๋ถ ๋“ฑ์˜ ๊ณ„์ •์œผ๋กœ ๊ฐ„ํŽธ ๋กœ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • User Federation: ๊ธฐ์กด์— ์šด์˜ ์ค‘์ธ ์‚ฌ์šฉ์ž DB๊ฐ€ ์žˆ๋‹ค๋ฉด Keycloak์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค. LDAP/Active Directory ์—ฐ๋™์€ ๊ธฐ์—… ๋‚ด ๊ธฐ์กด ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ์ปค์Šคํ…€ DB ์—ฐ๋™์€ ์ž์ฒด ๊ฐœ๋ฐœํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(MySQL, PostgreSQL ๋“ฑ)์— ์žˆ๋Š” ์œ ์ € ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Admin Console : ๊ด€๋ฆฌ์ž๋Š” ๊ด€๋ฆฌ ์ฝ˜์†”์„ ํ†ตํ•ด Keycloak ์„œ๋ฒ„์˜ ๋ชจ๋“  ์ธก๋ฉด์„ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•œ๋‹ค. Realm, ํด๋ผ์ด์–ธํŠธ, ์—ญํ• , ๊ถŒํ•œ, ์„ธ์…˜ ๋“ฑ์„ ์ค‘์•™์—์„œ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„์ฃผ ์„ธ๋ถ€์ ์ด๊ฒŒ ๊ถŒํ•œ ๋ถ€์—ฌ ์ •์ฑ…์„ ์ •์˜ํ•˜๋ฉฐ ๊ถŒํ•œ ๋ฐ ์„ธ์…˜์„ ํฌํ•จํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Account Management Console : ์‚ฌ์šฉ์ž๋“ค์€ ๊ณ„์ • ๊ด€๋ฆฌ ์ฝ˜์†”์„ ํ†ตํ•ด ์ž์‹ ์˜ ๊ณ„์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœํ•„์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ , 2๋‹จ๊ณ„ ์ธ์ฆ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์†Œ์…œ ๋กœ๊ทธ์ธ์ด๋‚˜ ID ๋ธŒ๋กœ์ปค๋ง์„ ํ™œ์„ฑํ™”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๋Š” ๊ณ„์ •์„ ์ถ”๊ฐ€ ์ œ๊ณต์—…์ฒด์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ID ์ œ๊ณต์—…์ฒด๋ฅผ ํ†ตํ•ด ๋™์ผํ•œ ๊ณ„์ •์„ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Brute Force(๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ) ๋ฐฉ์ง€ : ์ผ์ • ํšŸ์ˆ˜ ์ด์ƒ ๋กœ๊ทธ์ธ ์‹คํŒจ ์‹œ ๊ณ„์ • ์ž ๊ธˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
  • Authorization Services : Keycloak์€ ์„ธ๋ถ„ํ™˜๋œ ๊ถŒํ•œ ๋ถ€์—ฌ ์„œ๋น„์Šค๋„ ์ œ๊ณตํ•œ๋‹ค. ๋‹จ์ˆœํžˆ ๋กœ๊ทธ์ธ์„ ๋„˜์–ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ์—ญํ•  ๊ธฐ๋ฐ˜ ๊ถŒํ•œ ๊ด€๋ฆฌ๋„ ์žˆ๊ณ  ์ด๊ฒƒ๋ณด๋‹ค ๋” ๋ณต์žกํ•˜๊ณ  ์„ธ๋ฐ€ํ•œ ๊ถŒํ•œ ์ •์ฑ…์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • SAML 2.0 ์ง€์› : SAML์€ ์ฃผ๋กœ ๊ธฐ์—… ํ™˜๊ฒฝ์—์„œ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์–ด ์˜จ SSO ํ‘œ์ค€์ด๋‹ค. Keycloak์ด SAML์„ ์ง€์›ํ•˜๋Š” ์ด์œ ๋Š” OIDC ์ด์ „์— ๊ตฌ์ถ•๋œ ์˜ค๋ž˜๋œ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์ด๋‚˜, ํƒ€์‚ฌ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์†”๋ฃจ์…˜๊ณผ์˜ ์—ฐ๋™์ด ๋งค์šฐ ์šฉ์ดํ•˜๋‹ค๋Š” ๋œป์ด๋‹ค. ์ตœ์‹  ๊ธฐ์ˆ ๋ถ€ํ„ฐ ์ „ํ†ต์ ์ธ ๊ธฐ์ˆ ๊นŒ์ง€ ๋ชจ๋‘ ์•„์šฐ๋ฅด๋Š” ๊ฐ•๋ ฅํ•œ ํ˜ธํ™˜์„ฑ์„ ์ž๋ž‘ํ•œ๋‹ค.


Q. OIDC์™€ LDAP/Active Directory๋Š” ๋ฌด์—‡์ผ๊นŒ?

A. OIDC๋Š” OpenID Connect์˜ ์ค„์ž„๋ง๋กœ OAuth 2.0 ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€ ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์‚ฌ์šฉ์ž ID๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  IDํ† ํฐ(JWT ํ˜•์‹, JWT๋Š” ์ธ์ฆ์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ JSON ๊ฐ์ฒด์— ๋‹ด์•„ ์ด๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์ผ์ข…์˜ ๋””์ง€ํ„ธ ์‹ ๋ถ„์ฆ์ด๋‹ค.)์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค. ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ์–ด๋–ป๊ฒŒ ์•ˆ์ „ํ•˜๊ฒŒ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„์ง€์— ๋Œ€ํ•œ ํ‘œ์ค€ ์•ฝ์†์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฃผ๋กœ ์†Œ์…œ ๋กœ๊ทธ์ธ์ด OIDC๋ฅผ ์ง€ํ‚จ๋‹ค.

LDAP/Active Directory๋Š” ๊ธฐ์—… ๋‚ด๋ถ€ ์„œ๋ฒ„์— ์„ค์น˜๋œ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ผ์ข…์ด๋‹ค. Active Directory(AD)๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ๋งŒ๋“  ์ œํ’ˆ ์ด๋ฆ„์ด๋‹ค. ์ „ ์„ธ๊ณ„ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์—…์ด ์‚ฌ๋‚ด PC ๋กœ๊ทธ์ธ, ์ด๋ฉ”์ผ, ๊ถŒํ•œ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. LDAP๋Š” AD ๊ฐ™์€ ์‹œ์Šคํ…œ๊ณผ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ „์šฉ ์–ธ์–ด์ด์ž ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ์—…์—์„œ AD๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๋ง์€, ์ง์› ์ •๋ณด๋Š” MS์˜ AD ์„œ๋ฒ„์— ๋‹ค ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

OIDC๋Š” ์ธ์ฆ ์œ„์ž„์œผ๋กœ ์ด ์‚ฌ๋žŒ์ด ๋ณธ์ธ์ธ์ง€ ํ™•์ธํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  LDAP/AD๋Š” ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋กœ ์œ ์ €์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

Q. ID ๋ธŒ๋กœ์ปค๋ง์€ ๋ฌด์—‡์ผ๊นŒ?

A. ID ๋ธŒ๋กœ์ปค๋ง์€ Identity Brokering์œผ๋กœ ์‰ฝ๊ฒŒ ๋งํ•ด์„œ Keycloak์ด ์ค‘๊ฐ„ ์ค‘๊ฐœ์ธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค์— ๋กœ๊ทธ์ธํ•˜๋ ค๊ณ  ํ•  ๋•Œ, Keycloak์ด ์ง์ ‘ ์•„์ด๋””/๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๋Œ€์‹  ๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ ๋“ฑ ๋‹ค๋ฅธ ํšŒ์‚ฌ์˜ ์ธ์ฆ ์„œ๋ฒ„์— ์ด ์‚ฌ๋žŒ์ด ๋งž๋Š”์ง€ ํ™•์ธํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ์„ ๋„˜๊ธฐ๋Š” ๋ฐฉ์‹์ด๋‹ค.

์†Œ์…œ ๋กœ๊ทธ์ธ ๊ณผ์ •์ด ID ๋ธŒ๋กœ์ปค๋ง์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ [Google๋กœ ๋กœ๊ทธ์ธ] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด๋•Œ ์‚ฌ์šฉ์ž๋ฅผ Google ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•˜๋Š”๋ฐ ์ด๊ฒŒ Keycloak ๋ธŒ๋กœ์ปค๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

 

 

- keycloak

 

Keycloak

Keycloak - the open source identity and access management solution. Add single-sign-on and authentication to applications and secure services with minimum effort.

www.keycloak.org

 

 

 

 

 


 

 

 

 

2. Keycloak์˜ ํ•ต์‹ฌ ์šฉ์–ด

  • Realm(๋ ๋ฆ„)
    ๊ฐ€์žฅ ํฌ๊ณ  ๋…๋ฆฝ์ ์ธ ๊ด€๋ฆฌ ๋‹จ์œ„์ด๋‹ค. Keycloak ์„œ๋ฒ„ ๋‚ด๋ถ€์— ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝ๋œ ๊ฐ€์ƒ ๊ณต๊ฐ„ ๋˜๋Š” ํ…Œ๋„ŒํŠธ(Tenant, ์ž„๋Œ€ ๊ณต๊ฐ„์— ์ž…์ ํ•œ ์ž„์ฐจ์ธ(๋งค์žฅ) ๋˜๋Š” ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ํ™˜๊ฒฝ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๋Š” ์‚ฌ์šฉ์ž/์กฐ์ง)๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค. ARealm๊ณผ BRealm์€ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋œ๋‹ค. ARealm์˜ ์‚ฌ์šฉ์ž๋Š” BRealm์— ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์„ค์ • ๋˜ํ•œ ๊ณต์œ ๋˜์ง€ ์•Š๋Š”๋‹ค. 
  • Client(ํด๋ผ์ด์–ธํŠธ)
    Keycloak์„ ํ†ตํ•ด ์ธ์ฆ/์ธ๊ฐ€๋ฅผ ๋ฐ›์œผ๋ ค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์„œ๋น„์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์‚ฌ์šฉ์ž(User)๊ฐ€ ์•„๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํšŒ์‚ฌ ์‡ผํ•‘๋ชฐ ์›น์‚ฌ์ดํŠธ, ์‡ผํ•‘๋ชฐ ๋ชจ๋ฐ”์ผ ์•ฑ, ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ๋ฐฑ์—”๋“œ API ๋“ฑ์ด ๋ชจ๋‘ ๊ฐ๊ฐ์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. 
  • User(์‚ฌ์šฉ์ž)
    Keycloak์— ๋กœ๊ทธ์ธ(์ธ์ฆ)์„ ์‹œ๋„ํ•˜๋Š” ์ฃผ์ฒด์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋žŒ์„ ์˜๋ฏธํ•˜๋ฉฐ ๊ฐ ์‚ฌ์šฉ์ž๋Š” ID, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ด๋ฉ”์ผ, ์ด๋ฆ„ ๋“ฑ์˜ ์†์„ฑ์„ ๊ฐ€์ง„๋‹ค.
  • Role(์—ญํ• )
    ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ ๋˜๋Š” ๊ผฌ๋ฆฌํ‘œ์ด๋‹ค. ์ธ๊ฐ€์˜ ํ•ต์‹ฌ ์š”์†Œ์ด๋‹ค. admin, manager, use, guest ๋“ฑ์ด ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ์ด๋‹ค. Realm Role์€ ํ•ด๋‹น Realm ์ „์—ญ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ณตํ†ต ์—ญํ• ์ด๋‹ค. Client Role์€ ํŠน์ • ํด๋ผ์ด์–ธํŠธ(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜) ๋‚ด์—์„œ๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ๋А ์—ญํ• ์ด๋‹ค.

 

- Keycloak์˜ ํ•ต์‹ฌ๊ฐœ๋…

 

[Keycloak] 1. Keycloak ์†Œ๊ฐœ์™€ ํ•ต์‹ฌ ๊ฐœ๋…

์•ˆ๋…•ํ•˜์„ธ์š”! IT ์ „๋ฌธ ๋ธ”๋กœ๊ฑฐ ํŒฌ๋Œํ”„์ž…๋‹ˆ๋‹ค. ๐Ÿค–๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง๊ณผ AI ์‹œ๋Œ€๋ฅผ ์‚ด์•„๊ฐ€๋ฉด์„œ ์šฐ๋ฆฌ๋Š” ์ˆ˜๋งŽ์€ ๋ฐ์ดํ„ฐ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ '์ธ์ฆ'๊ณผ '์ธ๊ฐ€'๋Š” ์‹œ์Šคํ…œ ๋ณด์•ˆ์˜

kjbg.tistory.com

 

 

 

 


 

 

 

 

 

3. Keycloak Role

  • Realm Level Roles
    ์ „์ฒด ์˜์—ญ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์—ญํ• ๋กœ, ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์— ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ƒ๊ด€์—†์ด ์‚ฌ์šฉ์ž์˜ ์‹ ๋ถ„์ด๋‚˜ ์ง๋ฌด๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ์‹œ๋กœ admin(์ „์ฒด ๊ด€๋ฆฌ์ž ๊ถŒํ•œ), user(์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๊ถŒํ•œ), manager(์ค‘๊ฐ„ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ) ๋“ฑ์ด ์žˆ๋‹ค. Realm Level Roles๋Š” ๊ด€๋ฆฌ์ž๋ผ๋Š” ์—ญํ• ์„ ํ•œ ๋ฒˆ๋งŒ ๋งŒ๋“ค์–ด๋‘๋ฉด ์–ด๋А ๊ณณ์—์„œ๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ํŽธ๋ฆฌํ•œ ๋ฉด์ด ์žˆ๋‹ค.  ์ด ์‚ฌ์šฉ์ž๋Š” ๋ˆ„๊ตฌ์ธ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๋А๋‚Œ
  • Client Level Roles
    ํŠน์ • ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ์—ญํ• ๋กœ, ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๋‹ค. ๊ฐ ํด๋ผ์ด์–ธํŠธ(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜) ์„ค์ • ๋‚ด์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์ •์˜๋˜๋ฉฐ, ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ ๋ฐ–์—์„œ๋Š” ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค. ์˜ˆ์‹œ๋กœ ๋ฐฐ๋‹ฌ์•ฑ์œผ๋กœ ๊ฐ€์ •ํ•ด๋ณด๊ฒ ๋‹ค. ์‹๋‹น ์ฃผ์ธ์€ restaurant-owner, ๋ฐฐ๋‹ฌ๋ถ€๋Š” delivery-boy๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. Client Level Roles๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ๊ด€๋ฆฌ๊ฐ€ ๊น”๋”ํ•˜๋‹ค. ์•ฑ์ด ๋งŽ์€ ๊ฒฝ์šฐ Realm์—์„œ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋ฉด ์ด๋ฆ„์ด ์ถฉ๋Œํ•˜๊ฑฐ๋‚˜ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฐ ์ ์„ ๋ฐฉ์ง€ํ•ด์ค€๋‹ค.  ์ด ์•ฑ์—์„œ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๋А๋‚Œ
  • Composite Roles
    ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—ญํ• ์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ๊ด€๋ฆฌํ•˜๋Š” ๋ณตํ•ฉ ์—ญํ• ๋กœ ์—ญํ•  ๊ด€๋ฆฌ์˜ ํšจ์œจ์„ฑ์„ ์ฆ๋Œ€ํ•œ๋‹ค. Relam Level Roles์—์„œ ์ ์šฉํ•œ ๋‚ด์šฉ๊ณผ Client Level Roles ๋‚ด์šฉ์„ ํ•ฉ์ณ ๋ณตํ•ฉ์ ์ธ ์—ญํ• ์„ ๋ถ€์—ฌํ•œ๋‹ค. ์˜ˆ์‹œ๋กœ super_admin์„ ๋งŒ๋“ค์–ด admin + manage + editor ๊ถŒํ•œ์„ ํฌํ•จ์‹œํ‚จ๋‹ค. ํ˜น์€ content_team์„ ๋งŒ๋“ค์–ด writer + editor + reviewer ๊ถŒํ•œ์„ ํฌํ•จ์‹œํ‚จ๋‹ค.

- keycloak์˜ Roles

 

[OpenSource] Keycloak ์ดํ•ดํ•˜๊ธฐ -4 : Keycloak ๊ถŒํ•œ ๋ฐ ์ข…๋ฅ˜

ํ•ด๋‹น ๊ธ€์—์„œ๋Š” Keycloak์˜ ๊ถŒํ•œ์— ๋Œ€ํ•ด์„œ ์ƒ์„ธํžˆ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.๐Ÿ’ก [์ฐธ๊ณ ] Keycloak ์ดˆ๊ธฐ ๊ตฌ์„ฑ์—์„œ๋ถ€ํ„ฐ ํ™œ์šฉ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•˜์‹œ๋ฉด ์•„๋ž˜์˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.๋ถ„๋ฅ˜์ฃผ์ œURLDockerDocker Compose

adjh54.tistory.com

 

 

 

 


 

 

 

 

4. ๊ถŒํ•œ ํ• ๋‹น ๋ฐ ๊ถŒํ•œ ๋งคํ•‘

  • ์ง์ ‘ ํ• ๋‹น ๋ฐฉ์‹
    ์‚ฌ์šฉ์ž๋‚˜ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๊ฐœ๋ณ„์ ์œผ๋กœ ์—ญํ• ์„ ์ง์ ‘ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ€์žฅ ์›์ดˆ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ช…ํ™•ํ•œ ๊ถŒํ•œ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๊ถŒํ•œ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๊ณ , ์ฆ‰๊ฐ์ ์ธ ๊ถŒํ•œ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋ˆ„๊ฐ€ ์–ด๋–ค ๊ถŒํ•œ์„ ์™œ ๊ฐ€์กŒ๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์›Œ์ ธ์„œ ๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ค์–ด์ง„๋‹ค.  ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๋‚˜ ํ…Œ์ŠคํŠธ ์‹œ ์œ ์šฉํ•˜๋‹ค. 
  • ๊ทธ๋ฃน์„ ํ†ตํ•œ ํ• ๋‹น ๋ฐฉ์‹
    ์‚ฌ์šฉ์ž๋ฅผ ๊ฐœ๋ฐœํŒ€ ํ˜น์€ ๊ธฐํšํŒ€๊ณผ ๊ฐ™์€ ๊ทธ๋ฃน์— ๋„ฃ๊ณ  ๊ทธ ๊ทธ๋ฃน์— ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋Œ€๊ทœ๋ชจ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ์— ํšจ์œจ์ ์ด๋ฉฐ ์ผ๊ด€๋œ ๊ถŒํ•œ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๊ธฐ์—…์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์‚ฌ๋‚ด ์‹œ์Šคํ…œ์—์„œ ์œ ์šฉํ•˜๋‹ค.
  • ๋ณตํ•ฉ ์—ญํ• ์„ ํ†ตํ•ฉ ํ• ๋‹น ๋ฐฉ์‹
    ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์—ญํ• ์„ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ํฐ ์—ญํ• ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ถŒํ•œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค ์ฝ”๋“œ์—์„œ๋Š” ์„ธ๋ถ€ ์—ญํ• ๋งŒ ์ฒดํฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ด€๋ฆฌ์ž๋Š” ํฐ ์—ญํ• ๋งŒ ๋ถ€์—ฌํ•˜๋ฉด ๋œ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ ์—ฌ๋Ÿฌ ์•ฑ์˜ ๊ถŒํ•œ์„ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.
  • ๋งคํผ๋ฅผ ํ†ตํ•œ ๋™์  ๋งคํ•‘
    ์‚ฌ์šฉ์ž์˜ ์†์„ฑ์ด๋‚˜ ์™ธ๋ถ€ DB ์ •๋ณด์— ๋”ฐ๋ผ ํ† ํฐ์— ๋“ค์–ด๊ฐˆ ๊ถŒํ•œ ์ •๋ณด๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์˜ˆ์‹œ๋กœ ์ด๋ฉ”์ผ์ด @tistory.com์œผ๋กœ ๋๋‚˜๋ฉด ๋ฌด์กฐ๊ฑด editor ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค์™€ ๊ฐ™์€ ์กฐ๊ฑด๋ถ€ ๋กœ์ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Keycloak DB์— ์—ญํ• ์„ ์ €์žฅํ•˜์ง€ ์•Š๊ณ ๋„ ์™ธ๋ถ€ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ถŒํ•œ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„๋ถ€ LDAP/Active Directory์—ฐ๋™์ด๋‚˜ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ธฐ๋ฐ˜ ๊ถŒํ•œ ๋ถ€์—ฌ ์‹œ ์œ ์šฉํ•˜๋‹ค.

 

 

 


 

 

- Keycloak์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์ด ์ ํ˜€์ ธ์žˆ์Šต๋‹ˆ๋‹ค.(์„ค์น˜ ๋“ฑ)

 

'Backend/Keycloak' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก

์„ธ ๋‚จ๋งค๋ฅผ ํ‚ค์šฐ๋Š” ์•„๋น  ๊ฐœ๋ฐœ์ž. ๋น…๋ฐ์ดํ„ฐ, ์ธ๊ณต์ง€๋Šฅ, ํด๋ผ์šฐ๋“œ ๋“ฑ IT ๋ถ„์•ผ์˜ ๊ฒฝํ—˜ ๊ธฐ๋ก ๋ธ”๋กœ๊ทธ

kjbg.tistory.com