欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > onlyoffice关闭JWT后依然报错如何解决?

onlyoffice关闭JWT后依然报错如何解决?

2025/4/19 13:24:23 来源:https://blog.csdn.net/wykqh/article/details/147338238  浏览:    关键词:onlyoffice关闭JWT后依然报错如何解决?

onlyoffice关闭JWT后依然报错如何解决?

一、部署方式

我是以docker方式部署的,直接通过环境变量禁用了JWT,命令如下:

docker run -d \--name onlyoffice-no-jwt \--restart=always \-p 8069:80 \-e JWT_ENABLED=false \onlyoffice/documentserver:8.3.3

二、问题描述

部署成功后能正常访问,但是运行官方示例时,新建文件时报错。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

报错内容如下:

第一个是 Warning

The document could not be saved. Please check connection settings or contact your administrator.
When you click the ‘OK’ button, you will be prompted to download the document.

第二个是 Error

Download failed.
Press “OK” to return to document list

三、问题原因

1.JWT 禁用与私有IP限制冲突
  • 虽然通过 -e JWT_ENABLED=false禁用了JWT验证,但OnlyOffice 8.3.3版本默认会阻止私有IP访问。当测试页面尝试创建文件时,后端服务可能因私有IP限制而拒绝连接。
  • 典型错误日志:Error: DNS lookup xxx.xxx.xxx.xx(family:undefined, host:undefined) is not allowed. Because, It is private IP address。
2. JWT 和私有IP限制的关系
  • JWT 的作用:JWT 是 ONLYOFFICE 的安全机制,用于验证请求的合法性,防止未经授权的访问。
  • 私有IP限制:ONLYOFFICE 默认会阻止私有IP(如192.168.x.x、172.16.x.x、10.x.x.x)的访问,这是为了防止SSRF(服务器端请求伪造)攻击。

关键点

  • 如果启用 JWT:ONLYOFFICE 会信任经过 JWT 签名的请求,即使目标地址是私有IP,也不会阻止访问。

  • 如果禁用 JWT:ONLYOFFICE 会严格检查请求的目标IP,如果是私有IP,就会拒绝访问,并报错:

     Error: DNS lookup 192.168.x.x is not allowed. Because, It is private IP address.
    
3. 为什么禁用 JWT 会导致私有IP被阻止?

ONLYOFFICE 的设计逻辑是:

  • 启用 JWT:认为请求是安全的(因为经过了签名验证),所以允许访问私有IP。
  • 禁用 JWT:认为请求可能不安全,因此强制启用私有IP过滤,防止恶意请求。

换句话说

  • 不禁用 JWT → 私有IP 可以 访问(因为请求受信任)。
  • 禁用 JWT → 私有IP 不能 访问(因为安全策略生效)。

四、解决方法

如果你 必须禁用 JWT,同时又要允许私有IP访问,可以修改 default.json 配置文件:

"request-filtering-agent": {"allowPrivateIPAddress": true,"allowMetaIPAddress": true
}

修改方法

  • 方法1:因为容器内没有vim 所以使用 sed 命令直接修改容器内的配置文件default.json
docker exec -it 容器名 /bin/sh -c 'sed -i "s/\"allowPrivateIPAddress\": false/\"allowPrivateIPAddress\": true/g" /etc/onlyoffice/documentserver/default.json'
docker exec -it 容器名 /bin/sh -c 'sed -i "s/\"allowMetaIPAddress\": false/\"allowMetaIPAddress\": true/g" /etc/onlyoffice/documentserver/default.json'
  • 方法2:通过宿主机修改后复制回容器

将配置文件复制到宿主机:

docker cp 容器名:/etc/onlyoffice/documentserver/default.json ./default.json

在宿主机用任意编辑器修改文件,添加或修改以下内容:

"request-filtering-agent": {"allowPrivateIPAddress": true,"allowMetaIPAddress": true
}

复制回容器并重启ONLYOFFICE容器:

docker cp ./default.json 容器名:/etc/onlyoffice/documentserver/default.json
docker restart 容器名

或进入容器内执行下面的命令 。

supervisorctl restart all

这样虽然能解决问题,但官方 不建议 这样做,因为这会降低安全性 。更好的做法是:

内执行下面的命令 。

supervisorctl restart all

这样虽然能解决问题,但官方 不建议 这样做,因为这会降低安全性 。更好的做法是:

  1. 启用 JWT(更安全)。
  2. 如果必须用私有IP,可以搭配域名解析(如修改/etc/hosts或使用内网DNS)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词