CouchDB JWT认证失败求助:请求返回“无效密钥”错误
解决CouchDB JWT认证"Not a valid key"错误
核心问题分析
你使用的是HS256对称加密算法,但CouchDB配置中填写了RSA格式的公钥,这是核心矛盾:
- HS256需要的是共享对称密钥字符串,而非PEM格式的公钥/私钥
- 只有RS256这类非对称加密算法,才需要PEM格式的公钥/私钥对
具体修复步骤
修正CouchDB配置项
因为用HS256,配置需改为jwt_keys.hmac:mykey,值直接填你Node.js签发JWT时用的共享密钥,不要加PEM头:[jwt_keys] hmac:mykey = your-shared-secret-string确认JWT头与配置匹配
你的JWT头格式是正确的,无需修改:{"alg": "HS256","typ": "JWT","kid": "mykey"}若改用RS256非对称加密
如果你原本想走非对称流程,需调整两处:- 将JWT头的
alg改为RS256 - CouchDB配置项改为
rsa:mykey,值填完整的单行PEM公钥(需包含-----END PUBLIC KEY-----,用\n替换换行):[jwt_keys] rsa:mykey = -----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...\n-----END PUBLIC KEY-----
- 将JWT头的
验证配置生效
修改配置后重启CouchDB,同时确认目标数据库_security中已将JWTsub字段对应的用户设为管理员,再用JWT发起请求测试。
内容的提问来源于stack exchange,提问作者Ronnie Smith
相关产品推荐
相关产品推荐

