v0.23.0¶
Release Date: 2026-10-27
A security release for resource servers that accept AI agents. aauthrs now
accepts auth tokens only from the server entitled to issue them, binds every
verified signature to the resource that receives it, and gains a revocation
hook. It updates aauth-go to v0.3.0. It is breaking for resources that accept
an Access Server's auth tokens: read Upgrading first.
Highlights¶
- Auth tokens only from their rightful issuer. In four-party (
Audienceset), only the resource's Access Server may issue the auth tokens it accepts (dwkaauth-access.json). In three-party, only a trusted Person Server issuing for itself (dwkaauth-person.json). Before, any issuer inTrustedIssuerswas accepted with eitherdwk, so a Person Server trusted for person tokens could grant itself scopes that bypass the Access Server's policy. - Signatures bound to this resource.
Signature.Authoritydefaults to the host ofResource, so a request signed for another server is refused. Auth and person tokens are already addressed to one resource; agent tokens are not, so in agent-token mode a server an agent called could otherwise replay the agent's signed request here. - A revocation hook.
Config.IsRevokedis asked about every token once it and the request signature verify: a revoked token is a 401revoked_jwt, unavailable revocation state a 500. It works like aauth-go'sResourceGuard, so applications need not wrap the authenticator to check revocations.
Breaking Changes¶
- Name the Access Server in
Audience. A resource that accepts auth tokens from an Access Server must setaauthrs.Config.Audienceto it. Listed only inTrustedIssuers, its auth tokens are refused. The Access Server's keys are resolved throughAudience, which does not make it trusted for person tokens. - No Access Server tokens in three-party. Without
Audience, a trusted issuer's auth token withdwkaauth-access.jsonis refused.
Dependencies¶
github.com/aauth-dev/aauth-gov0.3.0 (was v0.2.0). It verifies more strictly: agent identifiers must be in their provider's domain, request bodies are read up to 4 MiB for verification, token lifetimes are capped, and signature failures no longer carry internal error text.
Documentation¶
- AI Agents (AAuth): choosing three- or four-party,
Audience, the signature authority andIsRevoked
Upgrading¶
There are no database migrations.
-
If your resource accepts auth tokens from an Access Server, set
Audienceto it. When the Person Server and the Access Server share one origin, name that origin in bothTrustedIssuersandAudience: -
If your resource sits behind a proxy, make sure the
Hostheader that reaches it is the resource's public host. A rewrittenHostnow fails signature verification. SetSignature.Authorityyourself only if the resource is reached under a host other than its identifier's. - If your application also uses aauth-go directly, read its v0.3.0 migration guide. Agent providers must use their issuer's host as the agent domain, and
personserverandaccessserverstores gain new methods. - To check revocations, set
IsRevoked, returning an error wrappingaauth.ErrRevokedfor a revoked token.