feat: add shared Keycloak compose baseline

This commit is contained in:
donghyeon-ka
2026-07-25 13:14:58 +09:00
parent 1eeff83d0b
commit f47dea3e24
17 changed files with 532 additions and 1 deletions
+64 -1
View File
@@ -1,2 +1,65 @@
# keycloak-pattern
# Keycloak Authentication Patterns
Keycloak을 중심으로 네 가지 브라우저 인증 통합 패턴을 같은 로컬
인프라에서 비교하는 학습 프로젝트입니다.
- AP1: Browser-based OAuth Client (SPA direct + Resource Server)
- AP2: Token-Mediating Backend
- AP3: Backend-for-Frontend (BFF)
- AP4: Edge forward-auth
현재 `develop`의 공통 baseline은 Keycloak, PostgreSQL, Spring Boot API,
nginx를 Docker Compose로 실행하는 토대입니다. 패턴별 구현은 이 baseline
위에서 별도 브랜치로 진행합니다.
## 요구 사항
- Docker Engine
- Docker Compose
- `curl`
로컬 Java나 Maven은 필요하지 않습니다. Spring Boot 빌드와 테스트는 Maven
컨테이너에서 수행합니다.
## 시작
```bash
cp .env.example .env
docker compose up --build -d
./scripts/verify-stack.sh
```
기본 주소는 다음과 같습니다.
| 구성 요소 | 주소 |
|---|---|
| Keycloak | <http://localhost:8080> |
| Spring Boot API | <http://localhost:8081> |
| nginx | <http://localhost:8088> |
host의 80번 포트를 쓸 수 있는 single-EC2 환경에서는 `.env`
`NGINX_PORT=80`으로 변경할 수 있습니다.
## 상태 확인
```bash
docker compose ps
docker compose logs -f keycloak
curl http://localhost:8088/api/public
curl -i http://localhost:8088/api/me
```
`/api/public``200`, 인증 정보가 없는 `/api/me``401`이 정상입니다.
## 환경 초기화
PostgreSQL과 Keycloak data volume을 제거하고 realm import부터 다시
검증하려면 다음 한 줄을 사용합니다.
```bash
docker compose down -v && docker compose up --build -d
```
`start-dev`와 로컬 HTTP 설정은 학습 전용입니다. 운영 환경에서는
optimized Keycloak image, HTTPS, 엄격한 hostname 및 외부 secret store를
사용해야 합니다.