Federated Access (4-party)
The complete 4-party autonomous flow: Agent → Resource → Person Server → Access Server. The resource issues a resource token with aud=AS URL. The PS federates to the AS on behalf of the agent, and the AS issues the aa-auth+jwt that the agent presents to the resource.
Agent signs with sig=jwks_uri (agent identity).
Resource issues 401 + AAuth-Requirement containing aa-resource+jwt.
Resource token has aud=AS — only the AS can honour it.
The agent token's ps claim tells the ecosystem which Person Server represents this agent.
Step 1: Signed GET /data-auth → 401 + resource token
api.example
sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFnZW50LWtleS0xIiwidHlwIjoiYWEtYWdlbnQ…
sig=("@method" "@authority" "@path" "signature-key");created=1700000000;alg="ed2…
sig=:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo…
Covered Components
Signature Base
Signature-Key Header
sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFnZW50LWtleS0xIiwidHlwIjoiYWEtYWdlbnQrand0In0…"
Signature-Input Header
sig=("@method" "@authority" "@path" "signature-key");created=1700000000;alg="ed25519"
{"alg":"EdDSA","kid":"resource-key-1","typ"?:"aa-resource+jwt"}{"iss"?:"https://api.example","aud"?:"https://as.example","dwk"?:"aauth-resource.json","jti"?:"ec12c052-ab17-49e1-88d3-5e2317ba82c4","agent"?:"aauth:local@agent.example","agent_jkt"?:"tcP75aIbpvVmzZ0P-LIZeoLua8SuE8RGM4tO_2OkRpg","scope"?:"read","iat"?:1776222894,"exp"?:1776223494}