You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by sm...@apache.org on 2022/09/22 07:58:11 UTC

[knox] branch master updated: KNOX-2805 - getUserTokens honours different metadata values with the same name (#633)

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

smolnar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git


The following commit(s) were added to refs/heads/master by this push:
     new 14f57546c KNOX-2805 - getUserTokens honours different metadata values with the same name (#633)
14f57546c is described below

commit 14f57546c12912d99c33da574ef387b2b501138d
Author: Sandor Molnar <sm...@apache.org>
AuthorDate: Thu Sep 22 09:58:04 2022 +0200

    KNOX-2805 - getUserTokens honours different metadata values with the same name (#633)
---
 .../apache/knox/gateway/service/knoxtoken/TokenResource.java   | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/TokenResource.java b/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/TokenResource.java
index 0bcf622b7..42f25bc32 100644
--- a/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/TokenResource.java
+++ b/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/TokenResource.java
@@ -458,11 +458,11 @@ public class TokenResource {
       if (uriInfo == null) {
         throw new IllegalArgumentException("URI info cannot be NULL.");
       }
-      final Map<String, String> metadataMap = new HashMap<>();
+      final Map<String, List<String>> metadataMap = new HashMap<>();
       uriInfo.getQueryParameters().entrySet().forEach(entry -> {
         if (entry.getKey().startsWith(METADATA_QUERY_PARAM_PREFIX)) {
           String metadataName = entry.getKey().substring(METADATA_QUERY_PARAM_PREFIX.length());
-          metadataMap.put(metadataName, entry.getValue().get(0));
+          metadataMap.put(metadataName, entry.getValue());
         }
       });
 
@@ -474,15 +474,15 @@ public class TokenResource {
         tokens.addAll(userTokens);
       } else {
         userTokens.forEach(knoxToken -> {
-          for (Map.Entry<String, String> entry : metadataMap.entrySet()) {
-            if (StringUtils.isBlank(entry.getValue()) || "*".equals(entry.getValue())) {
+          for (Map.Entry<String,  List<String>> entry : metadataMap.entrySet()) {
+            if (entry.getValue().contains("*")) {
               // we should only filter tokens by metadata name
               if (knoxToken.hasMetadata(entry.getKey())) {
                 tokens.add(knoxToken);
               }
             } else {
               // metadata value should also match
-              if (entry.getValue().equals(knoxToken.getMetadataValue(entry.getKey()))) {
+              if (entry.getValue().contains(knoxToken.getMetadataValue(entry.getKey()))) {
                 tokens.add(knoxToken);
               }
             }