Call Chaining (R1 acts as Agent to R2)
Resource 1 needs data from Resource 2 to fulfil the agent's request, so R1 acts as an agent: it has its own agent identity and signing key. It routes the downstream request to the person server named by the ps claim of the upstream auth token — first for a person token for R2, then for the auth token. There is no delegation chain claim: -11 removed act, and the PS holds the chain because it authorizes every hop.
The agent accesses R1 with its AS1-issued auth token (sig=jwt — the auth token is the signing credential).
That token's ps claim names the person's PS. It is what R1 will route the downstream request to.
R1 needs data from R2 to fulfil the request, and it will act as an agent to get it.
Step 1: Agent → R1 with AS1 auth token → R1 needs R2
api.example
sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFzMS1rZXktMSIsInR5cCI6ImFhLWF1dGgrand…
sig=("@method" "@authority" "@path" "signature-key");created=1700000000;alg="ed2…
sig=:UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB…
Covered Components
Signature Base
Signature-Key Header
sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFzMS1rZXktMSIsInR5cCI6ImFhLWF1dGgrand0In0…"
Signature-Input Header
sig=("@method" "@authority" "@path" "signature-key");created=1700000000;alg="ed25519"
{"alg":"EdDSA","kid":"as1-key-1","typ"?:"aa-auth+jwt"}{"iss"?:"https://as.example","dwk"?:"aauth-access.json","aud"?:"https://api.example","jti"?:"5aba3c5f-0509-4483-a99e-394c0a2b1313","ps"?:"https://ps.example","sub"?:"8f14e45fceea167a5a36dedd4bea2543","cnf"?:{"jwk"?:},"scope"?:"read","iat"?:1776222894,"exp"?:1776226494}