98 lines
11 KiB
Markdown
98 lines
11 KiB
Markdown
---
|
|
title: official-doc / OAuth2 Proxy — Endpoints (Sign Out, {id_token} Redirect, Auth)
|
|
source_type: official-doc
|
|
url: https://oauth2-proxy.github.io/oauth2-proxy/features/endpoints/
|
|
archive_url:
|
|
related_branches: [feature-keycloak-oauth2-proxy-oidc-flow]
|
|
related_projects: [keycloak-patterns]
|
|
tags: [official-doc, keycloak-patterns, auth, oauth2-proxy, keycloak, oidc]
|
|
created: 2026-07-17
|
|
---
|
|
|
|
# official-doc / OAuth2 Proxy — Endpoints (Sign Out, {id_token} Redirect, Auth)
|
|
|
|
> Layer: `raw/` — 외부 자료(공식 문서 / 대기업 기술 블로그)의 **원문 발췌·출처 기록**.
|
|
> 본 템플릿은 `raw/official-docs/` 와 `raw/company-tech-blogs/` 두 폴더가 공유.
|
|
> 검증된 요약은 `/ingest` 후 `wiki/concepts/`에 `source-summary-template` 형식으로 별도 작성. 원본은 raw에 영구 보관.
|
|
|
|
## source_type 허용값
|
|
|
|
- `official-doc` — 공식 레퍼런스 / 표준 / 사양 (oauth2-proxy 공식 GitHub Pages 문서)
|
|
|
|
## Parent / 활용 branch (필수, 최소 1개+)
|
|
|
|
| Branch | 이 자료가 정당화하는 결정 |
|
|
|---|---|
|
|
| [[raw/branch-notes/feature-keycloak-oauth2-proxy-oidc-flow]] | `/oauth2/sign_out` 로그아웃 흐름의 기본 동작(로컬 cookie만 삭제) + `rd` query parameter/`{id_token}` placeholder 로 IdP 측 sign-out page(= `end_session_endpoint`)를 트리거하는 메커니즘의 근거 — 현재 branch-note D6 (UNSUPPORTED_DECISION) 해소용 |
|
|
|
|
## 출처 / Source
|
|
|
|
- 원본 URL: https://oauth2-proxy.github.io/oauth2-proxy/features/endpoints/
|
|
- 아카이브 URL: (미제공)
|
|
- 저자 / 조직: OAuth2 Proxy project — "a Series of LF Projects, LLC" (문서 하단 저작권 표기)
|
|
- 발행일: 명시 없음 (버전 관리형 문서, 현재 표시 버전 `7.15.x`)
|
|
- 마지막 확인일: 2026-07-17
|
|
|
|
## 왜 저장했는지 / Why archived
|
|
|
|
branch-note `feature-keycloak-oauth2-proxy-oidc-flow` D6 (RP-Initiated Logout 채택)가 `UNSUPPORTED_DECISION`으로 남아 있었음 — 근거 raw에 `/oauth2/sign_out` 및 로그아웃 관련 메커니즘의 verbatim quote가 없었기 때문. 본 문서(oauth2-proxy 공식 Endpoints 페이지)는 `/oauth2/sign_out` 의 정확한 동작, `rd` query parameter, `{id_token}` placeholder, `/oauth2/auth` 정의를 담고 있어 이 공백을 메운다.
|
|
|
|
**중요 — 사용자 dispatch 지시와 실제 원문의 불일치**: dispatch 지시문은 `--backend-logout-url` (`{id_token}` placeholder) 플래그를 전제했으나, 본 문서 원문에는 그런 이름의 CLI flag가 **존재하지 않는다** (`backend-logout-url`, `backend_logout_url` 문자열 self-grep 결과 0건). 실제로 문서가 기술하는 메커니즘은 **`rd` query parameter (또는 `X-Auth-Request-Redirect` 헤더) + `{id_token}` placeholder** 조합이다. 아래 Claims/Usage Boundaries에 정정 반영.
|
|
|
|
## 핵심 인용 / Key quotes (verbatim, 6문장 — 사용자 dispatch 지시가 5개 논점 + 부재 확인을 명시적으로 요구해 3~5개 기본 범위를 초과)
|
|
|
|
> [§Endpoints] "/oauth2/sign_out - this URL is used to clear the session cookie"
|
|
|
|
> [§Sign out] "This endpoint only removes oauth2-proxy's own cookies, i.e. the user is still logged in with the authentication provider and may automatically re-login when accessing the application again."
|
|
|
|
> [§Sign out] "(The "sign_out_page" should be the end_session_endpoint from the metadata if your OIDC provider supports Session Management and Discovery.)"
|
|
|
|
> [§Sign out] "BEWARE that the domain you want to redirect to (my-oidc-provider.example.com in the example) must be added to the --whitelist-domain configuration option otherwise the redirect will be ignored."
|
|
|
|
> [§Sign out] "ID Token can be injected in the redirect url by using {id_token} placeholder."
|
|
|
|
> [§Endpoints] "/oauth2/auth - only returns a 202 Accepted response or a 401 Unauthorized response; for use with the Nginx auth_request directive"
|
|
|
|
## Claims Extracted / 추출된 주장
|
|
|
|
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|
|
|---|---|---|---|---|---|
|
|
| O2PE-C1 | `/oauth2/sign_out` 은 oauth2-proxy 자신의 세션 cookie 만 삭제한다. 사용자는 IdP(예: Keycloak)에는 여전히 로그인된 상태로 남고, 재접근 시 자동 재로그인될 수 있다 | [§Endpoints] "/oauth2/sign_out - this URL is used to clear the session cookie" + [§Sign out] "This endpoint only removes oauth2-proxy's own cookies, i.e. the user is still logged in with the authentication provider and may automatically re-login when accessing the application again." | `official-vendor-doc` | `--backend-logout-url` 류 플래그 없이 `/oauth2/sign_out` 을 단독 호출했을 때의 기본 동작 | Keycloak 세션 자체가 종료되는지는 증명하지 않음 (IdP 세션 종료는 별도 리다이렉트 필요 — O2PE-C2 참조) |
|
|
| O2PE-C2 | IdP 측 로그아웃까지 트리거하려면 `rd` query parameter (또는 `X-Auth-Request-Redirect` 헤더)로 IdP의 sign-out 페이지를 지정해야 하며, 그 페이지는 OIDC provider가 Session Management/Discovery 를 지원하면 `end_session_endpoint` 이어야 한다 | [§Sign out] "(The "sign_out_page" should be the end_session_endpoint from the metadata if your OIDC provider supports Session Management and Discovery.)" | `official-vendor-doc` | Keycloak `end_session_endpoint` 를 `rd` 대상으로 사용하는 결정의 근거 | oauth2-proxy 가 대상 URL이 실제 `end_session_endpoint` 인지 검증한다는 뜻은 아님 — 사용자가 올바른 값을 넣어야 하는 convention 일 뿐 |
|
|
| O2PE-C3 | ID Token 은 `{id_token}` placeholder 로 리다이렉트 URL에 주입할 수 있으며, `rd` query parameter 와 `X-Auth-Request-Redirect` 헤더 양쪽 방식 모두에서 동작한다 | [§Sign out] "ID Token can be injected in the redirect url by using {id_token} placeholder." | `official-vendor-doc` | Keycloak `end_session_endpoint` 의 `id_token_hint` 파라미터를 채우는 메커니즘 | **`--backend-logout-url` 이라는 이름의 별도 CLI flag 는 이 문서에 존재하지 않는다** — dispatch 지시의 전제와 다름. 메커니즘은 flag 가 아니라 `rd`/헤더 값 문자열 치환임 |
|
|
| O2PE-C4 | `rd` 리다이렉트 대상 도메인이 `--whitelist-domain` 에 등록되어 있지 않으면 리다이렉트가 무시된다 | [§Sign out] "BEWARE that the domain you want to redirect to (my-oidc-provider.example.com in the example) must be added to the --whitelist-domain configuration option otherwise the redirect will be ignored." | `official-vendor-doc` | sign-out 흐름에서 open-redirect 방지 설정 필요성 | 무시될 때 오류 응답 코드/사용자 노출 메시지가 무엇인지는 본 인용에 명시 없음 |
|
|
| O2PE-C5 | `/oauth2/auth` 엔드포인트는 202 Accepted 또는 401 Unauthorized 만 반환하며, nginx `auth_request` directive 용으로 설계되었다 | [§Endpoints] "/oauth2/auth - only returns a 202 Accepted response or a 401 Unauthorized response; for use with the Nginx auth_request directive" | `official-vendor-doc` | nginx auth_request 모드에서 oauth2-proxy 를 인증 서브리퀘스트 대상으로 쓰는 결정 (형제 branch `feature-keycloak-nginx-auth-request-integration` 교차 인용 가능) | 이 엔드포인트가 응답에 `X-Auth-Request-*` 헤더를 주입하는지는 본 페이지에 명시 없음 (해당 내용은 [[raw/official-docs/oauth2-proxy-overview-config-official]] 의 별도 claim) |
|
|
|
|
### Strength 허용값
|
|
|
|
- `official-vendor-doc` — 위 5개 claim 모두 oauth2-proxy 공식 GitHub Pages 문서 원문에서 직접 발췌
|
|
|
|
## Usage Boundaries / 적용 경계
|
|
|
|
- 이 자료가 직접 증명하는 것:
|
|
- `O2PE-C1`: `/oauth2/sign_out` 은 oauth2-proxy 자체 cookie 만 지우고 IdP 세션은 그대로 둔다는 기본 동작
|
|
- `O2PE-C2`~`O2PE-C3`: IdP 로그아웃까지 트리거하려면 `rd`/헤더 + `{id_token}` placeholder 조합이 필요하다는 메커니즘
|
|
- `O2PE-C4`: `--whitelist-domain` 미등록 시 `rd` 리다이렉트가 무시된다는 안전장치
|
|
- `O2PE-C5`: `/oauth2/auth` 가 nginx `auth_request` 용으로 202/401만 반환한다는 계약
|
|
- 이 자료가 증명하지 않는 것:
|
|
- **`--backend-logout-url` 이라는 이름의 CLI flag 존재 여부** — 본 문서 원문에서 `backend-logout-url`/`backend_logout_url` 문자열이 self-grep 0건으로 확인됨. 이런 이름의 flag 를 전제로 한 branch-note 서술이 있다면 정정 필요
|
|
- **back-channel logout 수신 엔드포인트(Keycloak 이 Logout Token 을 이 프록시로 POST 하는 대상)의 존재 여부 — 이 문서 범위에서 확인되지 않음.** `backchannel`, `back-channel`, `logout token` 문자열이 본 페이지 원문에 전혀 등장하지 않는다 (self-grep 0건). 즉 본 페이지만으로는 oauth2-proxy 가 OIDC Back-Channel Logout 1.0 spec 의 RP 수신자 역할을 지원한다고도, 지원하지 않는다고도 확정할 수 없다 — 이 페이지가 그 주제를 다루지 않을 뿐이다 (커뮤니티 이슈 트래커의 미지원 시사는 공식 근거 아님, 별도 확인 필요)
|
|
- Keycloak 세션이 `rd` 리다이렉트 이후 실제로 종료되는지의 런타임 검증 (이 문서는 메커니즘만 서술, 실제 동작 확인은 branch-note `Claims To Verify` 표의 실측 항목)
|
|
- `id_token_hint`/`post_logout_redirect_uri` 라는 파라미터 이름이 이 문서에서 명시적으로 "OIDC RP-Initiated Logout 1.0 spec 용어"라고 이름 붙여지지는 않는다 — 예시 URL에 그 이름의 쿼리 파라미터가 등장할 뿐 (spec 명칭 매칭은 이 문서 밖의 배경지식)
|
|
- 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
|
|
- 본 branch(`feature-keycloak-oauth2-proxy-oidc-flow`)는 P1A(단일 EC2, Keycloak 26.x, Google federation 없음) 학습 노트이며 `documented-only` 등급이다. 이 raw 자료는 oauth2-proxy 공식 문서의 verbatim 발췌일 뿐, 내 프로젝트에서 실제로 구성·시연했다는 근거가 아니다 — `actually-implemented`/`locally-verified`로 승격 금지
|
|
- Keycloak 26.x 에서 `end_session_endpoint` 가 discovery 메타데이터에 실제로 어떤 경로로 노출되는지는 별도 Keycloak 공식 문서 확인 필요
|
|
|
|
## 메모 / Notes
|
|
|
|
> 나중에 wiki로 옮길 때 참고할 짧은 메모. 검증되지 않은 내 추론은 여기에 두지 말 것.
|
|
|
|
- `id_token_hint` + `post_logout_redirect_uri` + `end_session_endpoint` 조합은 OpenID Connect RP-Initiated Logout 1.0 spec 의 표준 파라미터 이름과 일치하는 것으로 보이나, 이는 본 문서 밖 배경지식에 의한 패턴 매칭이며 본 문서가 그렇게 명명하지는 않음 (미검증 추론 — wiki 승격 시 OIDC RP-Initiated Logout 공식 spec 페이지로 별도 근거 보강 필요)
|
|
- branch-note D6 (`UNSUPPORTED_DECISION`)는 본 raw 로 `O2PE-C1`~`O2PE-C4` 근거를 확보했으나, back-channel logout 수신자 여부는 여전히 미확인 — D6 갱신은 branch-note 작성자 몫 (본 agent 는 raw 등록 + Sources 표 갱신까지만 수행)
|
|
|
|
## Related / 관련
|
|
|
|
- [[raw/official-docs/oauth2-proxy-overview-config-official]] — oauth2-proxy 헤더 전달(`X-Forwarded-*`, `X-Auth-Request-*`) 및 `--pass-access-token` 등 별도 옵션
|
|
- [[raw/official-docs/oauth2-proxy-keycloak-oidc-provider-official]] — `provider=keycloak-oidc` 설정, `--allowed-group`/`--allowed-role`
|
|
- [[raw/official-docs/oauth2-proxy-nginx-integration-official]] — nginx `auth_request` 통합 (형제 branch `feature-keycloak-nginx-auth-request-integration` 근거)
|