minor nonce related cleanup

This commit is contained in:
2026-01-16 12:17:18 -05:00
parent 4cec5a5963
commit 4a543f45ca
4 changed files with 12 additions and 14 deletions
+1 -1
View File
@@ -39,7 +39,7 @@ final readonly class InterceptListener {
* nor submitting login credentials; so present the login page now */
$this->logger->debug("presenting login page: {$event->getRequest()->getClientIp()}");
$content = $this->twig->render('login.html.twig', [
'nonce_value' => $this->makeNonce(),
'nonce' => $this->makeNonce(),
]);
$event->setResponse(new Response($content, Response::HTTP_UNAUTHORIZED,
['Content-Type' => 'text/html']
+8 -10
View File
@@ -98,7 +98,7 @@ final readonly class LoginListener {
if ($nonceItem->isHit() && $nonceItem->get()) {
/* mark nonce as spent */
$nonceItem->set(false); /* invalid */
$nonceItem->expiresAfter(60); /* keep for 1 minute */
$nonceItem->expiresAfter(static::NONCE_TTL); /* keep breifly */
$this->noncePool->save($nonceItem);
/* token authentication successful, grant access and set response */
@@ -159,7 +159,7 @@ final readonly class LoginListener {
if (($nonceItem->isHit() && $nonceItem->get()) || ! $nonceItem->isHit()) {
/* mark nonce as spent */
$nonceItem->set(false); /* invalid */
$nonceItem->expiresAfter(60); /* keep for 1 minute */
$nonceItem->expiresAfter(static::NONCE_TTL); /* keep breifly */
$this->noncePool->save($nonceItem);
/* password authentication successful, grant access and set response */
@@ -239,19 +239,17 @@ final readonly class LoginListener {
$status = Response::HTTP_UNAUTHORIZED;
$message = $this->config->errorMessage();
}
$answer = [
'message' => $message,
'nonce' => $this->makeNonce(),
];
if ($json) {
$contentType = 'application/json';
$content = json_encode([
'message' => $message,
'nonce' => $this->makeNonce(),
]);
$content = json_encode($answer);
} else {
$contentType = 'text/html';
$content = $this->twig->render('login.html.twig', [
'error_message' => $message,
'nonce_value' => $this->makeNonce(),
]);
$content = $this->twig->render('login.html.twig', $answer);
}
return new Response($content, $status, ["Content-Type" => $contentType]);
+1 -1
View File
@@ -13,7 +13,7 @@ use Symfony\Component\HttpKernel\Exception\HttpException;
trait MakeNonceTrait {
/* 15 bytes neatly fits in base64 */
private const NONCE_LENGTH = 15;
private const NONCE_TTL = 60;
private const NONCE_TTL = 120;
protected readonly CacheItemPoolInterface $noncePool;
protected readonly LoggerInterface $logger;
+2 -2
View File
@@ -2,9 +2,9 @@
{% block content %}
<h1>{{ env.title }}</h1>
<p id="preauth-message">{{ error_message|default }}</p>
<p id="preauth-message">{{ message|default }}</p>
<form id="preauth-form">
<input id="preauth-nonce" type="hidden" name="preauth_nonce" value="{{ nonce_value }}">
<input id="preauth-nonce" type="hidden" name="preauth_nonce" value="{{ nonce }}">
<div class="right"><label for="preauth-id">{{ env.id_name }}:</label></div>
<div><input type="text" name="preauth_id" id="preauth-id"
autocomplete="username" required="required" autofocus="autofocus"></div>