feat(ap4): integrate nginx auth_request
This commit is contained in:
@@ -29,3 +29,23 @@ loopback에 publish되어 있습니다. 따라서 로컬에서 직접
|
||||
`X-Forwarded-User: spoofed-admin`을 보내면 우회가 재현됩니다. 이후
|
||||
Nginx `auth_request` 통합을 거쳐 최종 feature에서 backend no-publish와
|
||||
내부 shared-secret 검증을 함께 적용합니다.
|
||||
|
||||
## 두 번째 단계: Nginx `auth_request`
|
||||
|
||||
`feature/keycloak-nginx-auth-request-integration`부터 외부 진입점은
|
||||
`http://localhost:8088` Nginx 하나입니다. oauth2-proxy의 4180 포트는
|
||||
Compose 네트워크에만 expose됩니다.
|
||||
|
||||
- Nginx의 정확 일치 `location = /oauth2/auth`는 `internal`이라 외부에서
|
||||
직접 호출할 수 없습니다.
|
||||
- 인증 서브리퀘스트에는 본문을 보내지 않고 `Content-Length`도
|
||||
비웁니다.
|
||||
- 일반 브라우저 요청의 401은 `/oauth2/start` 302로 변환합니다.
|
||||
- API 요청 `/api/edge`는 redirect하지 않고 JSON 401을 반환합니다.
|
||||
- 인증 성공 시 oauth2-proxy의 `X-Auth-Request-User`와 email만 backend로
|
||||
전달합니다.
|
||||
|
||||
Nginx 컨테이너 IP를 전용 Compose subnet에서 고정하고 oauth2-proxy의
|
||||
trusted proxy를 그 단일 IP로 제한합니다. 다만 이 단계에서는 backend
|
||||
8081이 로컬 호스트에 열려 있어 신뢰 헤더를 직접 위조할 수 있습니다.
|
||||
그 재현 조건은 마지막 feature에서 제거합니다.
|
||||
|
||||
Reference in New Issue
Block a user