PS-Asserted Access (3-party)
The resource issues a resource token whose aud is the agent's Person Server URL — not an AS. The agent sends the resource token to the PS, and the PS issues the auth token directly, asserting identity claims (sub, optionally email, tenant, groups, roles) and consent for the requested scope. No Access Server is involved. The auth token's iss is the PS itself, and the resource applies its own policy to the asserted claims.
Agent token contains ps claim: ps="https://ps.example" — resource knows the agent's PS.
Resource issues 401 + aa-resource+jwt. KEY DIFFERENCE: aud = PS URL (https://ps.example), not an AS URL.
Because aud=PS, the PS will handle token issuance directly — no Access Server is needed.
Step 1: Signed GET /data-auth → 401 + resource token (aud=PS)
api.example
sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFnZW50LWtleS0xIiwidHlwIjoiYWEtYWdlbnQ…
sig=("@method" "@authority" "@path" "signature-key");created=1700000000;alg="ed2…
sig=:Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4…
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":"agent-key-1","typ"?:"aa-agent+jwt"}{"iss"?:"https://agent.example","sub"?:"aauth:local@agent.example","dwk"?:"aauth-agent.json","jti"?:"a6ae301d-1dc7-4b75-8f8b-5612197664a7","cnf"?:{"jwk"?:},"iat"?:1776222894,"exp"?:1776226494,"ps"?:"https://ps.example"}{"alg":"EdDSA","kid":"resource-key-1","typ"?:"aa-resource+jwt"}{"iss"?:"https://api.example","aud"?:"https://ps.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}