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

jungm pushed a commit to branch issue/TOMEE-4584
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit 1965f1c2edb30a2fe9b2e42c5aef0181426457b7
Author: Markus Jung <[email protected]>
AuthorDate: Thu Feb 19 08:49:10 2026 +0100

    TOMEE-4584 - OpenIdAuthenticationMechanism store parameterMap
---
 .../java/org/superbiz/openid/SecuredServlet.java   |  5 +++
 .../org/superbiz/openid/SecuredServletTest.java    |  6 ++--
 .../apache/tomee/security/http/SavedRequest.java   | 41 ++++++++++++++++++----
 .../tomee/security/http/SavedRequestTest.java      | 12 +++++--
 4 files changed, 51 insertions(+), 13 deletions(-)

diff --git 
a/examples/security-openid/src/main/java/org/superbiz/openid/SecuredServlet.java
 
b/examples/security-openid/src/main/java/org/superbiz/openid/SecuredServlet.java
index 03d671984a..9d1d869ea6 100644
--- 
a/examples/security-openid/src/main/java/org/superbiz/openid/SecuredServlet.java
+++ 
b/examples/security-openid/src/main/java/org/superbiz/openid/SecuredServlet.java
@@ -26,6 +26,7 @@ import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 
 import java.io.IOException;
+import java.util.stream.Collectors;
 
 @OpenIdAuthenticationMechanismDefinition(
         providerURI = "#{openIdConfig.providerUri}",
@@ -44,5 +45,9 @@ public class SecuredServlet extends HttpServlet {
         if (req.isUserInRole("admin")) {
             resp.getWriter().print("\nYou're an admin!");
         }
+
+        resp.getWriter().print("\nRequest parameters: " + 
req.getParameterMap().entrySet().stream()
+                .map(e -> e.getKey() + "=" + String.join(",", e.getValue()))
+                .collect(Collectors.joining(";")));
     }
 }
diff --git 
a/examples/security-openid/src/test/java/org/superbiz/openid/SecuredServletTest.java
 
