Agent Identity Access
The agent signs requests with its agent token. The resource verifies the HTTP signature and the token, and applies its own access control policy on who the agent is. This replaces API keys with cryptographic identity: no authorization flow, no PS, no AS, and no token beyond the agent token. A resource that wants an AAuth agent token in particular says so with requirement=agent-token.
Agent presents its agent token in the Signature-Key header using sig=jwt.
Resource resolves the token: fetches agent.example/.well-known/aauth-agent.json, verifies JWT signature, extracts cnf.jwk.
Resource confirms the HTTP signature was made with the key in cnf.jwk.
Resource checks its internal policy — this agent identifier is in the allowed list.
Access granted. No PS, no AS, no token exchange — pure cryptographic identity.
Step 1: Signed GET /data (sig=jwt) → resource verifies agent token → 200
api.example
sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFnZW50LWtleS0xIiwidHlwIjoiYWEtYWdlbnQ…
sig=("@method" "@authority" "@path" "signature-key");created=1700000000;alg="ed2…
sig=:BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU…
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","dwk"?:"aauth-agent.json","sub"?:"aauth:local@agent.example","jti"?:"a6ae301d-1dc7-4b75-8f8b-5612197664a7","cnf"?:{"jwk"?:},"iat"?:1776222894,"exp"?:1776226494}