CrossDomainSsoUser
일반 사용자용 다도메인 SSO를 broker/client 구조로 제공하는 플러그인입니다. 엄격한 subject 계약, 명시적 사전 연결, fail-closed 준비도 게이트를 적용합니다.
상태
| 항목 | 값 |
|---|---|
| Layer | core |
| Tier | L1 |
| Status | wip |
| Version | 0.4.0 |
| 가격 | Free |
| 카테고리 | Security & Auth |
P0 producer 보안 강화는 완료됐습니다. 그러나 소비 프로젝트 wiring, 지정 migration, secret 배치, identity pre-link, runtime 활성화와 운영 smoke test는 아직 실행하지 않았으며 별도 Gate C 승인이 필요합니다. 기본 상태는 OFF입니다.
역할 구분
CrossDomainSsoUser는 여러 MSK 서비스의 일반 사용자 로그인을 연결합니다.
ExternalSsoModule: MSK에서 외부 OSS로 진입하는 SSO 어댑터- ADR-040 Cross-Domain SSO: Platform Admin의 관리 도메인 이동
CrossDomainSsoUser: broker가 외부 subject를 증명하고 각 client가 자기 로컬 계정을 결정하는 일반 사용자 흐름
broker는 SSO 운영 데이터만 보유합니다. 사용자 마스터와 권한은 각 client SaaS가 계속 소유하며, broker의 사용자 ID나 권한을 client 계정으로 신뢰하지 않습니다.
P0 wire contract
broker의 token 응답은 아래 다섯 필드만 허용합니다. 누락 필드뿐 아니라 추가 필드도 거부합니다.
{
"contract_version": 1,
"provider_key": "opaque-provider-key",
"subject": "opaque-provider-subject",
"client_id": 42,
"issued_at": 1700000000
}
provider_key는 provider 생성 후 변경할 수 없는 안정 키입니다.subject는 provider가 부여한 불투명 식별자이며 로그와 진단 출력에는 원문을 남기지 않습니다.- broker DB의 user ID, email, name, role, level, permission은 전송하지 않습니다.
- client는 미리 명시적으로 연결한 active
(provider_key, subject)1건만 로컬 사용자로 투영합니다. - email 일치, prompt link, JIT 계정 생성, 숫자 provider fallback은 P0 callback 경로에서 사용하지 않습니다.
인증 흐름
- client
/sso/start가 256-bit client state를 생성합니다. - broker
/sso/authorize가 등록된 callback과 정확히 일치하는지 확인하고 별도의 upstream state를 생성합니다. - provider callback이 upstream state를 한 번 소비하고 v1 assertion을 담은 1회용 authorization code를 발급합니다.
- client callback이 자기 client state를 한 번 소비합니다.
- server-to-server token 교환이 32-byte 이상 client secret을 검증한 뒤 code를 소비합니다.
- client가 stable pre-link와 로컬 사용자 활성 상태, Tenant/SaaS 경계를 검증한 후 세션을 재생성합니다.
client state와 broker upstream state는 서로 대체할 수 없습니다. 각 state/code는 payload 삭제 동작에 의존하지 않는 consumed marker로 단 한 요청만 성공하도록 처리합니다.