Nacos开启鉴权并验证实战案例
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.Nacos不建议直接暴露在公网
Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。
Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。
如果运行在不可信的网络环境或者有强鉴权诉求,请参考官方简单实现做替换增强。
参考链接:
https://nacos.io/zh-cn/docs/auth.html
二.非Docker环境部署Nacos开启鉴权案例
1.生成toke的值,自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。
[root@master231 ~]# openssl rand -base64 33
SuYALHsuVE4XyjQelTMhFbzeHAgDptayAKa8d5pmkQ7K
[root@master231 ~]#
2.修改Nacos的配置文件
[root@master231 ~]# vim /yinzhengjie/softwares/nacos/conf/application.properties
...
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=yinzhengjie
nacos.core.auth.server.identity.value=yinzhengjie
nacos.core.auth.plugin.nacos.token.secret.key=SuYALHsuVE4XyjQelTMhFbzeHAgDptayAKa8d5pmkQ7K
3.重启Nacos服务
[root@master231 ~]# /yinzhengjie/softwares/nacos/bin/shutdown.sh
[root@master231 ~]# /yinzhengjie/softwares/nacos/bin/startup.sh -m standalone
[root@master231 ~]# ss -ntl | grep 8848
LISTEN 0 100 *:8848 *:*
[root@master231 ~]#
4.访问Nacos的WebUI()
访问地址:
http://10.0.0.231:8848/nacos
如上图所示,首次登录时设置默认的用户名和密码均为"nacos"。
三. 修改Nacos的初始密码
如上图所示,我们可以修改Nacos的初始化密码。
如下图所示,我们需要输入2次密码哟。
四. 验证Nacos是否能够写入配置
1.再次向Nacos写入数据时报错403
[root@worker232 ~]# curl -s -X POST "http://10.0.0.231:8848/nacos/v1/cs/configs?dataId=myblog&group=k8s&content=https://www.cnblogs.com/yinzhengjie" | more
{"timestamp":"2025-02-08T12:24:01.342+08:00","status":403,"error":"Forbidden","message":"user not found!","path":"/nacos/v1/cs/configs"}
[root@worker232 ~]#
2.登录Nacos获取token(注意,使用修改后的Nacos用户名和密码哟)
[root@worker232 ~]# curl -s -X POST 'http://10.0.0.231:8848/nacos/v1/auth/login' -d 'username=nacos&password=yinzhengjie' | more
{"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTczOTAwNjc4MX0.KT9vc_vPF3eT1GYVaVODWVciN0Mv-j7hkwN0fsrIFy4","tokenTtl":18000,"globalAdmi
n":true,"username":"nacos"}
[root@worker232 ~]#
3.使用accessToken进行登录验证写入数据成功(需要用到上一步的accessToken值,如上图所示,数据写入成功)
[root@worker232 ~]# curl -s -X POST "http://10.0.0.231:8848/nacos/v1/cs/configs?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTczOTAwNjc4MX0.KT9vc_vPF3eT1GYVaVODWVciN0Mv-j7hkwN0fsrIFy4&dataId=myblog&group=k8s&content=https://www.cnblogs.com/yinzhengjie" | more
true
[root@worker232 ~]#
4.命令行方式获取配置
[root@worker233 ~]# curl -s -X GET "http://10.0.0.231:8848/nacos/v1/cs/configs?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTczOTAwNjc4MX0.KT9vc_vPF3eT1GYVaVODWVciN0Mv-j7hkwN0fsrIFy4&dataId=myblog&group=k8s" | more
https://www.cnblogs.com/yinzhengjie
[root@worker233 ~]#
5.基于webUI查看配置内容
如下图所示,我们也可以直接在WebUI查看即可
五.Nacos验证服务注册和发现
1.服务注册
[root@master231 ~]# curl -s -X POST 'http://10.0.0.231:8848/nacos/v1/ns/instance?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTczOTAwNjc4MX0.KT9vc_vPF3eT1GYVaVODWVciN0Mv-j7hkwN0fsrIFy4&serviceName=k8s&ip=10.0.0.232&port=10250' | more
ok
[root@master231 ~]#
[root@master231 ~]# curl -s -X POST 'http://10.0.0.231:8848/nacos/v1/ns/instance?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTczOTAwNjc4MX0.KT9vc_vPF3eT1GYVaVODWVciN0Mv-j7hkwN0fsrIFy4&serviceName=k8s&ip=10.0.0.233&port=10250' | more
ok
[root@master231 ~]#
2.服务发现
[root@worker233 ~]# curl -X GET -s 'http://10.0.0.231:8848/nacos/v1/ns/instance/list?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTczOTAwNjc4MX0.KT9vc_vPF3eT1GYVaVODWVciN0Mv-j7hkwN0fsrIFy4&serviceName=k8s' | jq
{
"name": "DEFAULT_GROUP@@k8s",
"groupName": "DEFAULT_GROUP",
"clusters": "",
"cacheMillis": 10000,
"hosts": [
{
"instanceId": "10.0.0.232#10250#DEFAULT#DEFAULT_GROUP@@k8s",
"ip": "10.0.0.232",
"port": 10250,
"weight": 1,
"healthy": true,
"enabled": true,
"ephemeral": true,
"clusterName": "DEFAULT",
"serviceName": "DEFAULT_GROUP@@k8s",
"metadata": {},
"instanceHeartBeatTimeOut": 15000,
"ipDeleteTimeout": 30000,
"instanceIdGenerator": "simple",
"instanceHeartBeatInterval": 5000
},
{
"instanceId": "10.0.0.233#10250#DEFAULT#DEFAULT_GROUP@@k8s",
"ip": "10.0.0.233",
"port": 10250,
"weight": 1,
"healthy": true,
"enabled": true,
"ephemeral": true,
"clusterName": "DEFAULT",
"serviceName": "DEFAULT_GROUP@@k8s",
"metadata": {},
"instanceHeartBeatTimeOut": 15000,
"ipDeleteTimeout": 30000,
"instanceIdGenerator": "simple",
"instanceHeartBeatInterval": 5000
}
],
"lastRefTime": 1738989624096,
"checksum": "",
"allIPs": false,
"reachProtectionThreshold": false,
"valid": true
}
[root@worker233 ~]#
本文来自博客园,作者:尹正杰,转载请注明原文链接:https://www.cnblogs.com/yinzhengjie/p/18698697,个人微信: "JasonYin2020"(添加时请备注来源及意图备注,有偿付费)
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。