Files
keycloak-pattern/docs/four-pattern-tradeoff-matrix.md
T

2.2 KiB

Four Keycloak integration patterns

AP1 SPA direct AP2 token mediator AP3 BFF AP4 edge auth
OAuth client public confidential confidential confidential proxy
browser 보유물 access/refresh token 짧은 handoff code 또는 app token HttpOnly session cookie proxy session cookie
OAuth code 교환 browser + PKCE mediator backend BFF oauth2-proxy
API bearer 검증 Spring resource server mediator/downstream API BFF 내부 또는 downstream edge가 인증 후 trusted header
server session 없음 handoff 상태만 짧게 필수 proxy cookie/session
XSS token 탈취면 가장 큼 축소 browser token 제거 browser token 제거
CSRF 주의 token endpoint/refresh 설계 app cookie 사용 시 필수 방어 proxy cookie 사용 시
수평 확장 상태 단순 handoff store 공유 가능 session store 필요 proxy 설정에 따름
주 학습 포인트 PKCE/JWT/RS token 경계·one-time handoff oauth2Login/session/CSRF auth_request/header trust

선택 기준

  • 브라우저에서 OAuth와 token 수명주기를 직접 학습하려면 AP1.
  • 브라우저에 upstream token을 주지 않되 API 호출은 bearer 중심으로 유지하려면 AP2.
  • token을 browser에서 완전히 제거하고 애플리케이션 단위 인가·세션을 중앙화하려면 AP3.
  • 기존 upstream을 수정하기 어렵고 경계에서 일괄 인증하려면 AP4.

Google federation은 다섯 번째 인증 패턴이 아니다. 네 패턴 모두 최종적으로 Keycloak token/session을 소비하며, Google은 Keycloak 앞의 upstream IdP hop으로 추가된다.

이 repository의 실행 증거

  • AP1: PKCE SPA, issuer/audience, token storage, refresh/logout 검증
  • AP2: confidential client와 one-time access handoff 검증
  • AP3: oauth2Login session과 CSRF/SameSite 검증
  • AP4: oauth2-proxy, nginx auth_request, spoofed header 제거 검증
  • 공통: local mock Google brokering, First Broker Login, claim/role mapping 검증

각 근거 브랜치와 병합 여부는 keycloak-branch-manifest.tsvaudit-keycloak-branches.sh로 추적한다.