首页 > 其他分享 >nacos开启鉴权配置

nacos开启鉴权配置

时间:2024-01-11 16:44:59浏览次数:32  
标签:core Nacos auth 开启 nacos 鉴权

参考链接:https://nacos.io/zh-cn/docs/v2/guide/user/auth.html

1、nacos开启鉴权

  • 2.2.2版本之前的Nacos默认控制台,无论服务端是否开启鉴权,都会存在一个登录页,这就导致很多用户被误导认为Nacos默认是存在鉴权的。
  • 在社区安全工程师的建议下,Nacos自2.2.2版本开始,在未开启鉴权时,默认控制台将不需要登录即可访问,同时在控制台中给予提示,提醒用户当前集群未开启鉴权,在用户开启鉴权后,控制台才需要进行登录访问。
  • 开启鉴权功能之后,访问Nacos服务端API和控制台都需要输入用户名和密码(默认的用户名和密码都是nacos),可以提高Nacos的安全性,如果客户端(其它服务或者控制台用户)无法提供正确的用户名和密码,将无法访问Nacos Server,这样可以防止服务端被非授权访问,所以对于生产环境中的Nacos Server推荐设置为true。
  • 如果Nacos禁用鉴权功能,此时访问Nacos服务端API和控制台不需要任何登录即可匿名访问。

1.1、修改nacos配置文件(application.properties)

如果 nacos.core.auth.enabled 设置为true,必须添加以下nacos.core.auth.server.identity.keynacos.core.auth.server.identity.valuenacos.core.auth.plugin.nacos.token.secret.key配置,否则无法启动节点。
推荐开启如下配置

# 开启鉴权功能
nacos.core.auth.enabled=true
# 关闭使用user-agent判断服务端请求并放行鉴权的功能
nacos.core.auth.enable.userAgentAuthWhite=false
# 配置自定义身份识别的key和value,这两个属性是auth的白名单,用于标识来自其它服务器的请求,具体实现见 com.alibaba.nacos.core.auth.AuthFilter。
nacos.core.auth.server.identity.key=authKey
nacos.core.auth.server.identity.value=shigzh
# 自定义用于生成JWT令牌的密钥,注意:原始密钥长度不得低于32字符,且一定要进行Base64编码,否则无法启动节点。
nacos.core.auth.plugin.nacos.token.secret.key=bmFjb3NfMjAyNDAxMTBfc2hpZ3poX25hY29zX3Rva2Vu
# 权限缓存开关,开启后权限缓存的更新默认有15秒的延迟,默认 : false
nacos.core.auth.caching.enabled=true

1.2、自定义生成JWT令牌的密钥

注意:原始密钥长度不得低于32字符,且一定要进行Base64编码,否则无法启动节点。

/**
 * <p>
 * nacos中JWT令牌密钥生成器<br>
 * 生成 nacos.core.auth.plugin.nacos.token.secret.key 的值
 * </p>
 * @author shigzh
 * @since 2024/1/10 13:41
 */
public class NacosSecretUtil {
    public static void main(String[] args) {
        // 自定义生成JWT令牌的密钥
        String nacosSecret = "nacos_20240110_shigzh_nacos_token";
        // 输出密钥长度,要求不得低于32字符,否则无法启动节点。
        System.out.println("密钥长度》》》" + nacosSecret.length());
        // 密钥进行Base64编码
        byte[] data = nacosSecret.getBytes(StandardCharsets.UTF_8);
        System.out.println("密钥Base64编码》》》" + Base64Utils.encodeToString(data));
    }
}

2、nacos鉴权测试

2.1、不开启鉴权测试

如果nacos不开启鉴权,即 nacos.core.auth.enabled = false,在这种情况下通过一些请求就可以绕过nacos的权限认证,然后访问nacos的一些数据。
1、在未登录认证的情况下,通过postman以get方式访问/nacos/v1/cs/configs请求来获取nacos的配置信息,可以正常获取到数据。

http://sgz.wz:8848/nacos/v1/cs/configs?dataId=&group=&appName=&config_tags=&pageNo=1&pageSize=10&tenant=&search=accurate&accessToken=&username=

2、在未登录认证的情况下,通过postman以get方式访问/nacos/v1/auth/users请求来获取nacos的用户信息,可以正常获取到数据。

http://sgz.wz:8848/nacos/v1/auth/users?pageNo=1&pageSize=9&search=blur

3、在未登录认证的情况下,通过postman以post方式访问/nacos/v1/auth/users请求,传入指定参数,可以直接新增用户。

http://sgz.wz:8848/nacos/v1/auth/users?username=test2&password=test2


数据库中也存在新增的用户信息

2.2、开启鉴权测试

