当前位置: 首页 > news >正文

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:

String config = "{\"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\"}}}";
JSONObject jsonObject = JSONUtil.parseObj(config);
String tokenSecret = "你的秘钥";
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 = "";
}

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>


http://www.mrgr.cn/news/55249.html

相关文章:

  • 《Redis实战》note-8 构建简单的社交网站
  • 【MR开发】在Pico设备上接入MRTK3(一)——在Unity工程中导入MRTK3依赖
  • 智融SW5106 无线充电发射端全集成 SOC
  • Yolo目标检测:实时性与准确性的完美结合
  • PyMySQL连接MySQL和StarRocks查询表
  • 如何做软件系统的成本估算?
  • 【OD】【E卷】【真题】【100分】数字排列(PythonJavaJavaScriptC++)
  • 关于 SpringBootTest 你必须知道的 - 登录认证在 Spring Boot 上的标准单元测试写法,看一眼就会怀孕。
  • c语言基础程序——经典100道实例。
  • On-Device Training Under 256KB Memory 端侧极端算力设备资源下的模型训练工作研究
  • 使用mvn命令导出依赖包
  • @Component 和 @Bean 的区别与联系
  • C++ 异步执行任务async()(补充)
  • 基于Java+SpringBoot+Vue的IT技术交流和分享平台
  • Linux中部署Mysql保姆级教程
  • Django中的ModelForm组件
  • 自动求导实现
  • C++ 新特性 | C++ 11 | tuple 模版
  • 跟风考的PMP帮我拿到了offer
  • Unity3D功耗和发热分析与优化详解
  • Android中使用bottomnavigation实现底部导航栏
  • CST软件如何验证“平面波+探针”的频域结果
  • 怎么用六西格玛增强解决问题的逻辑性?
  • ATTCK 框架讲解
  • 建议使用requestAnimationFrame替代定时器setInterval、setTimeout完成页面动画
  • SAP MDG —— MDG on S/4HANA 2023 FPS02 创新汇总 AI功能首次发布!