From 9efe21af84e586c7c27a024a74bfb4036c1f558f Mon Sep 17 00:00:00 2001 From: Wu Xuecheng Date: Tue, 14 Jun 2022 14:14:00 +0800 Subject: [PATCH] Fix can't authenticate by username and password when use Nacos (#9941) #9910 --- .../support/nacos/NacosDynamicConfiguration.java | 8 ++++++++ .../registry/nacos/util/NacosNamingServiceUtils.java | 9 ++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java index 5356b9da8b..e8e50d8b74 100644 --- a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java @@ -52,7 +52,9 @@ import java.util.concurrent.Executor; import java.util.stream.Stream; import static com.alibaba.nacos.api.PropertyKeyConst.ENCODE; +import static com.alibaba.nacos.api.PropertyKeyConst.PASSWORD; import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR; +import static com.alibaba.nacos.api.PropertyKeyConst.USERNAME; import static java.util.Collections.emptyMap; import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY; import static org.apache.dubbo.common.utils.StringConstantFieldValuePredicate.of; @@ -143,6 +145,12 @@ public class NacosDynamicConfiguration implements DynamicConfiguration { private static void setProperties(URL url, Properties properties) { // Get the parameters from constants Map parameters = url.getParameters(of(PropertyKeyConst.class)); + if (StringUtils.isNotEmpty(url.getUsername())){ + properties.put(USERNAME, url.getUsername()); + } + if (StringUtils.isNotEmpty(url.getPassword())){ + properties.put(PASSWORD, url.getPassword()); + } // Put all parameters properties.putAll(parameters); } diff --git a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java index 6e8d47238b..c9f90fdf7e 100644 --- a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java +++ b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java @@ -37,7 +37,9 @@ import java.util.Map; import java.util.Properties; import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_LOAD_CACHE_AT_START; +import static com.alibaba.nacos.api.PropertyKeyConst.PASSWORD; import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR; +import static com.alibaba.nacos.api.PropertyKeyConst.USERNAME; import static com.alibaba.nacos.api.common.Constants.DEFAULT_GROUP; import static com.alibaba.nacos.client.naming.utils.UtilAndComs.NACOS_NAMING_LOG_NAME; import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY; @@ -150,7 +152,12 @@ public class NacosNamingServiceUtils { Map parameters = url.getParameters(of(PropertyKeyConst.class)); // Put all parameters properties.putAll(parameters); - + if (StringUtils.isNotEmpty(url.getUsername())){ + properties.put(USERNAME, url.getUsername()); + } + if (StringUtils.isNotEmpty(url.getPassword())){ + properties.put(PASSWORD, url.getPassword()); + } putPropertyIfAbsent(url, properties, NAMING_LOAD_CACHE_AT_START, "true"); }