Added config generate-csrf-key, to store a CSRF key that survives restarts and works across instances

Without server.csrf.tokens.key, each server process signs CSRF tokens with
a random key of its own, so tokens are lost on a restart and rejected by
other instances. "job-search config generate-csrf-key" stores a new random
32-byte hex key in the configuration file, without printing it. --print
only prints a key, for JOBSEARCH_SERVER_CSRF_TOKENS_KEY or another
instance. An existing key is only replaced with --force, as that
invalidates every issued token, and no key is stored while
JOBSEARCH_SERVER_CSRF_TOKENS_KEY is set, as it would override the file.
This commit is contained in:
bwilliams committed 2026-10-16 10:53:13 +01:00
1 parent 18db462d89
commit eba6af680f
7 files changed
+241 -6

No files matched your search

+2 -2
View File
@@ -200,8 +200,8 @@ func TestEnvVarName(t *testing.T) {
"server.websocket.connection_limit.enabled": "JOBSEARCH_SERVER_WEBSOCKET_CONNECTION_LIMIT_ENABLED",
}
for key, want := range tests {
if got := envVarName(key); got != want {
t.Errorf("envVarName(%q) = %q; want %q", key, got, want)
if got := EnvVarName(key); got != want {
t.Errorf("EnvVarName(%q) = %q; want %q", key, got, want)
}
}
}