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));