# 发布

通过发布功能,可以将已经开发完成的大屏看板驾驶舱(以下统称:文件) 发布到线上环境,并进行方法权限的设置,供其他人员在线观看。

  1. 打开设计器,点击菜单栏上的发布按钮。
  2. 打开发布分享开关,即可通过下图的分享链接公开访问文件。

发布介绍

提示:

打开发布分享开关后,会随机生成一个分享链接,此链接每次打开之后都会变更,上一次的分享链接随即失效。

# 访问限制

提示:

开启访问限制,分享链接才可进行相关访问验证限制,未开启访问限制则分享链接可直接打开访问。

# 登录验证

# 个人空间

开启登录验证后,登录验证无用户或用户组选择功能,访问分享链接地址时,仅发布人员账号允许登录访问。 个人空间

# 团队空间 2024.1+

开启登录验证后,登录验证可以选择可访问的用户或用户组,未指定时,当前团队空间下所有用户都允许登录访问,指定后,仅指定的用户或用户组中的用户允许登录访问。 团队空间

# 密码访问

  1. 在发布弹框中,勾选密码验证。

  2. 在密码输入框中输入你的验证密码。

  3. 点击确定。

  4. 当访问发布链接中生成的链接时,系统会提示需要输入密码。输入正确的密码后,才能访问文件。

    密码验证

提示:

未勾选验证时效选项时:每次访问文件时都需要输入密码。

# Token 验证

通过 Token 验证的方法将文件访问权限与其他系统进行集成。

在发布弹窗中,勾选Token 验证,即可开启 Token 验证功能,会生成一个 Token,如下图所示,您需要记录下这个 Token,以备后用。

token验证

# 验证规则

  1. 打开发布分享开关,记录文件发布的应用编码

    示例:https://hetu.taiji.com.cn/share/index.html#/TJ22558219572b438586be4d0f6d640e

  2. 编码当前时间(毫秒)连起来,并用|(竖线)分隔开。

  3. 使用 Token 通过 HMAC-SHA256 base64,对第 2 步得到的字符串进行加密。

  4. 将时间和加密后的签名分别命名为 timesignature,放置到分享地址后面进行文件访问。

    示例:

    https://hetu.taiji.com.cn/share/index.html#/TJ22558219572b438586be4d0f6d640e?time=1627791920059&signature=r4dBdgUswGOn2d2%2BJY5%2B7EoWYCQ9MNJjTLpGnndyEms%3D
    
  5. 验证失败,拒绝访问

提示:

默认 time 值与服务器时间的误差不超过 ±2 分钟,超过该误差限制后,生成的文件访问地址将失效 误差值可通过 config/application-prod.yml 文件中的hetu.tdv.release.max-time-difference进行设置,单位为毫秒

# 示例代码:

import java.security.*;
import java.util.Date;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

import java.net.URLEncoder;

public class Test {

  public static String getSignedUrl(String releaseCode, String token) {
    Date date = new Date();
    Long time = date.getTime();
    String args = releaseCode + "|" + time;
    String signature = hmacSHA256(args.getBytes(), token.getBytes());
    //TODO 访问地址前缀根据实际进行修改
    String url = "https://hetu.taiji.com.cn/share/index.html#/"
      + releaseCode + "?time=" + time + "&signature=" + signature;
    return url;
  }

  public static String hmacSHA256(byte[] data, byte[] key) {
    try {
      SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA256");
      Mac mac = Mac.getInstance("HmacSHA256");
      mac.init(signingKey);
      return URLEncoder.encode(byte2Base64(mac.doFinal(data)));
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }

  private static String byte2Base64(byte[] bytes) {
    return Base64.encodeBase64String(bytes);
  }

  public static void main(String[] args) throws Exception {
    String token = "OZPNpJCvuQYkhYZ%2fwx0iHw%3d%3d";
    System.out.println(getSignedUrl("TJ22558219572b438586be4d0f6d640e", token));
  }
}

# 验证参数 2024.1+

勾选Token 验证后,方可选择验证参数,验证参数可以对链接中的自定义参数进行验证。

保证文件的 URL 访问链接的参数不能被篡改,从而提高文件数据以及用户信息的安全性。

提示:

使用访问参数时必须使用 Token 验证的访问控制。

# 校验规则

  1. 打开发布分享开关,记录文件发布的应用编码
  2. 编码参数以及当前时间(毫秒)连起来,并用|(竖线)分隔开。
  3. 使用Token通过HMAC-SHA256 base64,对第 2 步得到的字符串进行加密。
  4. 将时间和加密后的签名分别命名为timesignature参数放置到分享地址后面进行文件访问。
  5. 如果签名参数验证失败,拒绝访问。

示例

https://hetu.taiji.com.cn/share/index.html#/TJ22558219572b438586be4d0f6d640e?time=1627791920059&signature=r4dBdgUswGOn2d2%2BJY5%2B7EoWYCQ9MNJjTLpGnndyEms%3D&userId=1234&b=1

代码示例


public static String getSignedUrl(String releaseCode,String token){
  Date date=new Date();
  Long time=date.getTime();
  String params="userId=1234&b=1";// 请求参数
  String args=releaseCode+"|"+time+"|"+params;
  String signature=hmacSHA256(args.getBytes(),token.getBytes());

  //TODO 访问地址前缀根据实际进行修改
  String url="https://hetu.taiji.com.cn/share/index.html#/"
  +releaseCode+"?time="+time+"&signature="+signature+"&"+params;
  return url;
}

# 验证时效

  • 勾选验证时效:可以设置安全验证的有效器

    • 设置 0 天,每次访问需要进行安全验证

    • 设置(1,180)天,安全验证通过后,在设置时间内访问文件不需要验证,超过时间需要重新验证。

  • 未勾选验证时效:每次访问需要进行安全验证。

  • 如果开启Token验证验证时效为 Token 值的有效时间

# 注意事项

  • 开启访问限制功能时,登录验证密码验证Token 验证必须勾选一项。

  • 密码验证Token 验证可同时使用。

  • 密码验证通过之后再进行Token 验证

  • 时间规则: 例如:发布时间 2021-08-01,验证时效设置为 3天,则验证的有效期限为: 2021-08-01 00:00:00~2021-08-04 23:59:59

  • 参数验证的前置条件必须开启 Token 验证。

Last Updated: 1/31/2024, 2:55:30 PM