KeyCloak ์šฉ์–ด ์ •๋ฆฌ

  • OIDC : OAuth ๊ฐ€ ๊ถŒํ•œ ๋ถ€์—ฌ๋งŒ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์ด๋ผ๋ฉด OIDC ๋Š” OAuth ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ธ์ฆ๊ณผ ๊ถŒํ•œ๋ถ€์—ฌ๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•œ ๊ฒƒ์ด๋‹ค. SSO ์˜ ๊ตฌํ˜„์„ ์œ„ํ•œ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • Realm : ์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ๊ฐ€ ์ ์šฉ๋˜๋Š” ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹จ์œ„์ด๋‹ค. SSO ๋ฅผ ์ ์šฉํ•œ๋‹ค๊ณ  ํ–ˆ์„๋•Œ ํ•ด๋‹น SSO ๊ฐ€ ์ ์šฉ๋˜๋Š” ๋ฒ”์œ„๋Š” Realm ๋‹จ์œ„์ด๋‹ค.
  • Client : ์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ ํ–‰์œ„๋ฅผ ๋Œ€ํ–‰ํ•˜๋„๋ก ๋งก๊ธธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹จ์œ„์ด๋‹ค. ๊ทธ ๋‹จ์œ„๋Š” ์›น์‚ฌ์ดํŠธ ํ˜น์€ REST API ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋„ ๋  ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ Realm ์— n๊ฐœ์˜ Client ๋ฅผ ์ƒ์„ฑ, ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • User : Client ์— ์ธ์ฆ์„ ์š”์ฒญํ•  ์‚ฌ์šฉ์ž๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ํ•˜๋‚˜์˜ Realm ์—๋Š” Realm ์— ์ข…์†๋œ n๊ฐœ์˜ User ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ User ๋Š” Username, Email, FirstName, LastName ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€๋งŒ Custom User Attribute ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์†์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Role : User ์—๊ฒŒ ๋ถ€์—ฌํ•  ๊ถŒํ•œ ๋‚ด์šฉ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์—ฌ๊ธฐ์—๋Š” Keycloak ์˜ REST API ๋ฅผ ์‚ฌ์šฉํ•  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

Keycloak ์‚ฌ์šฉ์„ ์œ„ํ•œ ์„ค์ •

Keycloak ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค์ •์„ ํ•„์š”ํ•˜๋‹ค.

  1. Realm ์ƒ์„ฑ
  2. User ์ƒ์„ฑ
  3. Client ์ƒ์„ฑ

Realm ์€ ์ดˆ๊ธฐ์—๋Š” Master Realm ๋งŒ ์กด์žฌํ•œ๋‹ค. Master ๊ฐ€ ์•„๋‹Œ ์‹ค์ œ ์‚ฌ์šฉ์„ ์œ„ํ•œ ๋ ๋ฆ„์„ ์ƒ์„ฑํ•ด์ค€๋‹ค.

Realm ๊ธฐ์ค€ ํŒ๋‹จ์€ ๋‹จ์ผ ํšŒ์‚ฌ ๋‹จ์œ„๋ผ๊ณ  ์ƒ๊ฐ ํ•˜๋ฉด ๋ ๋“ฏ ํ•˜๋‹ค. 

   ์˜ˆ๋ฅผ ๋“ค์–ด ํฌ์Šค์ฝ” ๊ทธ๋ฃน์ธ ํฌ์Šค์ฝ”, ํฌ์Šค์ฝ”DX, ํฌ์Šค์ฝ”์ธํ„ฐ๋‚ด์…”๋„, ํฌ์Šค์ฝ”E&C ๊ฐ€ Keycloak๋ฅผ ๋„์ž…ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด
   Realm๋Š” ์„œ๋กœ๋‹ค๋ฅธ 4๊ฐœ๊ฐ€ ํ•„์š”ํ• ๊ฒƒ์ด๋‹ค.
   ๋‹จ, ๋งŒ์•ฝ์— ์œ„ 4๊ฐœ ๊ทธ๋ฃน์‚ฌ๊ฐ€ ๋ชจ๋‘ ์•„์ด๋”” ๋™์ผํ•œ ์•„์ด๋””๋กœ ๊ฐ ํšŒ์‚ฌ์˜ Legacy์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•œ๋‹ค๋ฉด Realm๋Š”
   ํ•˜๋‚˜๋กœ ํ†ต์ผํ•ด์•ผํ•œ๋‹ค.

