Datatracker references, contributor names, and agent token revocation at the PS - #70
Merged
Conversation
The companion drafts each carried a hand-maintained <reference> block for the AAuth Protocol pointing at the repository, so the rendered citation was a bare github.com link with no revision or date. The protocol spec is on the datatracker through -09, and this repo's convention since 90089f8 is to hand-maintain a block only for drafts the datatracker cannot resolve -- which is why the protocol draft still carries blocks for R3 and events, neither of which has been published. Dropping the block in R3, events, and bootstrap makes all three resolve to draft-hardt-oauth-aauth-protocol-09 with its datatracker URL. Also names He Gu, previously listed by the handle hegu-1: their profile README reads "He Gu / naze" and states they sign their work as naze. sdatapix remains a handle -- no name is set, there are no public repos or events, and channelseal.com names nobody. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011H2BBgoKc7DqXeme5yT9Ls
…vision A citation that resolves from the datatracker renders a pinned revision -- draft-hardt-oauth-aauth-protocol-09 with a -09 URL -- which goes stale as soon as the next revision is submitted. These documents ship together, so within the family the useful target is the datatracker document page, which always shows the latest revision. The repo already did this for HTTP Signature Keys in the bootstrap and events drafts; it was simply not applied consistently. Applies to every AAuth-family draft that exists on the datatracker, verified by fetching each: the protocol (rev 09), signature keys (08), and bootstrap (01). R3 and Events return 404 there -- neither has been submitted -- so they keep repository targets until they are. Third-party drafts (ryan-httpauth-payment, crockford-davis-base32) are deliberately left to resolve to a pinned revision. Their content can change without notice, so a fixed revision is what a normative citation to someone else's work should name. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011H2BBgoKc7DqXeme5yT9Ls
Removes the duplicate handle entry. The two were listed separately because the sdatapix profile sets no name and the account has no public repos, events, or org memberships to connect it to a person; Dick confirmed the identity. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011H2BBgoKc7DqXeme5yT9Ls
An agent provider revokes an agent token by calling the PS's revocation endpoint, not one of its own. The AP knows which PS from the `ps` claim it placed in the token, and the PS is where the consequences land: it denies the agent token thereafter and revokes what it issued or provided for that agent at each resource. Identity-based access does not go through the PS, so it relies on the resource's own revocation endpoint or the agent token lifetime. The OPTIONAL `revocation_endpoint` on agent provider metadata is removed; issue #60 asked for this at the PS. "Auth tokens are verified offline" overstated it — a resource fetches the issuer's JWKS for a verification key. What holds is that nothing in verification asks the issuer about the token itself, which is why a revocation has to be pushed to reach a holder. Removed Approved Tools and Offline Accountability, reopening issue #49, and Resolving the Account. The `account` parameter itself stays. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016LfnjrsxHf2nSe74JFLh4S
Eighteen entries to fourteen, each shorter. Related changes are merged — the two `alg`-carrying requirements into one key entry, the issuer-check and status-code changes into one error entry, the directed `sub` rule with the example update it forced — and the rationale each entry carried is cut back to what a reader needs to find the change in the document. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016LfnjrsxHf2nSe74JFLh4S
Fourteen entries to six. What remains is what an implementer has to act on: the algorithm and key requirements, the verification and error alignment, revocation keyed on (iss, jti), the directed `sub` rule, and the `account` parameter. Editorial changes — reference targets, acknowledgments, rewritten comparisons, updated examples, IANA designated expert instructions — are in the commit history and do not need an entry here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016LfnjrsxHf2nSe74JFLh4S
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
1. Datatracker document URLs, not pinned revisions
A citation that resolves from the datatracker renders a pinned revision —
draft-hardt-oauth-aauth-protocol-09with a-09URL — which goes stale the moment the next revision is submitted. Within the AAuth family, where the documents ship together, the useful target is the datatracker document page, which always shows the latest revision.The repo already did this for HTTP Signature Keys in the bootstrap and events drafts; it just wasn't applied consistently. Applied now to every family draft that exists on the datatracker, verified by fetching each:
draft-hardt-oauth-aauth-protocoldraft-hardt-httpbis-signature-keydraft-hardt-aauth-bootstrapdraft-hardt-aauth-r3draft-hardt-aauth-eventsThird-party drafts are deliberately left pinned — their content can change without notice, and a fixed revision is what a normative citation to someone else's work should name.
2. Contributor names
He Gu, previously listed by the handle
hegu-1. Andsdatapixremoved as a duplicate — it is Sanjay Dalal, already listed.3. Agent token revocation happens at the PS
The
-10text had the agent provider revoking an agent token at arevocation_endpointof its own. Wrong endpoint. The AP calls the PS's revocation endpoint, knowing which PS from thepsclaim it placed in the token, and the PS then denies that agent token and revokes the auth tokens it issued or provided for that agent at each resource. Issue #60 asked for this at the PS in the first place.The OPTIONAL
revocation_endpointon agent provider metadata is removed. Reporting a compromised agent between parties is a signal, not a revocation — filed as #71 for a companion draft.Identity-based access (
requirement=agent-token) sends the agent token straight to the resource, and the AP has no record of which resources those are, so that path relies on the resource's own revocation endpoint or the agent token lifetime.4. The offline verification claim
"Auth tokens are verified offline, from their signature and claims, with no call to the issuer" overstated it — a resource does call the issuer, fetching the JWKS for a verification key. The property that actually holds is that nothing in verification asks the issuer about the token, which is why a revocation has to be pushed to reach a holder.
5. Two sections removed
accountparameter, its opaque-namespace semantics, and the contrast withlogin_hintall stay; the resolution and no-enumeration text is out.Cross-references and Document History entries updated for both. All four drafts build clean.
🤖 Generated with Claude Code
https://claude.ai/code/session_016LfnjrsxHf2nSe74JFLh4S