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 <dingshuangxi...@gmail.com>
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));

Reply via email to