与协作进行认证
Collaboration
由协作提供的 JWT 仅在几小时内有效,这对于测试来说足够,但对于真正的实时应用程序来说,肯定是不够的。
关于快速设置的指南,请按照这些说明操作。有关详细信息,请访问认证页面。
使用 JWT 进行认证
简单来说,JWT(JSON Web Token)是一个经过加密签名的 JSON 对象,这意味着生成的 JWT 不能被修改。
生成 JWT
JWT 必须 在服务器端生成,因为您的 secret 绝不能 离开您的服务器(也就是说,连前端都不应该尝试生成 JWT)。
您可以在 NodeJS 服务器上使用以下代码片段并围绕它构建 API。
import jsonwebtoken from 'jsonwebtoken'
const jwt = jsonwebtoken.sign(
{
/* 待编码到 JWT 的对象 */
},
'your_secret',
)
// 这个 JWT 应该在提供者的 `token` 字段中发送。绝不要将 'your_secret' 暴露给前端!完整的服务器/API 示例可以在这里找到。
确保将 secret 放入服务器环境变量中(或者只是将其作为常量放在服务器文件中,切勿从客户端传递)。
您可能想要创建一个 API 调用,如 GET /getCollabToken,该调用将根据服务器密钥和用户允许访问的文档列表生成 JWT。
限制访问特定文档
文档只能通过知道确切的文档名称来访问,因为无法从协作中获取文档列表。
因此,命名文档采用 userUuid/documentUuid 的方式是个好习惯(即 1500c624-8f9f-496a-b196-5e5dd8ec3c25/7865975c-38d0-4bb5-846b-df909cdc66d3),这样
就已经无法通过猜测名称打开随机文档。
如果您想进一步限制使用哪个 JWT 可以访问哪些文档,可以在 JWT 中编码 allowedDocumentNames 属性,如下示例所示。创建的 JWT 仅允许访问指定的文档。
import jsonwebtoken from 'jsonwebtoken'
const jwt = jsonwebtoken.sign(
{
allowedDocumentNames: [
'1500c624-8f9f-496a-b196-5e5dd8ec3c25/7865975c-38d0-4bb5-846b-df909cdc66d3', // userUuid/documentUuid
'1500c624-8f9f-496a-b196-5e5dd8ec3c25/*', // userUuid/*
],
},
'your_secret',
)
// 这个 JWT 应该在提供者的 `token` 字段中发送。绝不要将 'your_secret' 暴露给前端!