Identity-Based Access
The simplest resource access mode. The agent signs the request with its agent token (sig=jwt), the resource verifies the signature by resolving the agent provider's JWKS via the token's iss and dwk claims, and makes an access decision based on agent identity alone — no token exchange, no PS, no AS.
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","sub"?:"aauth:local@agent.example","dwk"?:"aauth-agent.json","jti"?:"a6ae301d-1dc7-4b75-8f8b-5612197664a7","cnf"?:{"jwk"?:},"iat"?:1776222894,"exp"?:1776226494}