如果nacos开启鉴权,即 nacos.core.auth.enabled = true,在这种情况下就可以避免上面的nacos权限认证问题,如果不登录认证就不能访问nacos的一些数据,此时访问就会报403 Forbidden错误。

此时在请求header里添加一对属性参数 authKey=shigzh,即我们配置的自定义身份识别的 nacos.core.auth.server.identity.key=authKeynacos.core.auth.server.identity.value=shigzh(这两个属性是auth的白名单,用于标识来自其他服务器的请求),这样也可以正常操作nacos的一些接口,相当于鉴权了,即可跳过权限认证。

header属性配置authKey=shigzh能够跳过权限认证的原理是 com.alibaba.nacos.core.auth.AuthFilter 过滤器,具体逻辑如下图

标签:core,Nacos,auth,开启,nacos,鉴权
From: https://www.cnblogs.com/shigzh/p/17954917

相关文章

  • Nginx 服务器开启status页面检测服务状态
    一、Nginxstatusmonitor和apache中服务器状态一样。输出的内容如:  第1列:当前与http建立的连接数,包括等待的客户端连接:2第2列:接受的客户端连接总数目:20处理的客户端连接总数目:20客户端总的请求数目:50第3列:当前,nginx读请求连接当前,nginx写响应返回给......
  • Jenkins简介及安装配置详解:开启持续集成之旅
    Jenkins简介及安装配置详解:开启持续集成之旅一、Jenkins介绍Jenkins是一个开源的、用Java编写的持续集成和持续交付(CI/CD)工具。它提供了一种简单易用的方式来自动化构建、测试和部署软件。Jenkins的主要目标是帮助开发团队加快软件开发过程,提高软件质量,并通过自动化流程减......
  • Docker安装nacos(配置文件映射)
    1、拉取镜像dockerpullnacos/nacos-serverPS:这是拉取最新的nacos版本,若是要拉取指定版本,则可以在后面加上版本号(如:dockerpullnacos/nacos-server:v2.2.0)2、创建存储nacos数据信息的目录在根目录下创建/data/docker/nacos目录,用于挂载存储nacos的数据信息mkdir/data/doc......
  • nacos for k8s
    nacos-deploy.yaml基于nfs---apiVersion:v1kind:Servicemetadata:name:nacos-headlessnamespace:testlabels:app:nacos-headlessspec:type:ClusterIPports:-port:8848name:servertargetPort:8848-port:9848......
  • Nacos配置管理(七)
    1统一配置管理2微服务配置拉取获取配置的步骤如下:将配置交给Nacos管理的步骤:在Nacos中添加配置文件;(控制台添加按钮+实现可视化实现)在微服务中引入Nacos的配置管理客户端(config)依赖;<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-clou......
  • 阿里云“云创月汇,数智营销Go!”开启,带你玩转数字化营销
    阿里云一直致力于为中小企业提供更加普惠的算力、先进的技术以及优质的服务。基于此,在“云+AI”的时代背景下,阿里云在中小企业平台推出“云创月汇”系列活动,聚焦中小企业经营场景,助力中小企业全栈上云,用好新一代AI技术,提高企业经营效率。2024年1月份,“云创月汇”首期——数字化营销......
  • Gateway动态路由配置——Nacos
    Gateway一般配置路由的方式有三种,代码、文件、注册中心,但个人感觉使用注册中心的方式去动态更新路由的方式更能契合项目,但是配置会比较麻烦,不如文件和代码去配置简单Nacos加入配置:gateway-router我这里使用的是Json格式id:唯一idpredictates:断言,我使用的是Path断言uri:真实请求的上......
  • 1. 将 XXX 注册成 Windows 服务运行 -- 以Nacos为例
    众所周知,在Windows环境下想要启动nacos需要运行bin目录下的startup.cmd。这样的启动方式需要保证cmd窗口一直开着,只要把这个窗口关掉,nacos服务就停了。所以为了避免人为的误关窗口,把nacos注册成一个winserver就是一个好的选择。这样不仅可以保证nacos一直在后台运......
  • 华为HarmonyOS开发之模拟器不能启动的问题(虚拟化未开启)
    如图,点击查看处理指导,根据提示修改配置后还是启动失败 查看任务管理器——》性能——》CPU 显示虚拟化未开启,需要开启开启步骤开启成功,模拟器也可以启动了 ......
  • 使用Docker-ompose快速构建Nacos服务
    在微服务架构中,服务的注册与发现扮演着至关重要的角色。Nacos(NamingandConfigurationService)是阿里巴巴开源的服务注册与发现组件,致力于支持动态配置管理和服务发现。最近,一位朋友表达了对搭建一套Nacos开发环境的兴趣。先前,我们曾发布了一篇有关在Linux上直接部署Nacos的文章,标......