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 ์ฌ์ฉ์ ์ํด์ ๋ค์๊ณผ ๊ฐ์ ์ค์ ์ ํ์ํ๋ค.
- Realm ์์ฑ
- User ์์ฑ
- 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๋ก ํ ์คํธ ๋ฐฉ๋ฒ์ ์์๋ณด์.