11 KiB
title, source_type, url, archive_url, related_branches, related_projects, tags, created
| title | source_type | url | archive_url | related_branches | related_projects | tags | created | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| official-doc / OAuth2 Proxy — Endpoints (Sign Out, {id_token} Redirect, Auth) | official-doc | https://oauth2-proxy.github.io/oauth2-proxy/features/endpoints/ |
|
|
|
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가 nginxauth_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-noteClaims 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 공식 문서 확인 필요
- 본 branch(
메모 / 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통합 (형제 branchfeature-keycloak-nginx-auth-request-integration근거)