You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A hub can now load its federation policy from an imported store at startup with synapse hub --federation-store FILE, so a peering imported with synapse federation import takes effect on the next start. The store's peerings — including revoked or expired
ones, which authorise nothing — are composed into the live frame authorisation. Federation
binds authority only alongside --require-message-auth; a store without it logs a warning
that no cross-domain frame will be honoured, and a malformed store is reported and refused.
With no store the live path is unchanged.
Wired the federated trust policy into the live authorisation of agent frames, opt-in and
deny-closed. A hub configured with a federation bundle now recognises a frame from a peered
remote domain — identified only from its verified signing key and the live certificate pin,
never a self-declared field — and authorises it against that peering's bounded scope, composed
with mutual TLS, the event signature, and the mapped scope. A frame any layer refuses is
refused with the reason named; a cross-domain frame on a hub that does not require per-message
authentication is refused, since its authority cannot be bound. An allowed cross-domain frame
is routed without the local access policy, which a remote subject has no identity in. A hub with
no federation bundle is unchanged: every frame takes the local path exactly as before.
Added a scope check that authorises a remote subject's frame against a peering's bounded
scope, evaluated exactly as a local subject's frame is against the local access policy. Each
access the frame requires is mapped to a verb in the remote subject's namespace, and every one
must be granted by the peering's scope; a subject inherits no local default, so a frame with no
granted verb, an empty scope, or no mapped access at all is denied rather than allowed. This
keeps one authorisation vocabulary across local and cross-domain frames — only the policy they
are evaluated against differs. Pure building block; not yet wired into the live frame path.
Added a resolver that identifies which peered domain a frame belongs to from verified
credentials alone. Given the Ed25519 signing-key id taken from a frame's verified signature and
the certificate pin read off the live connection, it returns the single peered domain that
accepts both, or nothing when no peering accepts both or more than one does. A key accepted by
one domain presented over another domain's connection resolves to neither, and an ambiguous
configuration is refused rather than guessed, so a frame's issuing domain is never taken from
self-declared content. This is a pure building block; the live frame path is unchanged until it
is wired in.