在启用 Nacos 鉴权(认证与授权)功能时,你需要做一些配置。以下是根据你提供的信息,整理和解读启用鉴权后需要配置的内容:
1. 开启鉴权功能
在 application.yml
中配置开启鉴权功能,首先需要设置 nacos.core.auth.enabled
为 true
。
nacos.core.auth.enabled: true
这条配置标识着 Nacos 开启了鉴权功能。
2. 配置认证系统类型
Nacos 支持两种认证系统:nacos
和 ldap
。这里配置为 nacos
系统,表示使用 Nacos 自带的认证方式。如果你选择 LDAP,需要调整为 ldap
。
nacos.core.auth.system.type: nacos
3. 配置自定义密钥
开启鉴权后,Nacos 使用 JWT 令牌进行用户认证。为了生成有效的 JWT 令牌,需要配置一个自定义的密钥。这个密钥是用于签发和验证 JWT 令牌的。以下是如何配置自定义的密钥:
nacos.core.auth.plugin.nacos.token.secret.key: SecretKey012345678901234567890123456789012345678901234567890123456789
自定义密钥注意事项:
- 密钥长度必须不少于32个字符。
- 为了确保安全,应该使用 Base64 编码的密钥。
- 默认情况下,Nacos 2.2.0.1 版本及以后,
token.secret.key
默认是空的,因此必须手动添加。 - 在生产环境中,建议更换文档中提供的默认密钥,防止泄漏。
- 所有 Nacos 集群节点间的密钥必须保持一致,密钥不一致可能会导致
403 invalid token
错误。
4. 配置服务端身份识别
在集群模式下,为了保证各个节点之间的安全通信,需要配置自定义的认证Key和Value,来进行节点间身份识别。Nacos 默认关闭了使用 user-agent
进行放行请求的功能,因此需要我们手动配置身份验证标识:
nacos.core.auth.server.identity.key: Id-Key
nacos.core.auth.server.identity.value: Id-Value
- nacos.core.auth.server.identity.key: 配置自定义身份识别的
key
,不能为空。 - nacos.core.auth.server.identity.value: 配置自定义身份识别的
value
,不能为空。
5. 关闭 user-agent
放行功能
Nacos 在早期版本中通过 user-agent: nacos-server
的请求头来判断并放行一些请求,然而这导致了潜在的安全问题。因此,默认情况下,在启用鉴权后,这个功能被关闭。
nacos.core.auth.enable.userAgentAuthWhite: false
完整示例配置
结合上面的配置项,下面是一个完整的 application.yml
配置示例:
nacos.core.auth.enabled: true
nacos.core.auth.system.type: nacos
# 自定义密钥用于生成JWT令牌
nacos.core.auth.plugin.nacos.token.secret.key: SecretKey012345678901234567890123456789012345678901234567890123456789
# 关闭使用user-agent判断服务端请求并放行的功能
nacos.core.auth.enable.userAgentAuthWhite: false
# 配置自定义身份识别的key和value,用于集群通信
nacos.core.auth.server.identity.key: Id-Key
nacos.core.auth.server.identity.value: Id-Value
小结
- 开启鉴权功能:通过
nacos.core.auth.enabled=true
启用鉴权。 - 认证系统类型:可以选择
nacos
或ldap
。 - 自定义密钥:配置
nacos.core.auth.plugin.nacos.token.secret.key
用于生成 JWT 令牌。 - 集群通信身份识别:配置自定义的认证 Key 和 Value 来识别集群节点。
- 关闭
user-agent
放行:禁用默认的user-agent
放行机制,增加安全性。
这些配置确保了 Nacos 启用鉴权后,能够使用 JWT 令牌进行安全认证,并且在集群环境中进行安全的节点间通信。
评论区