本文介绍用户登录Nacos失败的常见现象以及解决方案。
问题现象
程序连接Nacos时出现以下错误。
login failed.
caused:No Authentication Provider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
问题原因
1. 应用程序中配置了Nacos的username和password,且开启Nacos的鉴权功能,但传入的username和password不正确,导致login failed。
2. 用户配置的AcccessKey和SecurityKey不正确,导致认证失败。
3. 未开启认证时传递了错误的认证属性字段
解决方案
(1) 检查Nacos实例是否已经打开鉴权功能。具体操作,请参见参数管理。
(2) 检查应用配置,是否有配置Nacos的username和password。未开启认证时需去掉这两个配置项。
(3) 若直接使用Nacos Client,需检查Client配置的信息。若存在,请移除该部分信息后重试。
properties.put(PropertyKeyConst.SERVER_ADDR, "${mseNacos实例域名}");
properties.put(PropertyKeyConst.USERNAME, "${username}");
properties.put(PropertyKeyConst.PASSWORD, "${password}");// 注册中心NamingService namingService = NamingFactory.createNamingService(properties);// 配置中心ConfigService configService = ConfigFactory.createConfigService(properties);
(4) 若使用Spring Cloud,请检查应用配置是否完成了以下配置。若存在,请移除该部分信息后重试。
#注册中心
spring.cloud.nacos.discovery.username=
spring.cloud.nacos.discovery.password=
#配置中心
spring.cloud.nacos.config.username=
spring.cloud.nacos.config.password=
(5) 若使用Dubbo, 请检查配置的注册中心URL上是否存在username或password参数。若存在,请移除该部分信息后重试。例如:
dubbo.registry.address=nacos://${访问地址}:47588?username=&password=
(6) 若没有在应用配置中找到配置Nacos的username和password,且使用的是Spring Cloud,请在部署环境中检查启动参数以及环境变量是否包含相关信息。若存在,请移除这部分信息后重试。