Keycloak์ ์ฌ์ฉํ ์ ์๋
์ฌ๋ฌ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ณ
์ง์ ์ค์นํด๋ณด์!
๋ง์ฝ ์ค์ ๋ก keycloak์ ์ฌ์ฉํ ์์ ์ธ ํ๋ก์ ํธ๋ฅผ ํ๊ณ ์๋ค๋ฉด?
- ์นดํ ๊ณ ๋ฆฌ์๋ ์์ง๋ง VIP ์ด๋์ฅ์ด๋ผ๋ ํ๋ก์ ํธ์์ Keycloak์ ์ฌ์ฉํ์ต๋๋ค. ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ฒ์ Keycloak์ ์ฌ์ฉํ๋ค๋ณด๋, ์ด๋ค ์์๋ก ์งํํด์ผํ๋์ง ๊ณ ๋ฏผ์ด ๋๋๋ผ๊ณ ์. ์ ๊ฐ ํ ์์๊ฐ ์ ๋ต์ ์๋๊ฒ ์ง๋ง ํน์๋ผ๋ ๋์์ด ๋์ค ๋ถ๋ค์ ์ํด ๋จ๊ฒจ๋ณด๊ฒ ์ต๋๋ค.
- VIP ์ด๋์ฅ์๋ ๊ณ ๊ฐ ๊ด๋ฆฌ ํ์ด์ง์ ๊ด๋ฆฌ์๋ฅผ ๊ด๋ฆฌํ๋ ๊ด๋ฆฌ์ ๊ด๋ฆฌ ํ์ด์ง๊ฐ ์์ต๋๋ค. ๊ทธ ์ค ๊ด๋ฆฌ์ํ์ด์ง์ Keycloak์ ์ด์ฉํ์ต๋๋ค. ๊ด๋ฆฌ์๋ ์ต๊ณ ๊ด๋ฆฌ์์ ์ผ๋ฐ๊ด๋ฆฌ์๋ก ์ญํ ์ด ๋๋๊ณ ์ต๊ณ ๊ด๋ฆฌ์๋ ์ผ๋ฐ๊ด๋ฆฌ์๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๊ถํ์ด ์์ต๋๋ค. ๊ทธ๋์ Keycloak์ ํตํด ๊ด๋ฆฌ์ํ์ด์ง์ ์ต๊ณ ๊ด๋ฆฌ์๋ง ๋ค์ด๊ฐ๋๋ก ๋ง๋ค์์ต๋๋ค.
- ์ด๋ ์ ๊ฐ ํ ๊ณ ๋ฏผ์, ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํด์ผํ ์ง ๋ง์ฝ ์์ฑํ๋ค๋ฉด ์ด๋ค ์ฝ๋๋ถํฐ ์์ฑํด์ผํ๋์ง ์๋๋ฉด Keycloak์ ๋จผ์ ์ค์นํด์ผํ๋์ง ๋ฑ ์์์ ๋ํด ๊ณ ๋ฏผํ์ต๋๋ค. ๊ฐ์ ํ๋ก์ ํธ์ ๋ด์ฉ๊ณผ ์งํํ๋ ๋ฐฉํฅ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ ๊ฐ ํ ๋ฐฉ๋ฒ์ด ์ ๋ต์ด๋ผ๊ณ ๋งํ ์ ์์ง๋ง, ์ ์ ๊ฒฝ์ฐ๋ [ํ๋ก ํธ ์์ฑ -> keycloak๊ณผ ๋ฌด๊ดํ๋ค๊ณ ํ๋จ๋๋ ๊ธฐ๋ฅ๋ค์ ๋ฐฑ์๋ ์ฝ๋ ์์ฑ -> keycloak ์ค์น -> ๋ฐฑ์๋์ keycloak ์ฐ๊ฒฐ ๋ฐ ๊ด๋ จ ์ฝ๋ ์ถ๊ฐ ๋ฐ ์์ ] ์์๋ก ์งํํ์ต๋๋ค.
- ์ ์ ๊ฒฝ์ฐ๋ ํ๋ก ํธ, ๋ฐฑ์๋๋ฅผ ํผ์์ ๋คํ๋ค๋ณด๋๊น ์ด๋ฐ ์์๋ก ์งํํ ์ ์์๋ ๊ฒ ๊ฐ๋ค์. (๋ค๋ง ์ด๋ ๊ฒ ์งํํ๋ฉด ๋ชฉ์ ์ด๋ ํ ์คํธ ์ฝ๋ ์ง๋ ์ค๋ ฅ์ด ๊ฑฐ์ ์๋ค๊ณ ๋ด์ผ...;; ๊ทธ๋์ ๋ค์์ ๋ฐฑ์๋๋ถํฐ ํด์ ํ ์คํธ ์ฝ๋ ์งํ์ ํด๋ณด๋ ค ํฉ๋๋ค)
Keycloak์ ์ค์นํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ
- Docker
- ๊ฐ์ฅ ๋น ๋ฅด๊ณ ๊ฐํธํ๊ฒ Keycloak์ ์ค์นํ ์ ์๋ค.
- ๊ฐ๋ฐ ํ๊ฒฝ๋ถํฐ ์๊ท๋ชจ ์ด์ ํ๊ฒฝ๊น์ง ํญ๋๊ฒ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
- Docker Hub ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ docker run ๋๋ docker-compose๋ก ์ฆ์ ์คํ ๊ฐ๋ฅํ๋ค.
- Docker๋ ๊ฐ๋ฐ, ํ ์คํธ, ์ด์ ํ๊ฒฝ์ ๋์ผํ๊ฒ ์ ์งํ๊ธฐ ๋งค์ฐ ์ฝ๋ค.
- ํธ์คํธ ์์คํ ์ Java ๋ฑ์ ์ค์นํ ํ์ ์์ด ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ๋๋๋ค.
- ์ด๋ฏธ์ง ํ๊ทธ๋ง ๋ฐ๊พธ๋ฉด ๋๋ฏ๋ก ์ ๋ฐ์ดํธ์ ๋กค๋ฐฑ์ด ๊ฐํธํ๋ค.
- ๋ค๋ง ์ปจํ ์ด๋ ๋คํธ์ํน ๋ฐ ๋ณผ๋ฅจ ์ค์ ๋ฑ ์ฌ์ ์ง์์ด ์ฝ๊ฐ ์๊ตฌ๋๋ ํธ์ด๋ค.
- ์ ๋ ElasticSearch ๋๋ฌธ์ Docker๋ฅผ ์ฌ์ฉํ ์ ์ฅ์ด๋ผ ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ค์นํ์ต๋๋ค. Docker์ ๊ด๋ จ๋ ๋ด์ฉ ํฌ์คํ ์ ๋ฐ์ ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค. - Kubernetes(Operator)
- ์ํฐํ๋ผ์ด์ฆ(๋๊ท๋ชจ ์กฐ์ง์ฉ ์๋ฃจ์ )ํ๊ฒฝ์ด๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ(MSA)์์ ๊ฐ์ฅ ๊ถ์ฅ๋๋ ๋ฐฉ์์ด๋ค.
- Helm Chart๋ฅผ ์ด์ฉํ๊ฑฐ๋, Keycloak ํ์์ ์ง์ ๊ด๋ฆฌํ๋ Operator๋ฅผ ํตํด ๋ฐฐํฌํ๋ค.
- Operator๊ฐ ํด๋ฌ์คํฐ ์ํ๋ฅผ ๊ฐ์ํ๋ฉฐ ์๋ ๋ณต๊ตฌ, ๋กค๋ง ์ ๋ฐ์ดํธ ๋ฑ์ ์ํํ์ฌ ์๋ํ๋ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค. → ๋กค๋ง ์ ๋ฐ์ดํธ๋, ์ฟ ๋ฒ๋คํฐ์ค์์ ์์คํ ์ ์ฒด๋ฅผ ํ ๋ฒ์ ๊ต์ฒดํ์ง ์๊ณ , ์๋น์ค ์ค๋จ ์์ด ํ๋(Pod)์ธ์คํด์ค๋ฅผ ์ ์ง์ ์ผ๋ก ์ ๋ฒ์ ์ผ๋ก ๊ต์ฒดํ๋ ๋ฐฐํฌ ๋ฐฉ์์ ๋งํ๋ค.
- ํธ๋ํฝ ์ฆ๊ฐ ์ ์ธ์คํด์ค(Pod) ์๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ๊ธฐ ๋งค์ฐ ์ ๋ฆฌํ๋ค.
- ๋ชจ๋ ์ค์ ์ ์ฝ๋(YAML)๋ก ๊ด๋ฆฌํ ์ ์์ด ์ธํ๋ผ ๊ด๋ฆฌ๊ฐ ์ฒด๊ณ์ ์ด๋ค. → YAML์ ๋ฉ๋ชจ์ ๋น์ทํ๋ฐ ์ด๋ฅผ ์ํํธ์จ์ด์ฒ๋ผ ํ์ฉํ ์ ์๊ฒ ํ๋ค. ์ฌ๋ฌ ์ฅ์ ์ด ์์ง๋ง ์ฝ๊ฒ ์ค๋ช ํ๋ฉด, YAML์ ์ด์ฉํ๋ฉด ์๋์ค์ (์ผ์ผ์ด ์ง์) ์์ด ์ต์ข ์ํ๋ง ๊ธฐ์ ํ๋ฉด ๋์ด์ ์ฅ์ ๊ฐ ์ค์ด๋ ๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค ์ธํ๋ผ ๊ตฌ์ถ ๋ฐ ์ ์ง๋ณด์ ๋น์ฉ์ด ๋๋ค๋๊ฒ ๋จ์ ์ด๋ค. - Podman
- Docker์ ๊ฑฐ์ ๋์ผํ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ง๋ง, ๊ตฌ์กฐ์ ์ผ๋ก ๋ ์์ ํ๊ณ ๊ฐ๋ณ๊ฒ ์ค๊ณ๋ ์ปจํ ์ด๋ ๊ด๋ฆฌ ๋๊ตฌ์ด๋ค.
- Keycloak์ RedHat ํ๋ก์ ํธ์ด๊ธฐ ๋๋ฌธ์ RedHat ๊ณ์ด OS(RHEL ๋ฑ)์์๋ Docker ๋์ Podman์ ์ฌ์ฉํ๋ค.
- ๊ด๋ฆฌ์ ๊ถํ(root) ์์ด ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์์ด์ ๋ณด์์ ์ข๋ค.
- Docker์ฒ๋ผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ํ๋ก์ธ์ค๊ฐ ์์ด๋ ์๋ํ๋ค. podman run...๊ณผ ๊ฐ์ด Docker ๋ช ๋ น์ด๋ฅผ podman์ผ๋ก ๋ฐ๊พธ๋ฉด ๊ฑฐ์ ๋๊ฐ์ด ์๋ํ๋ค.
Guides
Find the guides to help you get started, install Keycloak, and configure it and your applications to match your needs.
www.keycloak.org
[Spring, React, Mac] Elasticsearch๋ฅผ ์ํด Docker ์ค์นํ๊ธฐ.
์ํฌ์คํ ์์ Elasticsearch ์ค์น๋ฐฉ๋ฒ์ ์์๋ดค๋ค.๊ทธ ์ค Docker๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด๋ณด๋ คํ๋ค. 1. Elasticsearch & Docker [Docker์ ๋ํด์] [Spring, React] Docker์ ๋ํด์ ์ฝ๊ฒ ์์๋ณด๊ธฐ!ElasticSearch๋ฅผ ์ฌ์ฉํ๋
post-this.tistory.com
Keycloak ์ค์นํ๊ธฐ
- ํด๋ ๋ง๋ค๊ธฐ
: ํ๋ก์ ํธ ๋ฐ๊นฅ ํน์ ์์ ํฐ๋ฏธ๋๋ก ๋ค์ด๊ฐ์ keycloak-docker๋ผ๋ ํด๋๋ฅผ ๋ง๋ค์.
์ฌ๊ธฐ์ ์ ๊น!!!! ํ๋ก์ ํธ ์์ ๋ง๋๋ ๊ฑธ ์ถ์ฒํฉ๋๋ค... ๊ทธ๋์ผ ๋์ค์ keycloak ๋ก๊ทธ์ธ ํ๋ฉด์ ์์ ํ ๋ ์ด๋ ค์์ ๋ ๊ฒช์ต๋๋ค. ์ ๋ ๋ชฐ๋ผ์ ์๋ฌด๊ณณ์๋ค ๋ง๋ค์๋ค๊ฐ ํํํ์ด์. ใ 0ใ

