This is an automated email from the ASF dual-hosted git repository.

piotr pushed a commit to branch improve_http_secret
in repository https://gitbox.apache.org/repos/asf/iggy.git


The following commit(s) were added to refs/heads/improve_http_secret by this 
push:
     new 8cf616de6 Add more info warns for jwt secrets
     new d2db5f1a3 Merge branch 'improve_http_secret' of github.com:apache/iggy 
into improve_http_secret
8cf616de6 is described below

commit 8cf616de67b1c10d1f0b6e64e52adc7b2b0ac3de
Author: spetz <[email protected]>
AuthorDate: Fri Mar 20 14:10:44 2026 +0100

    Add more info warns for jwt secrets
---
 core/server/src/http/http_server.rs | 33 +++++++++++++++++++++++++--------
 1 file changed, 25 insertions(+), 8 deletions(-)

diff --git a/core/server/src/http/http_server.rs 
b/core/server/src/http/http_server.rs
index 3ab781e13..177e4f7ef 100644
--- a/core/server/src/http/http_server.rs
+++ b/core/server/src/http/http_server.rs
@@ -272,20 +272,37 @@ async fn build_app_state(
     let mut jwt_config = config.jwt.clone();
     let encoding_empty = jwt_config.encoding_secret.is_empty();
     let decoding_empty = jwt_config.decoding_secret.is_empty();
-    if encoding_empty || decoding_empty {
-        let secret = crypto::generate_secret(32..64);
-        let redacted = secret.chars().take(3).collect::<String>();
-        if encoding_empty {
+    match (encoding_empty, decoding_empty) {
+        (true, true) => {
+            let secret = crypto::generate_secret(32..64);
+            let redacted: String = secret.chars().take(3).collect();
+            warn!(
+                "JWT encoding and decoding secrets are not configured - 
generated a random secret: {redacted}***. JWT tokens will be invalidated on 
server restart. Set 'encoding_secret' and 'decoding_secret' in the config to 
use persistent secrets."
+            );
             jwt_config.encoding_secret = secret.clone();
+            jwt_config.decoding_secret = secret;
+        }
+        (true, false) => {
             warn!(
-                "JWT encoding secret is not configured - generated a random 
secret: {redacted}***. JWT tokens will be invalidated on server restart. Set 
'encoding_secret' in the config to use a persistent secret."
+                "JWT encoding secret is not configured but decoding secret is 
set - using decoding secret for both. Set 'encoding_secret' in the config to 
avoid this warning."
             );
+            jwt_config.encoding_secret = jwt_config.decoding_secret.clone();
         }
-        if decoding_empty {
-            jwt_config.decoding_secret = secret;
+        (false, true) => {
             warn!(
-                "JWT decoding secret is not configured - generated a random 
secret: {redacted}***. JWT tokens will be invalidated on server restart. Set 
'decoding_secret' in the config to use a persistent secret."
+                "JWT decoding secret is not configured but encoding secret is 
set - using encoding secret for both. Set 'decoding_secret' in the config to 
avoid this warning."
             );
+            jwt_config.decoding_secret = jwt_config.encoding_secret.clone();
+        }
+        (false, false) => {
+            if jwt_config.encoding_secret != jwt_config.decoding_secret
+                && jwt_config.algorithm.starts_with("HS")
+            {
+                warn!(
+                    "JWT encoding and decoding secrets are different but 
algorithm is {} (HMAC) - both secrets must be identical for symmetric 
algorithms.",
+                    jwt_config.algorithm
+                );
+            }
         }
     }
 

Reply via email to