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 <[email protected]>
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);
}
}