全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件

发布可视化应用

更新时间:2018-05-18 11:41:43

DataV的发布功能包含了链接设置历史快照功能,如下图所示。

image

进入DataV控制台,单击发布。如果发布分享开关为开,表示应用已经发布,否则说明应用没有发布。

链接设置

打开发布分享开关后,会随机生成一个分享链接,此链接每次打开之后都会变更,上一次的分享链接随即失效且不能恢复到历史分享链接。

发布功能提供了三种分享方式:

  • 公开分享

  • 密码访问分享

  • Token 验证分享

请选择合适的方式以方便内外部用户进行可视化应用的访问。

公开分享

  1. 登录 DataV 控制台

  2. 单击我的可视化,进入可视化应用管理页面。

  3. 选择一个可视化应用,单击发布

  4. 打开发布分享开关,即可通过下图的分享链接公开访问您的可视化应用。

    image

密码访问(企业版功能)

  1. 登录 DataV 控制台

  2. 单击我的可视化,进入可视化应用管理页面。

  3. 选择一个可视化应用,单击发布

  4. 在发布弹窗中,单击设置访问密码页签,并打开页签中的开关。

  5. 输入您的验证密码,密码长度为6位以上,且必须具备以下三个条件。

    • 英文大写字母 A~Z
    • 英文小写字母 a~z
    • 10个基本数字 0~9

    如果密码设置成功,系统会提示“设置密码成功”。否则密码的输入框会变成红色。

  6. 选择是否开启校验有效期32小时开关。

    • 开启,访问者首次输入密码成功访问大屏后的32小时内,可任意访问该大屏而无需输入密码。32小时后该访问者需再次输入密码。
    • 不开启,访问链接有效性在一分钟之后过期。

当您再次访问链接当中的 URL 时,系统会提示需要输入密码。

publicByPassword

Token验证(企业版功能)

如果您希望跟您的权限体系进行集成,您可以通过 Token 验证的方式实现。

  1. 登录 DataV 控制台

  2. 单击我的可视化,进入可视化应用管理页面。

  3. 选择一个可视化应用,单击发布

  4. 在发布弹窗中,单击设置Token验证页签,并打开页签中的开关。

  5. 选择是否开启校验有效期32小时开关。

    • 开启,访问者首次进行Token验证成功访问大屏后的32小时内,可任意访问该大屏而无需再次进行Token验证。32小时后该访问者需再次进行Token验证。
    • 不开启,访问链接有效性在一分钟之后过期。

开启验证 Token开关后,DataV 会为您生成一个 Token,您需要记录下这个 Token,以备后用。

如果直接打开您所分享的页面,会收到一个“Access Denied”消息。表示您的访问被拒绝了。

如果想要打开您的页面,需要完成下面几个步骤:

注意:为了防止重放攻击,请确保您的服务器时间为东8区标准时间,DataV 只会提供1分钟的误差,如果时间误差超过1分钟将会验证失败。

  1. 发布大屏,记录大屏编码(url 的最后一段)。

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

  3. 使用 token 通过 HMAC-SHA256 base64 对上一步得到的字符串进行加密。

  4. 将时间和加密后的签名分别命名为 _datav_time_datav_signature

  5. 将它们依次放入 urlquerystring 中。

示例如下:

PHP:

  1. <?php
  2. $token = "kBwoX9rFX9v4zbOT0Gjd_wr65DZ3P_WW";
  3. $screenID = "03d1b68faeb09671046d1ef43f588c33";
  4. $time = time()*1000;
  5. $stringToSign = $screenID.'|'.$time;
  6. $signature = urlencode(base64_encode(hash_hmac('sha256', $stringToSign, $token, true)));
  7. $url = "http://local.datav.aliyun.com:9999/share/".$screenID."?_datav_time=".$time."&_datav_signature=".$signature;
  8. ?>
  9. <iframe width=100% height=100% src="<?=$url?>"/>

NODE.JS:

  1. const crypto = require('crypto');
  2. var token = "Ev97wOUSAtJusc3Vsd9O2ngr_vfVFH67";
  3. var screenID ="14c5448c00ecde02b065c231d1659f38";
  4. var time = Date.now();
  5. var stringToSign = screenID +'|'+ time;
  6. var signature = crypto.createHmac('sha256', token).update(str).digest().toString('base64');
  7. var url="http://datav.aliyun.com/share/"+ screenID +"?_datav_time="+time+"&_datav_signature="+ encodeURIComponent(signature);

Java:

  1. package com.company;
  2. import java.security.*;
  3. import java.util.Date;
  4. import javax.crypto.*;
  5. import javax.crypto.spec.SecretKeySpec;
  6. import org.apache.commons.codec.binary.Base64;
  7. import java.net.URLEncoder;
  8. /**
  9. * Created by kangyu on 2017/11/4.
  10. */
  11. public class TokenTest {
  12. public static String getSignedUrl(String screenID, String token){
  13. Date date = new Date();
  14. Long time = date.getTime();
  15. String stringToSign = screenID + "|" + time;
  16. String signature = HMACSHA256(stringToSign.getBytes(), token.getBytes());
  17. String url = "http://datav.aliyun.com/share/"+ screenID +"?_datav_time="+time+"&_datav_signature="+ signature;
  18. return url;
  19. }
  20. /**
  21. * 利用java原生的摘要实现SHA256加密
  22. * @param str 加密后的报文
  23. * @return
  24. */
  25. public static String HMACSHA256(byte[] data, byte[] key)
  26. {
  27. try {
  28. SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA256");
  29. Mac mac = Mac.getInstance("HmacSHA256");
  30. mac.init(signingKey);
  31. return URLEncoder.encode(byte2Base64(mac.doFinal(data)));
  32. } catch (NoSuchAlgorithmException e) {
  33. e.printStackTrace();
  34. } catch (InvalidKeyException e) {
  35. e.printStackTrace();
  36. }
  37. return null;
  38. }
  39. private static String byte2Base64(byte[] bytes){
  40. return Base64.encodeBase64String(bytes);
  41. }
  42. public static void main(String[] args) throws Exception {
  43. System.out.println(getSignedUrl("screenId", "token"));
  44. }
  45. }

历史快照(企业版功能)

屏幕的内容会锁定在历史快照创建的那一刻,存档之后屏幕内容的编辑和修改不会同步到历史快照中,可作为稳定预览版本的备份。
历史快照功能在第一次打开的时候,默认读取实时更新发布模式,如下图所示。链接设置完成之后,刷新分享大屏,会立即生效。

注意:快照目前仅支持切换,不具备回滚的功能。

  1. 单击新建历史快照,系统会将单击时的大屏配置项作为快照存起来。

    • 可在注释列添加注释备忘。
    • 关闭发布分享功能之后,快照的数据会继续保留。
  2. 再次单击新建历史快照,可新增历史快照,系统仅支持三个有效快照。

  3. 单击删除,删除多余快照。

  4. 单击状态列的单选框,可在快照与快照之间,或者快照与实时模式之间切换,如下图所示。

  5. 刷新分享页即可看到您选中的快照版本的大屏内容。

本文导读目录