File changed.
Preview size limit exceeded, changes collapsed.
File changed.
Preview size limit exceeded, changes collapsed.
Corrects a spec drift in the Federation Manager E/WBI authorization model: mTLS is no longer the primary mechanism — OAuth2 Client-Credentials + signed JWT is, per GSMA OPG.04 v6.0 Sec. 9. mTLS is reclassified as deferred defense-in-depth (sender-constrained tokens, RFC 8705) until real Nginx mTLS termination exists.
Introduces ADR-0038 and propagates the correction across the FM and platform architecture docs. The persistence model is excluded from this MR — it is WIP on a separate branch.
ADR-0016 (FM stack) assumed in passing that E/WBI authorization is mTLS with pre-exchanged client certificates, terminated by Nginx, with FM validating the client-cert thumbprint against partner_ops. Checked against the actual normative artifact — GSMA OPG.04 v6.0 — that does not match:
OPG.04_EWBI_Federation_API_v1.4.0.yaml) declares a single root-level security requirement (oAuth2ClientCredentials: [fed-mgmt]) covering all 74 operations, with no mTLS securityScheme and zero per-operation overrides.On the implementation side: FM does not implement OAuth2/JWT for E/WBI today, and the Nginx mTLS terminator ADR-0016 assumed does not exist yet — today's cert-thumbprint header is not derived from any real TLS client-certificate handshake, so it proves no identity cryptographically. It is a partner lookup, not authentication, and cannot satisfy REQ-FED-01 on its own.
The platform already runs a centralized Keycloak (core Compose profile) serving OEG's NBI auth and FM's own internal admin routes (realm oop). This ADR extends that existing pattern with a dedicated federation realm — partner OPs are an external, adversarial-by-default trust domain, isolated from internal/admin identity.
federation realm. Each partner gets its own Keycloak client (fed-mgmt scope; fed-mgmt-notif for callbacks). FM is both Client (outbound) and Authorization+Resource Server (inbound).partner_ops.cert_thumbprint stays as a future hook (RFC 8705 sender-constrained tokens once real Nginx mTLS termination lands); removed from today's authorization decision path.| File | Change |
|---|---|
decisions/0038-ewbi-oauth2-client-credentials-mtls-deferred.md |
New ADR. |
decisions/index.md |
ADR-0038 registered (ADR-0037 is canonical-target-ports on develop — renumbered from 0037 to avoid the collision). |
fm/requirements-and-design.md |
REQ-FED-01 rewritten: OAuth2 Client-Credentials + JWT is the requirement; mTLS is deferred. Spec refs corrected. |
fm/overview-and-architecture.md |
EWBI termination + partner-auth positions updated; assumptions F2/F5/F6 revised (F6 elevated to high risk — the federation realm is now the primary EWBI mechanism, with no fallback). |
fm/implementation-and-delivery.md |
§P.3 rewritten from mTLS to OAuth2 (inbound JWKS/JWT validation; outbound token acquisition + cache); mTLS moved to new deferred §P.3.1. Boundary + threat tables updated. |
platform/architecture.md |
FM EWBI gateway pattern + platform boundary/role tables updated. |
platform/future-architecture.md |
Federation-partner auth row updated. |
fm/persistence-model.md is deliberately not in this MR — it is WIP on add-fm-persistent-model. The ADR-0038 Security-Design alignment for the persistence model will land with that branch.
This MR is the architecture-side resolution of the FM E/WBI auth drift, tracked in the oop/code/federation-manager repo:
ADR-0038 chooses a centralized Keycloak federation realm (platform-shared infrastructure) as the Authorization Server. Issue #18 carries a decoupling constraint: "Auth is self-contained to FM; it must not rely on [...] shared platform infrastructure beyond what FM itself runs" and "No hard coupling to any other component's identity provider; FM validates partner tokens against the partner's advertised issuer/authz server."
These two positions are not obviously reconcilable:
federation realm) JWKS — i.e., FM as Resource Server trusts its own platform's AS.Both are defensible readings of OPG.04 Sec. 9 (Sec. 9.2 assigns both Client and AS roles to each OP for its own domain). The difference is whether the inbound Authorization Server is the local platform Keycloak (ADR-0038) or the partner's remote AS (issue #18). This needs a decision before #18's implementation finalizes, so the architecture and the implementation agree. I've left the ADR accepted on the architecture side but flagged this here so it is reviewed consciously.
c0f9fea docs: propagate ADR-0038 to platform architecture + future-architecture
78dcdf3 docs: align FM implementation-and-delivery EWBI auth to ADR-0038
6dbfe4a docs: align FM overview-and-architecture to ADR-0038
497e93c docs: align FM REQ-FED-01 to ADR-0038 (OAuth2 over deferred mTLS)
ff414a3 feat: add ADR-0038 — EWBI auth is OAuth2 via Keycloak; mTLS deferredFile changed.
Preview size limit exceeded, changes collapsed.
File changed.
Preview size limit exceeded, changes collapsed.