Wire authentication is HTTP Message Signatures (RFC 9421) plus HTTP Signature Keys (draft-hardt-httpbis-signature-key). Every signed request carries Signature-Key, Signature-Input, and Signature. AAuth presents the agent token (or, in the editor's copy, a person token or auth token) in Signature-Key with scheme=jwt. The cnf.jwk in that JWT is the signing key; a stolen JWT without the private key cannot produce a valid signature.
Challenges replace browser redirects. A 401 carries AAuth-Requirement (for example requirement=agent-token, interaction, or auth-token). AAuth-Capabilities advertises what the resource can do. Subsequent resource-managed calls may present an opaque session via Authorization: AAuth <token> and/or AAuth-Access. AAuth-Mission can bind a content-addressed mission. These header names are from the draft; do not invent parallel names.
Well-known documents are discovered with the dwk ('dot well-known') parameter from Signature-Key: aauth-agent.json, aauth-resource.json, aauth-person.json, aauth-access.json at {iss}/.well-known/{dwk}. Resource metadata may declare access_mode (advisory): in draft-10 the values are agent-token, aauth-access-token, and auth-token. The editor's copy adds person-token and renames the opaque credential a session token (session-token).
JWT types in draft-10: aa-agent+jwt (identity of the agent; sub is the agent identifier; cnf.jwk binds the key; optional ps names the person server), aa-resource+jwt (issued by the resource to describe the access that needs authorizing; aud is the PS or AS that may redeem it; recommended lifetime five minutes or less), aa-auth+jwt (the grant; iss is PS or AS; aud is the resource; user claims such as sub, optional email/tenant/groups/roles; consented scope or R3 grants; cnf bound to the agent's key; MUST NOT exceed one hour). The editor's copy adds aa-person+jwt: a directed identifier of the person at one resource. It identifies; it does not authorize. A recipient MUST reject aa-person+jwt wherever an auth token is required.
Person-server endpoints in draft-10 include a token_endpoint that accepts a resource token and returns an auth token (or 202 + interaction if the user must approve). The editor's copy splits this: person_token_endpoint (REQUIRED) and auth_token_endpoint (renamed from token_endpoint). Four-party: the PS discovers {aud}/.well-known/aauth-access.json and calls the AS token endpoint. Auth tokens reuse RFC 8693 act for delegation chains. Call chaining uses upstream_token / subagent_token so a sub-agent signs with its own key while nested act records the parent.
Governance is orthogonal to access mode. Missions are natural-language (Markdown) intent, immutable via s256. Permission, audit, and interaction relay through the PS even when the resource is in identity-based mode. R3 (companion draft) replaces coarse scopes with vocabulary operations, including per-call approval.
- typ: aa-agent+jwtfrom spec
- Quoted from draft-10: agent identity JWT. sub is the agent identifier (aauth:local@domain). cnf.jwk is the signing key. Optional ps names the person server. Lifetime SHOULD NOT exceed 24 hours in the editor's copy.
- typ: aa-auth+jwtfrom spec
- Quoted from draft-10: the grant. Required payload claims include iss, dwk, aud (the resource), jti, agent, cnf.jwk, iat, exp. Lifetime MUST NOT exceed 1 hour. Optional act, user claims, scope / R3 fields, mission_s256.
- typ: aa-resource+jwtfrom spec
- Quoted from draft-10: issued by the resource; aud is the PS (three-party) or AS (four-party). Short-lived (five minutes recommended). Carries what needs authorizing so the PS/AS can show consent UX.
- typ: aa-person+jwtfrom spec
- Quoted from the editor's copy (absent from draft-10's four-mode table): directed person identifier at one resource. Identifies, does not authorize. MUST NOT be accepted where an auth token is required.
- AAuth-Requirement / AAuth-Access / AAuth-Capabilitiesfrom spec
- Quoted header names from draft-10. Challenges, opaque session/auth presentation, and capability discovery. Not WWW-Authenticate: Bearer.
- Signature-Key: scheme=jwtfrom spec
- Quoted usage: the JWT (agent, and in the editor's copy person or auth token) rides in Signature-Key. Cover the signature-key component in the RFC 9421 signature base so the header cannot be swapped.
- access_mode=agent-token | aauth-access-token | auth-tokenfrom spec
- Quoted from draft-10 resource metadata. Advisory. Editor's copy registry: agent-token, person-token, session-token, auth-token (R3 adds per-call).
- Authorization: AAuth <session>illustrative
- Illustrative of resource-managed presentation in draft-10 examples. The session is opaque to the agent; the signature still binds the request. Do not copy example token values from blogs as test vectors.