1. Realm ์ƒ์„ฑ

โ— ์™ผ์ชฝ์ƒ๋‹จ master ์•„๋ž˜ ํ™”์‚ดํ‘œ๋ฅผ ๋ˆŒ๋ ค Create Realm๋ฅผ ํ•ด๋ณด์ž.

โ— Realm name์„ ์ •ํ•˜๊ณ  Create๋ฅผ ๋ˆŒ๋Ÿฌ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

 

2. User ์ƒ์„ฑ

โ— Keycloak์— ๋Œ€ํ•œ ์ƒˆ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

     ์™ผ์ชฝ Manage -> Users๋ฅผ ํด๋ฆญํ•˜๊ณ  Create new user๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

โ— Username์„ ์ž…๋ ฅํ•˜๊ณ  Create๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

  - ๊ฐ ํ•ญ๋ชฉ์€ ํ•„์ˆ˜๊ฐ’์ด ์•„๋‹ˆ์ง€๋งŒ, ํ•„์š”ํ•œ ํ•ญ๋ชฉ์€ ๊ธฐ์ž…ํ•ด๋„ ๋œ๋‹ค.

  - Required user actions๋Š” ๋กœ๊ทธ์ธ ํ• ๋•Œ ํ•„์š”ํ•œ ์กฐ์น˜๋ฅผ ์„ ํƒํ• ์ˆ˜ ์žˆ์œผ๋ฉฐ, ( 'Verify email' ) email ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด

    ์‚ฌ์šฉ์ž์—๊ฒŒ  email๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜, ( 'Update profile' ) ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋„๋ก ์š”๊ตฌํ•˜๊ฑฐ๋‚˜,

    ('Update password') ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ์šด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋„๋ก ์š”๊ตฌํ• ์ˆ˜ ์žˆ์œผ๋ฉฐ, ( 'Configure OTP') OTP๊ตฌ์„ฑ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โ— Credentials ํƒญ์—์„œ Set Password๋ฅผ ํด๋ฆญํ•ด์„œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

 Temporary๋ฅผ On์œผ๋กœ ํ•˜๋ฉด test์œ ์ €๊ฐ€ ์ฒ˜์Œ ๋กœ๊ทธ์ธ์‹œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ณ€๊ฒฝํ• ์ˆ˜ ์žˆ๋‹ค.


3. Client ์ƒ์„ฑ

Client๋Š” Application ์ธ์ฆ์„ ์œ„ํ•œ ๋‹จ์œ„๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

โ— ์™ผ์ชฝ ๋ฉ”๋‰ด์—์„œ Clients์˜ Create client ๋ฅผ ํด๋ฆญํ•œ๋‹ค. 

 

โ— Client ID๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

โ— Capability config๋Š” default๋กœ ํ•˜๊ณ  Next .

 

โ— Login settings์—์„œ redirect URIs๋ฅผ ์„ค์ •ํ•œ ํ›„ Save.

 

 

Valid redirect URls ๋Š” ์‹ค์ œ ์ธ์ฆ(๋กœ๊ทธ์ธ) ์„ฑ๊ณตํ›„ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ํ• ์ˆ˜ ์žˆ๋Š” URLํŒจํ„ด
    - React๋กœ ์ƒ˜ํ”Œ ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ react ๊ธฐ๋ณธ URL์ธ http://localhost:3000 ์œผ๋กœ
       * ์™€์ผ๋“œ์นด๋“œ๋Š” react์—์„œ ๋ผ์šฐํŒ…๋œ ๋ชจ๋“  URL๋ฅผ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ
Valid post logout redirect URls ๋Š” ๋กœ๊ทธ์•„์›ƒํ›„ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ํ•˜๋Š” URL์ด๋‹ค.
Web origins ๋Š” CORS๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•˜๋ฉด ์‚ฌ์šฉ 
    - ํŠน์ • URL๋งŒ ํ—ˆ์šฉํ•  ๊ฒฝ์šฐ๋Š” ํ•ด๋‹น URL๋ฅผ ๊ธฐ์ž…ํ•˜๋ฉด ๋œ๋‹ค.

๋‹ค์Œ์—๋Š” ๊ฐ„๋‹จํ•œ react๋กœ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

 

+ Recent posts