The keycloak project ended with four open questions that design could not
settle. A two-VM lab was built to answer them by measurement, and this is
that material: 26 experiments, 125 raw command outputs, 22 browser captures.
Follows the import procedure in README.md.
source/ the originating repository verbatim — 78 documents, 28 SVGs,
8 manifests, plus .source-revision recording the commit
final/ the SSOT
document.md 729 lines written from the 29 experiment documents, not
concatenated: what was predicted, what was measured, and
where the measurement itself was wrong
evidence/raw 125 outputs, flattened to <experiment>__<file> because
the originals collided (01-baseline.txt appeared three
times) and the audit only globs the top level
evidence/meta one per raw file; command and exitCode are null and the
README says why rather than inventing them
evidence/browser 22 captures
assets/ three diagrams through techviz
.techviz/ their VizSpecs
A separate project rather than an addition to keycloak: the B-layer answers
that project's four questions, but the A, C and D layers are about cluster
failure, SSO and operations, and one document.md should hold one subject.
The four question records there can point here through 관계.
Recorded rather than papered over: only three of the 28 diagrams were
remade. The repository forbids hand-drawn SVG and forbids titles inside the
canvas; all 28 originals carry both, so converting them is redrawing, not
reformatting. They stay in source/ and the gap is written into the document.
verify-pipeline.py passes. audit-records.py reports no issues.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5.2 KiB
kind, slug, title, topic, project, status, sourceRevision, rootTreeNode, evidenceCapturedOn, body, assets, evidence, source
| kind | slug | title | topic | project | status | sourceRevision | rootTreeNode | evidenceCapturedOn | body | assets | evidence | source | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CASE | startup-validator-is-the-only-reader-of-four-keys | 시작 검증기가 유일한 소비자인 설정 키 넷이 아무것도 게이트하지 않는다 | runtime-reachability-and-composition | clean-architecture-backend-template | 게시 전 | 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 | case:startup-validator-is-the-only-reader-of-four-keys | 2026-09-01 | case-startup-validator-is-the-only-reader-of-four-keys.body.md |
|
|
|
시작 검증기가 유일한 소비자인 설정 키 넷이 아무것도 게이트하지 않는다
검증기를 이름으로 부르는 파일은 자기 자신과 자기 테스트뿐이다. 자동 설정은 빈 아홉을 만들고 검증을 부르지 않는다. 그리고 그 검증기가 유일한 소비자인 설정 키가 넷이다.
관계
- 시작 검증기가 시작 시 실행되지 않는다 다른 가족의 같은 형태다.
- 검증기는 발행이 아니라 주입이 강제다 이 사례에서 뽑은 규칙이다.
- 같은 자동 설정 안에서 검증기 하나만 감싸이지 않아 트랜잭션 조건이 검사되지 않는다 같은 통독에서 나온 짝이다.
문제
시작 검증기의 자바독이 선정 기준을 적는다.
여기 담긴 모든 규칙은 실행 시 증상이 침묵이거나 오귀인인 실수라는 것이다. 마감 없는 단항 메서드는 클라이언트 자신의 마감까지 매달리고, 무제한 실행기는 과부하를 무제한 지연으로 바꾸고, 운영의 전체 신뢰는 전송 보안을 보고하면서 제공하지 않고, 운영의 반사 공개는 스키마를 게시하고, 원장 없는 키 필수 메서드는 지킬 수 없는 멱등 키를 받아들인다는 것이다.
그리고 어느 것도 연기 테스트를 실패시키지 않는다는 것이다.
결론
그 검증이 돌지 않는다.
검증기를 이름으로 부르는 파일이 둘뿐이다. 자기 자신과 자기 테스트다.
자동 설정은 실행기 프로파일과 서버 프로파일과 승인 제어기와 상태 레지스트리와 반사 정책과 관리 노출 정책과 배수 정책과 문맥 결속기와 오류 사상기, 아홉 빈을 만든다. 검증 호출이 없고 초기화 콜백도 없다.
그래서 클래스 자바독이 약속한 성질이 성립하지 않는다. 아무도 눈치채지 못할 방식으로 틀린 설정에서 시작을 거부한다는 것이다. 지금은 그냥 시작한다.
함께 사라지는 것이 있다.
검증기가 유일한 소비자인 설정 키가 넷이다. 전송과 TLS 사용 여부와 전체 신뢰와 원장 활성화다.
전송 키는 자동 설정이 아예 보지 않는다. 서버 프로파일 팩토리가 안정 전송을 하드코딩한다.
TLS 두 키는 배포 환경의 바닥을 강제할 곳이 없다.
원장 키는 멱등 키 필수 메서드가 원장 없이 열리는 것을 막을 곳이 없다.
같은 저장소가 정본을 둘 갖고 있다. 메시징 가족은 시작 프로파일 검증을 초기화 콜백으로 돌려 이 문제를 이미 한 번 해결했고, 파일 서버 하위 트리는 증명 메서드를 부트스트랩의 빈으로 연결했다.
검증 환경
Spring Boot : 4.0.8 확인 방식 : 호출자 전수 검색과 설정 키별 소비자 계수 소스 수정 : x
재현 조건
원문은 document-detail 의 analysis/grpc/grpc-spring-boot-starter.md 에 있다.
- 검증기 클래스 이름을 저장소 전체에서 검색한다.
- 자동 설정의 빈 목록을 읽고 검증 호출이 있는지 본다.
- 설정 속성의 각 접근자를 저장소 전체에서 검색한다.
- 검증기 밖에 소비자가 없는 키를 가려낸다.
- 서버 프로파일 팩토리가 전송 키를 읽는지 확인한다.
본문
검증기를 이름으로 부르는 파일은 자기 자신과 자기 테스트뿐이다. 자동 설정은 빈 아홉 개를 만들고 requireValid 를 부르지 않으며 초기화 콜백도 없다.
StartupProfileValidation 참조 위치
:::evidence key="startup-validator-is-the-only-reader-of-four-keys" alt="코드베이스에서 StartupProfileValidation 를 검색한 출력 4줄. 이 기록이 세는 참조가 그 출력에 그대로 보인다." caption="StartupProfileValidation 코드베이스 검색 — 4줄 · exit 0" zoom="true" :::
그 검증기가 유일한 소비자인 키 넷
transport·tls-enabled·trust-all-certificates·operation-ledger-enabled. 따라서 운영 환경의 TLS 바닥도, 비운영 전송 거부도, 멱등 키 필수 메서드의 원장 요구도 강제되지 않는다.
같은 저장소가 정본을 둘 갖고 있다
messaging 의 StartupProfileValidation 과 fileserver 의 증명 호출이다.
확인하지 못한 것
스타터를 애플리케이션에 올려 컨텍스트를 세우지 않았다. 빌드 전용 리프라 그 배포가 없다.