Skip to content

Harden DPoP replay store and add Redis integration specs - #342

Merged
woksin merged 4 commits into
mainfrom
train/authproxy-2026-11-12-h
Nov 12, 2026
Merged

woksin merged 4 commits into
mainfrom
train/authproxy-2026-11-12-h

Conversation

@woksin

@woksin woksin commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

Summary

DPoP replay protection is more predictable when Redis is slow or a request lacks scope, and the Redis replay store is now covered by specs that run against a real Redis.

Changed

@woksin woksin added the patch label Nov 12, 2026
@woksin

woksin commented Nov 12, 2026

Copy link
Copy Markdown
Contributor Author

Folded items

  • l113-302-redis-replay-specs at 8b1f3ab2e4199f1f001569aa5651a211a55bffbb; cancelled runs: none

Verification

build: train-h-build (2026-11-12T20:02:11.073053Z)

@woksin

woksin commented Nov 12, 2026

Copy link
Copy Markdown
Contributor Author

Reviewer notes

  • New Source/AuthProxy.Integration.Specs (Testcontainers Redis): cross-replica reservation, Redis restart without replay evidence, replica/Redis clock disagreement, quarantined replay coverage. The project is a test project only when RunRedisReplaySpecs=true, so solution-level dotnet test stays container-free; the new path-filtered Redis replay specs job (part of gate) opts in.
  • Local gate on the train head: Release build with warnings as errors, AuthProxy.Specs (6,432) and AuthProxy.Security.Specs (1,595) green. The Redis specs have not run locally; their first run is this PR's CI.
  • Code Health: RedisDpopReplayStore.cs 9.58 -> 9.50, when_caching_replay_store_health.cs 10 -> 9.68 (both at or above 9.5, one refactor pass; the added defensive checks and data-driven cases account for the drop).
  • Two review rounds (deep, security lens); the second passed with no findings.

Supersedes #341. Adds one spec-only fix on top of it: the Redis replay specs share one Redis instance, so the final assertion now ignores a synthetic-proof key left by the sibling spec. Product code is identical to #341, whose unit specs passed locally; this head passed a local Release build with warnings as errors.

@woksin woksin self-assigned this Nov 12, 2026
@woksin
woksin merged commit 70e2963 into main Nov 12, 2026
19 of 25 checks passed
@woksin
woksin deleted the train/authproxy-2026-11-12-h branch November 12, 2026 20:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant