如何配置Token发布
使用 Token 发布可视化应用
使用 Token 发布可视化应用,将可视化应用的访问权限与您的权限体系进行集成。
开启 Token 验证并获取 SecretKey
在可视化应用发布时选择 Token 发布,此时您将获得该可应用的访问 URL 和 SecretKey。
您应当谨慎保管 SecretKey。
生成 Token 并拼接成完整 URL
EasyV 使用标准的 JSON Web Token 进行验证。
通过以下步骤可生成受 Token 验证防护的应用 URL:
设置 Payload
Payload 中支持以下添加以下字段:
名称 | 类型 | 描述 | 是否必填 |
exp | number | URL 过期时间(时间戳)。若当前时间超出过期时间,则应用不允许访问。EasyV 支持的最长过期时长为 24 小时。请确保您的服务器时间为东 8 区标准时间。 | 必填 |
limit | number | URL 允许的访问次数。若 URL 访问次数超过 limit 值,则应用不允许访问。不填则不限制 URL 访问次数。 | 选填 |
使用 SecretKey 进行签名
使用 HMAC-SHA256 base64 对上一步中设置的 payload 进行签名,生成 JSON Web Token。
拼接 URL
将上一步生成的 Token 拼接到预览链接中。
在 URL 中添加 query 参数: _easyv_token=YourUniqueToken
示例代码:
Python
安装 jwt 依赖库:
pip install PyJWT
主要代码如下:
import jwt import time secretKey = 'YourSecretKey' baseShareUrl = 'https://easyv.dtstack.com/workspace/shareScreen/yourSreenId' payload = { "limit": 1, # 只允许访问一次 "exp": int(time.time()) + 30 * 60 # 30分钟过期 } token = jwt.encode(payload, secretKey, algorithm="HS256") URL = baseShareUrl + '?_easyv_token=' + token print("应用链接: ", URL)
Java
配置 maven:
<dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.17.0</version> </dependency>
主要代码如下:
import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.exceptions.JWTCreationException; import java.util.Date; public class Main { public static void main(String[] args) { String baseShareUrl = "https://easyv.dtstack.com/workspace/shareScreen/yourSreenId"; try { Algorithm algorithm = Algorithm.HMAC256("YourSecretKey"); String token = JWT.create() .withExpiresAt(new Date(System.currentTimeMillis() + 60 * 1000)) // 60秒后过期 .withClaim("limit", 1) // 限制使用1次 .sign(algorithm); String url = baseShareUrl + "?_easyv_token=" + token; System.out.println("应用链接: " + url); } catch (JWTCreationException exception) { exception.printStackTrace(); } } }
Node.js
安装 jwt 依赖库:
npm install jsonwebtoken
主要代码如下:
const jwt = require('jsonwebtoken'); const secretKey = 'YourSecretKey'; const baseShareUrl = 'https://easyv.dtstack.com/workspace/shareScreen/yourSreenId'; const limit = 1; //只允许访问一次 const token = jwt.sign({ limit }, secretKey, { algorithm: 'HS256', expiresIn: '1h' }); const URL = `${baseShareUrl}?_easyv_token=${token}`; console.log('应用链接: ', URL);
Go
安装 jwt 依赖库:
go get github.com/dgrijalva/jwt-go
主要代码如下:
package main import ( "github.com/dgrijalva/jwt-go" "time" ) const secretKey = `YourSecretKey` const baseShareUrl = `https://easyv.dtstack.com/workspace/shareScreen/yourSreenId` func main() { tokenMaker := jwt.New(jwt.GetSigningMethod("HS256")) tokenMaker.Claims = jwt.MapClaims{ "limit": 1, // 限制 URL 只允许访问一次 "exp": time.Now().Add(time.Hour * 2).Unix(), // 设置过期时间为 2 小时 } token, _ := tokenMaker.SignedString([]byte(secretKey)) url := baseShareUrl + `?_easyv_token=` + token print("应用链接:", url) }