Summary#
- Implements
POST /oauth/tokenwithauthorization_codeandrefresh_tokengrants (RFC 6749) - DPoP proof validation with server-issued nonces (RFC 9449) — enforced on all token requests
- PKCE S256 verification using constant-time comparison to prevent timing oracles
- ES256 access tokens in AT+JWT format with
cnf.jktDPoP binding (RFC 9068) - Single-use refresh token rotation with atomic SELECT+DELETE to prevent TOCTOU races
- Persistent P-256 signing keypair (AES-256-GCM encrypted at rest)
- V012 migration:
jktcolumn onoauth_tokens,oauth_signing_keytable
Test Plan#
-
cargo test -p relay— 334 tests, 0 failures -
cargo clippy -p relay -- -D warnings— 0 warnings - Human test plan:
docs/test-plans/2026-03-22-MM-77.md(30/30 AC automated; AC6.2 needs manual restart verification)