b/examples/security-openid/src/test/java/org/superbiz/openid/SecuredServletTest.java
index c12f05869b..7dd3e96ac7 100644
--- 
a/examples/security-openid/src/test/java/org/superbiz/openid/SecuredServletTest.java
+++ 
b/examples/security-openid/src/test/java/org/superbiz/openid/SecuredServletTest.java
@@ -64,7 +64,7 @@ public class SecuredServletTest {
     @RunAsClient
     public void test() throws Exception {
         try (WebClient webClient = new WebClient()) {
-            HtmlPage htmlPage = webClient.getPage(url + "/secured");
+            HtmlPage htmlPage = webClient.getPage(url + "/secured?foo=bar");
             
assertTrue(htmlPage.getUrl().toString().startsWith(KEYCLOAK_CONTAINER.getAuthServerUrl()
 + "/realms/tomee/protocol/openid-connect/auth"));
 
             HtmlForm loginForm = htmlPage.getForms().get(0);
@@ -72,7 +72,7 @@ public class SecuredServletTest {
             loginForm.getInputByName("password").setValue("tomee");
             TextPage securedServletPage = 
loginForm.getButtonByName("login").click();
 
-            assertEquals("Hello, tomee-user", securedServletPage.getContent());
+            assertEquals("Hello, tomee-user\nRequest parameters: foo=bar", 
securedServletPage.getContent());
         }
     }
 
@@ -88,7 +88,7 @@ public class SecuredServletTest {
             loginForm.getInputByName("password").setValue("tomee");
             TextPage securedServletPage = 
loginForm.getButtonByName("login").click();
 
-            assertEquals("Hello, tomee-admin\nYou're an admin!", 
securedServletPage.getContent());
+            assertEquals("Hello, tomee-admin\nYou're an admin!\nRequest 
parameters: ", securedServletPage.getContent());
         }
     }
 }
diff --git 
a/tomee/tomee-security/src/main/java/org/apache/tomee/security/http/SavedRequest.java
 
b/tomee/tomee-security/src/main/java/org/apache/tomee/security/http/SavedRequest.java
index 2461014be8..f6451e4349 100644
--- 
a/tomee/tomee-security/src/main/java/org/apache/tomee/security/http/SavedRequest.java
+++ 
b/tomee/tomee-security/src/main/java/org/apache/tomee/security/http/SavedRequest.java
@@ -56,9 +56,9 @@ public class SavedRequest implements Serializable {
     private String method;
     private String url;
     private String queryString;
+    private Map<String, String[]> parameterMap;
 
     public static SavedRequest fromRequest(HttpServletRequest request) {
-        Cookie[] cookies = request.getCookies();
         Map<String, List<String>> headers = new HashMap<>();
         Enumeration<String> headerNames = request.getHeaderNames();
         while (headerNames.hasMoreElements()) {
@@ -66,15 +66,13 @@ public class SavedRequest implements Serializable {
             headers.put(name, Collections.list(request.getHeaders(name)));
         }
 
-        String method = request.getMethod();
-        String queryString = request.getQueryString();
-
         SavedRequest result = new SavedRequest();
-        result.setCookies(cookies);
+        result.setCookies(request.getCookies());
         result.setHeaders(headers);
-        result.setMethod(method);
+        result.setMethod(request.getMethod());
         result.setUrl(request.getRequestURL().toString());
-        result.setQueryString(queryString);
+        result.setQueryString(request.getQueryString());
+        result.setParameterMap(request.getParameterMap());
 
         return result;
     }
@@ -132,6 +130,27 @@ public class SavedRequest implements Serializable {
             public String getQueryString() {
                 return queryString;
             }
+
+            @Override
+            public Enumeration<String> getParameterNames() {
+                return Collections.enumeration(parameterMap.keySet());
+            }
+
+            @Override
+            public String[] getParameterValues(String name) {
+                return parameterMap.get(name);
+            }
+
+            @Override
+            public String getParameter(String name) {
+                String[] values = parameterMap.get(name);
+                return values == null || values.length == 0 ? null : values[0];
+            }
+
+            @Override
+            public Map<String, String[]> getParameterMap() {
+                return parameterMap;
+            }
         };
     }
 
@@ -184,6 +203,14 @@ public class SavedRequest implements Serializable {
         this.queryString = queryString;
     }
 
+    public Map<String, String[]> getParameterMap() {
+        return parameterMap;
+    }
+
+    public void setParameterMap(Map<String, String[]> parameterMap) {
+        this.parameterMap = parameterMap;
+    }
+
     @JsonbTransient
     public String getUrlWithQueryString() {
         return queryString == null ? url : url + "?" + queryString;
diff --git 
a/tomee/tomee-security/src/test/java/org/apache/tomee/security/http/SavedRequestTest.java
 
b/tomee/tomee-security/src/test/java/org/apache/tomee/security/http/SavedRequestTest.java
index 65dd50ac7b..4873536330 100644
--- 
a/tomee/tomee-security/src/test/java/org/apache/tomee/security/http/SavedRequestTest.java
+++ 
b/tomee/tomee-security/src/test/java/org/apache/tomee/security/http/SavedRequestTest.java
@@ -26,6 +26,7 @@ import jakarta.servlet.http.Cookie;
 import java.io.Serializable;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -50,13 +51,14 @@ public class SavedRequestTest {
         request.setMethod("PATCH");
         request.setQueryString("foo=bar");
         request.setUrl("http://example.com/foo";);
+        request.setParameterMap(Map.of("foo", new String[] {"bar"}));
 
-        
assertEquals("{\"cookies\":[{\"name\":\"first\",\"value\":\"val1\",\"attributes\":{}},{\"name\":\"second\",\"value\":\"val2\",\"attributes\":{}}],\"headers\":{\"header1\":[\"h1val1\",\"h1val2\"],\"header2\":[\"h2val1\"]},\"method\":\"PATCH\",\"queryString\":\"foo=bar\",\"url\":\"http://example.com/foo\"}";,
 request.toJson());
+        
assertEquals("{\"cookies\":[{\"name\":\"first\",\"value\":\"val1\",\"attributes\":{}},{\"name\":\"second\",\"value\":\"val2\",\"attributes\":{}}],\"headers\":{\"header1\":[\"h1val1\",\"h1val2\"],\"header2\":[\"h2val1\"]},\"method\":\"PATCH\",\"parameterMap\":{\"foo\":[\"bar\"]},\"queryString\":\"foo=bar\",\"url\":\"http://example.com/foo\"}";,
 request.toJson());
     }
 
     @Test
     public void deserialization() throws Exception {
-        String json = 
"{\"cookies\":[{\"name\":\"first\",\"value\":\"val1\",\"attributes\":{}},{\"name\":\"second\",\"value\":\"val2\",\"attributes\":{}}],\"headers\":{\"header1\":[\"h1val1\",\"h1val2\"],\"header2\":[\"h2val1\"]},\"method\":\"PATCH\",\"queryString\":\"foo=bar\",\"url\":\"http://example.com/foo\"}";;
+        String json = 
"{\"cookies\":[{\"name\":\"first\",\"value\":\"val1\",\"attributes\":{}},{\"name\":\"second\",\"value\":\"val2\",\"attributes\":{}}],\"headers\":{\"header1\":[\"h1val1\",\"h1val2\"],\"header2\":[\"h2val1\"]},\"method\":\"PATCH\",\"parameterMap\":{\"foo\":[\"bar\"]},\"queryString\":\"foo=bar\",\"url\":\"http://example.com/foo\"}";;
         SavedRequest request = SavedRequest.fromJson(json);
 
         assertNotNull(request);
@@ -71,6 +73,10 @@ public class SavedRequestTest {
         assertEquals("PATCH", request.getMethod());
         assertEquals("foo=bar", request.getQueryString());
         assertEquals("http://example.com/foo";, request.getUrl());
+        assertNotNull(request.getParameterMap());
+        assertNotNull(request.getParameterMap().get("foo"));
+        assertEquals(1, request.getParameterMap().get("foo").length);
+        assertEquals("bar", request.getParameterMap().get("foo")[0]);
     }
 
     @Test
@@ -105,4 +111,4 @@ public class SavedRequestTest {
             assertEquals("/aaa", cookie.getPath());
         }
     }
-}
\ No newline at end of file
+}

Reply via email to