TinyMCE RTC报No keys were available to verify the JWT错误求解
错误原因:No keys were available to verify the JWT
这个错误的本质是TinyMCE的实时协作服务端,找不到可以验证你生成的JWT签名的公钥:
- 你当前用RS256非对称算法生成JWT,签名用的是你本地的私钥,TinyMCE服务端必须持有和该私钥配对的公钥,才能完成签名校验。你没有把对应公钥配置到TinyMCE开发者后台的RTC配置项中,服务端无可用密钥验签就会抛出该错误。
- 部分场景下如果你的JWT缺少必填的签发者(iss)字段,TinyMCE服务端无法匹配到对应用户的公钥,也会触发该报错。
报错截图:
修复步骤
- 登录TinyMCE开发者后台,进入你的应用的实时协作功能配置页:
- 可以直接在后台生成专属RSA密钥对,下载生成的私钥替换你现有代码里的
privateKey变量,后台会自动存储对应的公钥 - 也可以把你自己生成的密钥对的公钥(注意是公钥,不要传私钥)上传到对应配置项,确保和你代码里用来签名的私钥是配对的
- 可以直接在后台生成专属RSA密钥对,下载生成的私钥替换你现有代码里的
- 检查你的JWT payload补充必填字段,示例正确的payload格式如下:
const payload = { sub: 'userid1', // 用户唯一ID exp: Math.floor(Date.now() / 1000) + (60 * 10), // 过期时间 iss: '你的TinyMCE账户/应用ID' // 必填,TinyMCE服务端用这个字段匹配对应的公钥 };
- 确认你签名用的算法和TinyMCE后台配置的验签算法一致,你当前用的RS256属于非对称算法,不要和HS256这类对称算法混用,HS256需要在后台配置对称密钥而非公钥。
- 额外修复你现有代码的潜在问题:
getEncryptionKey接口中引用的key变量未定义,会抛出500错误,需要提前定义该变量。
内容的提问来源于stack exchange,提问作者bhavasagar
相关产品推荐
相关产品推荐

