docs(pairing): TTL + token-revoke now enforced post-bind (nsecbunkerd#27) #28
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "docs/ttl-revoke-enforced-post-bind"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Reverses the docstring guidance shipped in #27 (the spirekeeper PR) one day prior, after nsecbunkerd#27 landed and was deployed (2026-06-19).
What changed in the bunker
nsecbunkerd#27 (merge
992c6a8, Option D / closes nsecbunkerd#24/#25/#12) makes the sign-time ACL evaluate token lifecycle live on every request:checkIfPubkeyAllowedstep 4 joins theTokenthroughliveWhere(now)={ revokedAt: null, OR: [expiresAt null, expiresAt > now] }.applyTokenstopped photocopying policy rules into per-KeyUserSigningConditionrows, so step 4 is the single live source of truth (no materialized grant can outlive its token).Verified against the deployed
devtree before writing this.Consequence — two prior claims reversed
duration_hours/ tokenexpiresAtIS now enforced post-bind. An expired token stops signing on the next request, not just at first connect. The previous docstring ("connect-window-only", pointing at the now-closed nsecbunkerd#24) is corrected.What did not change
revoke_spirestill callsrevoke_key_user(setsKeyUser.revokedAt, the step-2 subject-level ban). That cuts the whole binding regardless of how many tokens were issued — the right semantics for "revoke this spire" — whereas token-revoke severs only one token's grant. So the code is unchanged; only the rationale docstring + one test comment are updated.Doc/comment only — no logic touched. 20 pairing tests green.
🤖 Generated with Claude Code
padreug referenced this pull request2026-06-22 09:00:55 +00:00