mkdir keycloak-docker
cd keycloak-docker
- docker-compose.yml ๋ง๋ค๊ธฐ
: ์๊น ๋ง๋ ํด๋ ์์ yml์ ๋ง๋ค๋ฉด ๋ฉ๋๋ค.

services:
keycloak:
image: quay.io/keycloak/keycloak:26.5.6
container_name: invitevip-keycloak
ports:
- "8180:8080"
environment:
KC_BOOTSTRAP_ADMIN_USERNAME: admin
KC_BOOTSTRAP_ADMIN_PASSWORD: admin1234!
command: start-dev
image๋ Keycloak์ ๊ณต์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์จ๋ค. ์ฌ๊ธฐ์ quay.io๋ Red Hat์์ ์ด์ํ๋ ์ด๋ฏธ์ง ์ ์ฅ์์ด๋ค. ์ต์ ๋ฒ์ ์ด 26.5.6์ ๊ฐ์ ธ์๋ค.
container_name์ ์คํ๋ ์ปจํ ์ด๋์ ์ด๋ฆ์ด๋ค. ์ค์ ํ์ง ์์ผ๋ฉด docker๊ฐ ์์์ ์์์ ์ด๋ฆ์ ๋ถ์ธ๋ค. ์๋ฌด๋๋ ์ง์ ํด๋๋ฉด ๋ช ๋ น์ด ์น ๋ ํธ๋ฆฌํ๋ค.
ports๋ ๋คํธ์ํฌ ํฌํธ๋ฅผ ์ค์ ํ ๊ฒ์ด๋ค. ํธ์คํธ ์ปดํจํฐ์ ์ปจํ ์ด๋ ์ฌ์ด์ ํฌํธ๋ฅผ ์ฐ๊ฒฐํ๋๋ฐ, 8080์ด ์ปจํ ์ด๋ ๋ด๋ถ์์ Keycloak์ด ์ค์ ๋ก ๋ ์๋ ํฌํธ์ด๊ณ 8180์ด Keycloak ํ๋ฉด์ผ๋ก ์ฐ๊ฒฐ๋๋ ํฌํธ์ด๋ค. (keycloak์ ์ค์นํ๋ฉด realm, user, client, role ๋ฑ์ ์ค์ ํ๋ ํ๋ฉด์ ์ฃผ๋๋ฐ ๊ทธ๊ฑธ 8180์ผ๋ก ๋ฐ๋ ๊ฒ์ด๋ค)
environment๋ ์ด๊ธฐ๊ด๋ฆฌ์ ์ค์ ํ๋ ๊ฒ์ด๋ค. 8180 ํ์ด์ง๋ก ๋ค์ด๊ฐ๋ฉด ๋ก๊ทธ์ธ ํ๋ฉด์ด ๋์ค๋๋ฐ, ์ด๋ ์ค์ ํ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฃ์ด์ผ ๋ค์ด๊ฐ ์ ์๋ค.
command: start-dev๋ keycloak์ ๊ฐ๋ฐ ๋ชจ๋๋ก ์คํํ ๊ฒ์ด๋ค. ์ค๋ฌด ํ๊ฒฝ์ start๋ผ๊ณ ์ ๋๋ฐ, start-dev ๋ชจ๋์์๋ HTTP๋ก๋ ์ ์์ด ๊ฐ๋ฅํด ๋ก์ปฌ ํ ์คํธ๊ฐ ํธ๋ฆฌํ๊ณ DB ์ฐ๊ฒฐ์ด๋ ํธ์คํธ ์ด๋ฆ ์ฒดํฌ ๋ฑ์ ๊ฐ๋ฐ ํธ์๋ฅผ ์ํด ๋์จํ๊ฒ ์ฒ๋ฆฌํ๋ค.
- ์ปจํ
์ด๋ ์คํํ๊ธฐ

