ubuntu,用docker部署,nextcloud+onlyoffice,onlyoffice7.2版默认启用jwt,nextcloud打开doc文档报令牌未正确形成。
onlyoffice中local.json的“services-CoAuthoring-token-inbox,outbox,browser”都改为false后重启还是会提示"令牌未正确形成"。并且重启后以上三个都会被自动更新为true。 还有什么可以解决的办法吗?
ONLYOFFICE 编辑器使用 Json Web Token (JWT),保护文档免遭未经授权的访问。在文档编辑器被初始化、以及在内部 ONLYOFFICE 文档服务之间交换命令时,这个令牌会被添加到配置中。会通过密钥对JWT进行签名,并根据向 ONLYOFFICE 文档发出的请求来验证该令牌。 自 ONLYOFFICE 文档 v.7.2 起,默认启用 JWT,并自动生成密钥。您可以随时按需更改相关参数。 为保护您的文档,您需要启用令牌验证并在 ONLYOFFICE 文档配置文件中指定您自己的密钥,然后在连接器设置中指定相同的密钥。
针对 Linux/ Windows: 配置 ONLYOFFICE 文档1.通过任意可用的文本编辑器打开 local.json 文件。 针对 Linux - /etc/onlyoffice/documentserver/local.json 针对 Windows - %ProgramFiles%\ONLYOFFICE\DocumentServer\config\local.json
2.通过将三个部分中的 false 值更改为 true 来启用令牌验证: services.CoAuthoring.token.enable.browser services.CoAuthoring.token.enable.request.inbox services.CoAuthoring.token.enable.request.outbox
3.通过将三部分中的密钥值替换为您自己的文本字符串,来指定您自己的密钥。密钥必须是相同的。 services.CoAuthoring.secret.inbox.string services.CoAuthoring.secret.outbox.string services.CoAuthoring.secret.session.string
"services": { "CoAuthoring": { "token": { "enable": { "request": { "inbox": true, "outbox": true }, "browser": true } }, "secret": { "inbox": { "string": "yoursecret" }, "outbox": { "string": "yoursecret" }, "session": { "string": "yoursecret" } } } } }
1.保存更改。 2.重启服务,以使配置更改生效。 systemctl restart ds-converter ds-docservice ds-example ds-metrics
针对 Docker: 使用环境变量 如果您在 /etc/onlyoffice/documentserver/local.json 中更改自动生成的密钥或手动禁用 JWT,JWT 会被再次启用,服务器重启时也会重新生成密钥。为了避免此问题,请在 docker run 命令中使用环境变量。 如要更改密钥,请在 -e JWT_SECRET=my_jwt_secret 中指定您自己的密钥值。如要禁用 JWT,请使用 -e JWT_ENABLED=false。
参数说明: --restart=always表示每次开机,只要当docker被设置为开机启动,此onlyoffice就会自动运行 -d 表示后台运行 -i: 交互式操作。 --name:为容器起一个名字 -t: 终端。 -p 8000:80 宿主机的8000端口映射到容器的80端口 -e JWT_ENABLED=false 开启密钥验证,默认开启。v7.2版以后功能。Dzzoffice必需要关闭。 -e JWT_SECRET=65321 设置密钥,如果没有开启密钥验证,无需设置此参数。 |