인증
GenD API는 Keycloak 기반 JWT Bearer 토큰 인증을 사용합니다. 퍼블릭 엔드포인트를 제외한 모든 API 요청에 인증이 필요합니다.
인증 흐름
- Keycloak에서 사용자 인증 후 JWT 토큰을 발급받습니다.
- API 요청 시
Authorization헤더에 Bearer 토큰을 포함합니다. - 서버에서 토큰의 서명, 만료, 권한을 검증합니다.
요청 형식
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...
인증 불필요 엔드포인트
| 엔드포인트 | 설명 |
|---|---|
GET /health | 서비스 헬스 체크 |
GET /metrics | Prometheus 메트릭 |
POST /api/v1/abuse/webhook/falco | HMAC-SHA256 웹훅 (JWT 대신 HMAC 인증) |
HMAC-SHA256 인증 (Relay)
DMZ의 gend-relay는 JWT 대신 HMAC-SHA256 서명을 사용합니다:
- 요청 본문 + query string으로 서명을 생성합니다.
X-Signature헤더에 서명을 포함합니다.- nonce 캐시로 재사용 공격을 방지합니다.
권한 수준
| 권한 | 설명 |
|---|---|
| user | 일반 사용자 (기본) |
| admin | 관리자 (정책 관리, 서버 관리 등) |
에러 코드
| 코드 | 설명 |
|---|---|
| 401 | 토큰 누락 또는 만료 |
| 403 | 권한 부족 (관리자 전용 엔드포인트) |