This is an automated email from the ASF dual-hosted git repository.
lizhimin pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push:
new 89c1509014 [ISSUE #8046] Fix authentication context build for no
extFields (#8102)
89c1509014 is described below
commit 89c1509014b15c2ce91161356cf09a18c945a926
Author: dingshuangxi888 <[email protected]>
AuthorDate: Thu May 9 11:35:04 2024 +0800
[ISSUE #8046] Fix authentication context build for no extFields (#8102)
---
.../authentication/builder/DefaultAuthenticationContextBuilder.java | 6 +++---
.../authorization/builder/DefaultAuthorizationContextBuilder.java | 4 ++++
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git
a/auth/src/main/java/org/apache/rocketmq/auth/authentication/builder/DefaultAuthenticationContextBuilder.java
b/auth/src/main/java/org/apache/rocketmq/auth/authentication/builder/DefaultAuthenticationContextBuilder.java
index 6b178b9657..c1e970fa6e 100644
---
a/auth/src/main/java/org/apache/rocketmq/auth/authentication/builder/DefaultAuthenticationContextBuilder.java
+++
b/auth/src/main/java/org/apache/rocketmq/auth/authentication/builder/DefaultAuthenticationContextBuilder.java
@@ -98,12 +98,12 @@ public class DefaultAuthenticationContextBuilder implements
AuthenticationContex
@Override
public DefaultAuthenticationContext build(ChannelHandlerContext context,
RemotingCommand request) {
HashMap<String, String> fields = request.getExtFields();
- if (MapUtils.isEmpty(fields)) {
- throw new AuthenticationException("authentication field is null.");
- }
DefaultAuthenticationContext result = new
DefaultAuthenticationContext();
result.setChannelId(context.channel().id().asLongText());
result.setRpcCode(String.valueOf(request.getCode()));
+ if (MapUtils.isEmpty(fields)) {
+ return result;
+ }
if (!fields.containsKey(SessionCredentials.ACCESS_KEY)) {
return result;
}
diff --git
a/auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java
b/auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java
index daa039162b..d6d1556ca2 100644
---
a/auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java
+++
b/auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java
@@ -40,6 +40,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.acl.common.AclException;
@@ -160,6 +161,9 @@ public class DefaultAuthorizationContextBuilder implements
AuthorizationContextB
List<DefaultAuthorizationContext> result = new ArrayList<>();
try {
HashMap<String, String> fields = command.getExtFields();
+ if (MapUtils.isEmpty(fields)) {
+ return result;
+ }
Subject subject = null;
if (fields.containsKey(SessionCredentials.ACCESS_KEY)) {
subject = User.of(fields.get(SessionCredentials.ACCESS_KEY));