Watch
0
0
Fork
You've already forked hyperhive
0

swarm-nats-auth: bound the OIDC secret re-read, and test the 401 that starts it

The re-read of the responder's own OIDC client secret had no timeout:
neither swarm-secret-client nor vaultrs nor reqwest sets one by default,
and while a re-read runs every later refusal joins it rather than
starting another. A store connection whose peer stays alive but silent
therefore held off rotation pickup indefinitely. The spawned re-read
now gives up after 10 s, logs that it did (without the secret), keeps
the secret in use, and frees the slot for the next refusal's re-read.

The link from a non-2xx introspection (identify_caller's
`Answer::Refused`) to that re-read had no test: every existing test
handed `OidcSecret::introspect` an `Answer` directly. A new test runs
the real `identify_caller` against a loopback IdP that answers 401 to
the old secret and admits the new one, so mapping a non-2xx to
anything but `Refused` turns it red. axum is a dev-dependency for that
stub, as in swarm-controller's forge tests.
This commit is contained in:
atlas 2026-10-06 15:25:29 +02:00
commit 32e28e6096
3 changed files with 110 additions and 3 deletions

1
Cargo.lock generated
View file

@ -4895,6 +4895,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"async-nats",
"axum",
"clap",
"data-encoding",
"futures-util",