什么是 JWT 以及其将如何保护您的文档

2022年09月29日作者: Alina

主动保护文件的方式有多种,比如:使用加密、水印功能以及限制访问权限。但是文档安全性功能完全不止于此。继续阅读本文,了解 JWT——从v7.2开始,这是ONLYOFFICE默认启用的访问保护工具。

什么是 JWT 以及其将如何保护您的文档

什么是 JWT

JSON Web Token(即:JWT,发音为 /dʒɒt/)是一种安全在线信息交换开放标准,主要用于两种目的——授权和数据传输。

一个紧凑的JSON 对象中将包含身份验证信息,并在应用于 web 应用程序中时提供验证服务合法用户的能力。简而言之,其可以帮助应用程序确认信息的发送者是否是他们所声称身份。

JWT 是一种自包含的对象,其形式为字符串,由标头(header)、有效负载(payload)和签名(signature)组成。标头中包含有关令牌以及如何生成签名的信息,有效负载中包含有关提供访问权限所必要的用户声明,签名则用于验证用户身份。

我们可使用密钥来对令牌进行签名。密钥可用于验证传输数据的来源。

ONLYOFFICE 如何使用安全令牌

在 ONLYOFFICE 中,JWT 将被用于保护编辑器和用户之间的数据流。其可对在文档中进入了编辑会话并尝试在文档中执行某些操作的用户进行验证。来自 ONLYOFFICE 文档服务器的每个 HTTP 请求都会有相应的令牌,其将被添加到参数中。

这里针对不同的用户操作生成了不同的 JWT。令牌在每种情况下都会使用相同的密钥签名,这一信息有助于以不同方式对输入进行授权。例如,在打开编辑器时、向文件插入图像、打开文档版本历史记录等情形中会创建单独的令牌。

如需向托管在 www.example.com 上的文件添加 PNG 图像,那么就需要在令牌中包含以下参数:

{
    "fileType": "png",
    "url": "https://example.com/url-to-example-image.png"
}

示例令牌如下:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmaWxlVHlwZSI6InBuZyIsInVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vdXJsLXRvLWV4YW1wbGUtaW1hZ2UucG5nIn0.FXuC3GUvPq3japwyzo4i-utU

为了对 JWT 进行签名,在每个集成了 ONLYOFFICE 文档的共享服务中都会使用一个自定义密钥。

如何获取密钥

ONLYOFFICE 文档的早期版本中默认是不包含 JWT 密钥的,其必须由托管服务(如:Nextcloud)管理员进行生成,并通过设置手动提交给 ONLYOFFICE 文档服务器。

从v7.2开始,JWT被默认启用。ONLYOFFICE 文档安装和启动后,系统会自动生成一个随机的秘密,只需要在主机应用程序的一侧添加。

注意:如果您已经在使用ONLYOFFICE Docs与JWT,原始密钥将保留在您的设置中。Docker安装是个例外:如果在已安装的文档服务器中没有设置环境变量或没有定义JWT参数,更新后将会产生一个随机的秘密。

Linux和Windows服务器安装方式

您可以通过以下路径从local.json文件中获得默认的JWT秘密:

用于Linux: /etc/onlyoffice/documentserver/local.json

用于Windows: %ProgramFiles%\ONLYOFFICE\DocumentServer\config\local.json

您可以在services.CoAuthoring.secret.browser.string参数中找到这个秘密。

Docker 安装方式

如果ONLYOFFICE Docs是使用Docker安装的,请运行以下脚本以获得秘密:

sudo docker exec f00ad6e66a40 /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.str

要用自定义的密钥来替换默认的秘密,请阅读该文件

安装后,每种安装方法的单独说明也将在ONLYOFFICE Docs主页上提供。

JWT 可在哪里使用?

几乎所有的官方 ONLYOFFICE 集成应用都支持 JWT,如:

  • Nextcloud
  • ownCloud
  • Alfresco
  • Moodle
  • Mattermost
  • Chamilo
  • HumHub
  • Confluence
  • Plone
  • Strapi
  • Liferay
  • Jira
  • Nuxeo
  • Redmine

您可浏览我们的网站以了解所有可用集成,还可在相应的 GitHub 页面上获知有关 Token 配置的指导。

如果您想为自己的应用创建 ONLYOFFICE 集成,则可查看我们的 API 指南以了解是否可以添加安全性令牌支持。