Skip to content

v0.76.0

Choose a tag to compare

@github-actions github-actions released this 30 Jun 21:47
· 1263 commits to main since this release

Added

  • 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.