docs: re-measure B-4 role propagation and record it as evidence
The twelve-request result and the post-reauth value were printed in the document but never written to a file; the audit flagged it as a conclusion standing without evidence. Measured again with timestamps into 03-b4-role-propagation.txt, which also surfaced a 107-second clock skew between the browser host and the lab host that the file now records so the two timelines can be compared. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e0d27d47ce
commit
f3f3a8da46
@@ -1,9 +1,66 @@
|
||||
=== ★ Keycloak 에서 email 을 바꾼다 ===
|
||||
변경 시각: 15:27:52
|
||||
IdP 의 값: [ {
|
||||
IdP 의 값: "email" : "changed-labuser@example.com"
|
||||
IdP 의 값: } ]
|
||||
# B-4 ③ — IdP 의 클레임 변경은 언제 upstream 에 반영되는가
|
||||
#
|
||||
# 이 파일은 재수집본이다. 첫 수집본은 "이제 요청을 반복해 본다" 에서 끝났고,
|
||||
# 그 뒤의 12회 결과는 브라우저 콘솔에서만 보고 파일로 남기지 않았다.
|
||||
# 서브에이전트 감사가 "증거 없이 서 있는 결론" 으로 지적했고, 다시 측정했다.
|
||||
#
|
||||
# 수집 방법:
|
||||
# - 요청부: Playwright 로 연 브라우저에서 fetch('/api/echo') 를 반복.
|
||||
# oauth2-proxy 세션 쿠키가 HttpOnly 라 curl 로는 재현할 수 없어 브라우저를 썼다.
|
||||
# 아래 출력은 브라우저 콘솔이 돌려준 문자열 그대로다.
|
||||
# - 변경부·저장소 확인부: test-server 의 kubectl 출력 그대로.
|
||||
|
||||
=== IdP 쪽 세션과 oauth2-proxy 세션 ===
|
||||
Redis 세션: 1 개
|
||||
(세션은 로그인 시점의 클레임을 담고 있다 — 이제 요청을 반복해 본다)
|
||||
=== [1] 기준선 — 변경 전 (브라우저 fetch) ===
|
||||
2026-09-04T07:51:23.862Z req#1 HTTP 200 x-forwarded-email=labuser@example.com x-forwarded-preferred-username=labuser
|
||||
2026-09-04T07:51:24.304Z req#2 HTTP 200 x-forwarded-email=labuser@example.com x-forwarded-preferred-username=labuser
|
||||
2026-09-04T07:51:24.722Z req#3 HTTP 200 x-forwarded-email=labuser@example.com x-forwarded-preferred-username=labuser
|
||||
|
||||
=== [2] IdP 에서 email 을 바꾼다 (kubectl 출력) ===
|
||||
변경 시각(UTC): 2026-09-04T07:53:32.000Z
|
||||
IdP 의 값:
|
||||
[ {
|
||||
"email" : "changed-labuser@example.com"
|
||||
} ]
|
||||
oauth2-proxy 세션: 1 개 (그대로 살아 있다)
|
||||
|
||||
=== [시계 보정] 두 시계가 다르다 — 해석에 필요하다 ===
|
||||
개발 머신(브라우저 fetch 의 타임스탬프): 2026-09-04T07:52:20Z
|
||||
test-server (kubectl 출력의 타임스탬프): 2026-09-04T07:54:07Z
|
||||
→ test-server 가 약 107초 앞선다.
|
||||
브라우저 07:51:56 = 서버 07:53:43 이므로, 아래 12회는 변경(07:53:32) 11초 뒤다.
|
||||
|
||||
=== [3] 변경 후 12회 반복 (브라우저 fetch) ===
|
||||
2026-09-04T07:51:56.300Z req#1 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
2026-09-04T07:51:56.864Z req#2 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
2026-09-04T07:51:57.489Z req#3 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
2026-09-04T07:51:58.018Z req#4 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
2026-09-04T07:51:58.602Z req#5 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
2026-09-04T07:51:59.217Z req#6 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
2026-09-04T07:51:59.743Z req#7 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
2026-09-04T07:52:00.342Z req#8 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
2026-09-04T07:52:00.964Z req#9 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
2026-09-04T07:52:01.574Z req#10 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
2026-09-04T07:52:02.187Z req#11 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
2026-09-04T07:52:02.719Z req#12 HTTP 200 x-forwarded-email=labuser@example.com
|
||||
|
||||
→ 12회 · 약 6.4초 동안 전부 옛 값. 요청 횟수로는 반영되지 않는다.
|
||||
|
||||
=== [4] IdP 값은 이미 바뀌어 있었다 (대조) ===
|
||||
IdP: "email" : "changed-labuser@example.com"
|
||||
|
||||
=== [5] 세션을 지워 재인증을 강제한다 ===
|
||||
남은 oauth2-proxy 세션: 0 개
|
||||
(Keycloak SSO 는 살아 있으므로 조용히 재인증된다)
|
||||
|
||||
=== [6] 재인증 후 (브라우저 fetch) ===
|
||||
2026-09-04T07:53:01.121Z req#1 HTTP 200 x-forwarded-email=changed-labuser@example.com
|
||||
2026-09-04T07:53:01.456Z req#2 HTTP 200 x-forwarded-email=changed-labuser@example.com
|
||||
2026-09-04T07:53:01.785Z req#3 HTTP 200 x-forwarded-email=changed-labuser@example.com
|
||||
|
||||
=== 결론 ===
|
||||
변경 후 12회 요청(6.4초) → labuser@example.com (옛 값)
|
||||
세션 삭제 후 재인증 → changed-labuser@example.com (새 값)
|
||||
|
||||
→ 반영 시점은 요청 횟수가 아니라 세션이 새로 만들어지는가로 정해진다.
|
||||
--cookie-refresh 가 설정되어 있지 않으므로, 실제 운영에서는
|
||||
쿠키 만료(1시간) 또는 재인증까지 옛 값이 간다.
|
||||
|
||||
Reference in New Issue
Block a user