当前位置:首页 » 《随便一记》 » 正文

nacos2.2启动报错The specified key byte array is 16 bits which is not secure enough for any JWT HMAC-SHA

10 人参与  2023年03月29日 11:21  分类 : 《随便一记》  评论

点击全文阅读


1. 问题描述

这几天搭建了一个微服务项目,使用nacos2.2来做注册和配置中心,但是启动nacos的时候发现报错,查看log后发现报的是,

Caused by: io.jsonwebtoken.security.WeakKeyException: The specified key byte array is 16 bits which is not secure enough for any JWT HMAC-SHA algorithm.  The JWT JWA Specification (RFC 7518, Section 3.2) states that keys used with HMAC-SHA algorithms MUST have a size >= 256 bits (the key size must be greater than or equal to the hash output size).  Consider using the io.jsonwebtoken.security.Keys#secretKeyFor(SignatureAlgorithm) method to create a key guaranteed to be secure enough for your preferred HMAC-SHA algorithm.  See https://tools.ietf.org/html/rfc7518#section-3.2 for more information.
    at io.jsonwebtoken.security.Keys.hmacShaKeyFor(Keys.java:96)
    at com.alibaba.nacos.plugin.auth.impl.JwtTokenManager.processProperties(JwtTokenManager.java:75)
    ... 47 common frames omitted
 

2. 解决方案

废了半天劲终于在nacos官网上找到了答案,nacos2.2是默认开启鉴权的,所以需要在application.properties中的配置信息。在nacos2.2的application.properties找到nacos.core.auth.default.token.secret.key,默认情况下nacos.core.auth.default.token.secret.key是没有值得,所以导致启动nacos后报上面的错,根据官网说的,需要在启动nacos前给nacos.core.auth.default.token.secret.key填个256bit的token值,也可以复制官网上给的默认token值 SecretKey012345678901234567890123456789012345678901234567890123456789,这样问题就解决了。

下面的是官网给出的解决方案。

自定义密钥

开启鉴权之后,你可以自定义用于生成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=

注意:鉴权开关是修改之后立马生效的,不需要重启服务端。


点击全文阅读


本文链接:http://zhangshiyu.com/post/57001.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1