docker compose up -d
Docker์ ๋ค์ด๊ฐ์ ์คํํด๋ ๋๊ณ , ๋ช ๋ น์ด๋ฅผ ๋ฃ์ด๋ ๋๋ค.
- keycloak์ ๋ค์ด๊ฐ๊ธฐ
์ด์ ์๊น ์ฐ๊ฒฐํ๋ ํฌํธ๋ฅผ ๊ธฐ์ตํ๋ฉฐ localhost:8180์ผ๋ก ๋ค์ด๊ฐ์ค๋ค.

์๊น ์ค์ ํ๋ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค.
- realm ๋ง๋ค๊ธฐ
- Manage realms์ ๋ค์ด๊ฐ๊ธฐ

- Realm ์ด๋ฆ ์ค์ ํ๊ธฐ

- realm ์์ฑ ์๋ฃ

๋ค์์ ํ ๊ฒ
์ด๋ฒ ํฌ์คํ
์ ์ค์น๊น์ง ๋ง๋ฌด๋ฆฌํ๋ค. ๋ค์ ํฌ์คํ
๋ client, role, user ๋ฑ์ ์ค์ ํด๋ณด๊ฒ ๋ค.
[Keycloak, Docker, Mac] Keycloak์์ client, role, users ๋ฑ ์ค์ ํ๊ณ React ์ฐ๊ฒฐํ๊ธฐ
์ ๋ฒ ํฌ์คํ ์์ keycloak ์ค์น๋ฅผ ํด๋ณด์๋ค.์ด๋ฒ์ ํ๋ก์ ํธ์ ๋ง์ถฐ์client, role ๋ฑ ์ค์ ํด๋ณด์. [ ์ด์ ํฌ์คํ - keycloak์ ๋ค์ํ ์ค์น ๋ฐฉ๋ฒ์ ์์๋ณด๊ณ docker๋ก ์ค์นํด๋ณด๊ธฐ ] [Keycloak, Docker, Mac] ๋ค์
post-this.tistory.com