Nacos开启鉴权配置(Spring Cloud+Nacos)
本文使用场景是Nacos开启单例模式下,在已有Java项目服务中,更换为鉴权模式的流程。主要流程分为两步:
1、开启Nacos鉴权模式
首先需要找到Nacos文件下的conf—application.properties
Nacos配置文件找到如下配置并且修改为以下内容
### If turn on auth system:(是否开启鉴权,这里选择开启)
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
...
在2.2.0.1版本后,社区发布版本将移除以文档如下值作为默认值,需要自行填充,否则无法启动节点
### The two properties is the white list for auth and used by identity the request from other server.(自定义key/value)
nacos.core.auth.server.identity.key=example
nacos.core.auth.server.identity.value=example
...
自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符
### The default token(Base64 String):
nacos.core.auth.default.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
### 2.1.0 版本后
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
修改后不需要重启,刷新即生效,觉得不够稳妥的也可以选择重启。
重启指令,在nacos的bin文件下打开cmd
startup.cmd -m standalone
重启之后访问页面会新增一个鉴权访问页面,如果直接进去的也可以重新登录。
输入密码,默认 nacos/nacos 即可进入配置界面。
2、修改Java项目鉴权配置
第一种,直接在application.yml/bootstrap加上访问nacos的账户密码,修改配置项
spring:cloud:nacos:config:password: nacos
username: nacos
server-addr: 127.0.0.1:8848discovery:server-addr: 127.0.0.1:8848group: DEFAULT_GROUP
namespace: public
password: nacos
username: nacos
第二种,不修改已有配置,对上线产品直接修改启动指令即可不用修改程序,本文实例程序为打包好的Jar包。
1、如果是使用网关,则需要对网关进行修改相关授权。
//增加Nocos 授权认证
properties.setProperty(PropertyKeyConst.USERNAME, nacosDiscoveryProperties.getUsername());
properties.setProperty(PropertyKeyConst.PASSWORD, nacosDiscoveryProperties.getPassword());
2、对Jar包启动指令进行修改
可以先在本地idea执行看看是否会报错,项目程序没有配置地址时会产生报错
http error, code=403,msg=user not found!,dataId=xxxxx.yaml,group=DEFAULT_GROUP,tenant=
user not found
Idea里加上VM配置项,将以下指令和对应的账户密码输入,在启动Jar包时,编译器会将以下指令一并编译启动。
-Dfile.encoding=utf-8
-Dspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
-Dspring.cloud.nacos.discovery.password=nacos
-Dspring.cloud.nacos.discovery.username=nacos
-Dspring.cloud.nacos.config.username=nacos
-Dspring.cloud.nacos.config.password=nacos
最后打包之后可以直接使用如下指令启动Jar包:
java -Dfile.encoding=utf-8 -Dspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 -Dspring.cloud.nacos.discovery.password=nacos -Dspring.cloud.nacos.discovery.username=nacos -Dspring.cloud.nacos.config.username=nacos -Dspring.cloud.nacos.config.password=nacos -jar xxx.jar
3、遇到的问题
当Nacos配置和Java项目的application.yml都配置了之后,还是无法启动,报错user not found,数据库无法连接
1、检查用户名/密码是否能在Nacos客户端登录,并拥有权限获取到对应的配置分组
2、检查Nacos版本,可以尝试升级版本可能会解决问题。
以上是我目前遇到的问题,由于项目需要临时更换鉴权的方案,因此使用更改启动指令的方式进行重新部署
版权归原作者 大猪大猪 所有, 如有侵权,请联系我们删除。