Nacos鉴权如何实现?

Nacos鉴权如何实现?

展开
收起
真的很搞笑 2024-05-15 14:24:11 114 分享 版权
1 条回答
写回答
取消 提交回答
  • Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。如果运行在不可信的网络环境或者有强鉴权诉求,请参考官方简单实现做进行自定义插件开发。

    服务端如何开启鉴权
    1、非Docker环境
    按照官方文档配置启动,默认是不需要登录的,这样会导致配置中心对外直接暴露。而启用鉴权之后,需要在使用用户名和密码登录之后,才能正常使用nacos。

    开启鉴权之前,application.properties中的配置信息为:

    If turn on auth system:

    nacos.core.auth.enabled=false
    开启鉴权之后,application.properties中的配置信息为:

    If turn on auth system:

    nacos.core.auth.system.type=nacos
    nacos.core.auth.enabled=true
    2、自定义密钥
    开启鉴权之后,你可以自定义用于生成JWT令牌的密钥,application.properties中的配置信息为:

    注意:

    文档中提供的密钥为公开密钥,在实际部署时请更换为其他密钥内容,防止密钥泄漏导致安全风险。在2.2.0.1版本后,社区发布版本将移除以文档如下值作为默认值,需要自行填充,否则无法启动节点。密钥需要保持节点间一致,长时间不一致可能导致403 invalid token错误。

    The default token(Base64 String):
    nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

    2.1.0 版本后
    nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
    自定义密钥时,推荐将配置项设置为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=
    注意:鉴权开关是修改之后立马生效的,不需要重启服务端。动态修改token.secret.key时,请确保token是有效的,如果修改成无效值,会导致后续无法登录,请求访问异常。
    image.png

    参考文档https://blog.csdn.net/leesinbad/article/details/134128031

    2024-05-15 15:35:36
    赞同 1 展开评论
问答分类:
问答标签:
问答地址:

为微服务建设降本增效,为微服务落地保驾护航。

还有其他疑问?
咨询AI助理