onlyoffice docker启用jwt并生成jwt

一、说明

        本文是docker教程,linux/win的安装版本也类似,只需要修改配置文件中的secrt就可以了【Configuring JWT for ONLYOFFICE Docs - ONLYOFFICE

二、正文开始

        docker启动时候如果不想使用jwt,加上参数-e JWT_ENABLED=false就可以了,比如:

docker run --name=oo -i -t -d -p 10100:80 --restart=always -e JWT_ENABLED=false 镜像基地址

        如果想使用jwt,防止资源滥用,就这样写:

docker run --name=oo -i -t -d -p 10100:80 --restart=always -e JWT_ENABLED=true -e JWT_SECRET=【这里写自己的秘钥】 镜像地址

        两者的却别在于,开启jwt,并配置秘钥,这里注意,docker不需要修改配置文件,直接使用参数就行,不要修改配置文件,如果修改了local.json,容器重启后就会失效!!!

-e JWT_ENABLED=true 
-e JWT_SECRET=【这里写自己的秘钥】

三、jwt生成方式

 1、首先记住你上面的秘钥

 2、你的config

         一般来说,config是由后端生成好传递给前端的,比如说,生成出来是这个样子的,这个格式将作为jwt的加密体,前端收到后,千万不要修改,千万不要修改!!!!!

{
	"type": "desktop",
	"documentType": "word",
	"historyList": {
		"history": [],
		"currentVersion": "1"
	},
	"document": {
		"title": "【经营】通用合同模板.docx",
		"url": "http://47.94.91.67/demo_file/comment_test.docx",
		"permissions": {
			"print": true,
			"download": true,
			"edit": true
		},
		"attachId": "e932e7bb1e4d449aa9a7d8b403b4b517",
		"fileType": "docx",
		"key": "ccef18593ef90976d4b5d9"
	},
	"editorConfig": {
		"canCoAuthoring": false,
		"customization": {
			"chat": false,
			"about": false,
			"feedback": false,
			"compactHeader": false,
			"displayTitle": true,
			"leftMenu": false,
			"rightMenu": false,
			"autosave": false,
			"compactToolbar": false,
			"forcesave": true,
			"toolbarNoTabs": true,
			"help": false,
			"hideRightMenu": true,
			"plugins": true,
			"logo": {
				"image": "http://192.168.71.162:8083/onlyoffice_logo.png",
				"imageEmbedded": "http://192.168.71.162:8083/only_office_embedded.png",
				"url": "https://oav3.kmxxg.cn/",
				"imageDark": "http://192.168.71.162:8083/onlyoffice_logo.png"
			}
		},
		"mode": "view",
		"callbackUrl": "https://www.onlyoffice.com:443/callback.ashx?from=office-suite",
		"lang": "zh-CN",
		"user": {
			"name": "曹瑞剑雄",
			"id": "104"
		}
	}
}

3、使用jwt加密

        对你生成的config进行加密,比如说你的config像第【2】步一样,这一步也是后端,我用的是java demo:

package com.example.test.util;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.primeframework.jwt.Signer;
import org.primeframework.jwt.domain.JWT;
import org.primeframework.jwt.hmac.HMACSigner;

import java.util.Map;

public class OnlyofficeJwt {

    /**
     * 把jsonObject返回给前端使用
     * @return
     */
    public JSONObject getToken(){
        String config = "把上面的config放到这里";
        JSONObject jsonObject = JSONUtil.parseObj(config);
        String tokenSecret = "my_secret";
        Map<String, Object> payloadClaims = BeanUtil.beanToMap(jsonObject);
        String token = "";
        try {
            Signer signer = HMACSigner.newSHA256Signer(tokenSecret);
            JWT jwt = new JWT();
            for (String key : payloadClaims.keySet()) {
                jwt.addClaim(key, payloadClaims.get(key));
            }
            token = JWT.getEncoder().encode(jwt, signer);
        } catch (Exception e) {
            token = "";
        }
        jsonObject.set("token", token);
        return jsonObject;
    }
}

4、token生成使用

        token生成后,set 进去你的 config 中,然后把新的 config 返回给前端就可以了,比如:

 5、前端使用方式

        前端拿到这个config后,在初始化only的时候不建议修改里面的内容,会导致jwt解析与传入的config不一致导致验证失败。所以拿到内容后直接初始化即可。

        

四、后端用到的 jwt 插件

<dependency>
    <groupId>com.inversoft</groupId>
    <artifactId>prime-jwt</artifactId>
    <version>1.3.1</version>
</dependency>

### 安装和配置 OnlyOffice #### 准备工作 在宝塔面板上安装和配置 OnlyOffice 前,需确认服务器环境已准备好。建议先通过宝塔面板完成基础设置,包括但不限于域名解析、SSL 证书获取等操作[^3]。 #### 创建站点安装 Docker 组件 利用宝塔面板创建一个新的站点,该站点将作为 OnlyOffice 的访问入口。随后,在软件商店中找到安装 Docker 组件,这是运行 OnlyOffice 所必需的容器化技术[^4]。 #### 获取启动 OnlyOffice 镜像 执行命令 `docker pull onlyoffice/documentserver:7.5` 来下载指定版本的 OnlyOffice 镜像文件至本地仓库。之后,依据实际需求调整端口映射关系及挂载路径参数,使用如下指令来启动容器: ```bash sudo docker run -i -t -d -p 8184:80 -p 8185:443 \ -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \ --name onlyoffice7.5ssl --restart=always \ -e JWT_SECRET=your_secret_key_here \ onlyoffice/documentserver:7.5 ``` 此过程中的 `-p` 参数用于定义外部与内部网络之间的端口转发规则;而 `-v` 则指定了宿主机目录同容器内对应位置间的绑定方式,确保数据持久保存于物理磁盘之上。 #### 开启 HTTPS 支持 为了保障通信安全,推荐启用 SSL/TLS 加密机制。这通常涉及到购买或自签发一份有效的 X.509 数字凭证,将其正确部署到应用层面上。对于采用反向代理架构的服务而言,还需额外注意 Nginx 或 Apache 等 Web Server 对 HTTPS 请求的支持情况。 #### 启用 WOPI 协议集成 Office 文档在线编辑功能 从 OnlyOffice 社区版6.4起正式引入了对微软提出的 WOPI (Web Application Open Platform Interface) 接口标准的支持,使得第三方应用程序能够更加便捷地实现文档协作处理能力。具体实施步骤可参照官方文档说明进行相应配置更改[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值