有很多同学希望把 DataV 创建的数据可视化大屏整合到自己的网站中,我们很早就提供了这样的支持。

但是如果限定权限则成为了一个问题。

如你嵌入到自己网站中的大屏,可能不希望被别人提取出来,自己打开。或者你提供给 A 用户的大屏,不希望被 B 用户打开。

现在 DataV 就有一个新特性来支持这个问题。

在新上线的 DataV 中的“发布”面板中就有这个叫“验证 Token”的方式来完成鉴权,这个方式是基于 HMAC-SHA256 base64 加密。

WX20170210_013722_2x

如图,在开启“验证 Token”时,DataV 会为您生成一个 Token,您需要记录下这个 Token,以备后用。

在这个时候,如果您尝试直接打开您所分享的页面,您会收到一个 Access Denied。表示您的访问被拒绝了。

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

  1. 发布大屏,拿到大屏编码(url 的最后一段)
  2. 将编码与当前时间(毫秒)连起来,用 |(竖线)分隔开
  3. 使用 token 通过 HMAC-SHA256 base64 对上一步得到的字符串进行加密
  4. 将时间和加密后的签名分别命名为 _datav_time, _datav_signature 放入 url 的 querystring 中

下面是示例:

PHP:

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

NODE.JS:

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

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

好了

今天就到这儿吧,小编要回家给主子铲屎了。

_

DataV 支持 token 验证啦!相关推荐

  1. 手动生成token_手动设计简单的Token验证

    简述一下项目中手写的Token验证服务设计过程 PART A 设计校验的哈希算法 这里直接展示整个项目中用到的算法库,其中涉及位运算的可不管 直接应用到的方法是hash(str) 大概流程如下 1.构 ...

  2. jwt token 附加用户信息_SpringBoot+JWT实现token验证并将用户信息存储到@注解内

    springboot集成jwt实现token验证 1.引入jwt依赖 io.jsonwebtoken jjwt 0.9.0 com.auth0 java-jwt 3.9.0 2.自定义两个注解 /** ...

  3. 手动设计简单的Token验证

    简述一下项目中手写的Token验证服务设计过程 PART A 设计校验的哈希算法 这里直接展示整个项目中用到的算法库,其中涉及位运算的可不管 直接应用到的方法是hash(str) 大概流程如下 1.构 ...

  4. VUE+SpringBoot+JWT实现token验证,SSO单点登录

    Session的产生: 在说session是啥之前,我们先来说说为什么会出现session会话,它出现的机理是什么?我们知道,我们用浏览器打开一个网页,用到的是HTTP协议,htpp协议是无状态的,什 ...

  5. go token验证_registry v2 解析以及如何实现token验证

    提到registry v2,主要改进是支持并行pull镜像,镜像层id变成唯一的,解决同一个tag可能对应多个镜像的问题等等.如果还不太了解,可以且听我细细道来. 首先不得不说的是v2 新加了一个概念 ...

  6. fastadmin token 验证错误_用签名保护你的隐私(4)--token生成

    Token 是在服务端产生的.如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端.前端以后再次请求的时候带上 Token 证明自己的合法地位,无需再次带上 ...

  7. go token验证_golang jwt+token验证的实现

    Token验证是验证用户身份的重要方式,在golang开发中具有广泛应用,文中主要阐述了利用jwt包加密后的token验证. 导入包: import ( "github.com/dgrija ...

  8. go token验证_GitHub - goflyfox/gtoken: 基于gf框架的token插件,通过服务端验证方式实现token认证;...

    gtoken 介绍 基于GoFrame框架的token插件,通过服务端验证方式实现token认证:已完全可以支撑线上token认证,通过Redis支持集群模式:使用简单,大家可以放心使用: gtoke ...

  9. 【Kubernetes】k8s的安全管理详细说明【k8s框架说明、token验证和kubeconfig验证详细说明】

    文章目录 环境准备 k8s安全框架介绍 token验证 说明 启用token验证 测试token验证 base-auth[已经被淘汰] kubeconfig验证 说明 kubeconfig文件拷贝做测 ...

最新文章

  1. 怎么快速把语音转成文字
  2. hi!亲爱的好友,欢迎您的光临
  3. “ yield”关键字有什么作用?
  4. 《PHP求职宝典》--Web设计页面笔记
  5. [BUUCTF-pwn]——bjdctf_2020_babystack
  6. Anaconda python3.6版本下载
  7. Rxjs 的一些学习笔记
  8. Java 微服务框架对比:Dubbo 和 Spring Cloud
  9. ubuntu部署tomcat
  10. ORA-12519: TNS:no appropriate service handler found 解决方法
  11. 融云发送图片消息_IM消息ID技术专题(五):开源分布式ID生成器UidGenerator的技术实现...
  12. php 文件上传框架,Laravel框架实现文件上传的方法分析
  13. 小白_Unity引擎_Console控制台
  14. OCR手写字体生成数据
  15. 房地产中介信息管理系统平台源码开发解决方案
  16. JAVA 实现阿里云的短信验证码
  17. 腾讯云TRTCCalling实时音视频说明文档
  18. c++ 中 setw()函数
  19. html中将正方形动画变成圆形,css中把正方形变成圆形的方法
  20. 免费全能空间(无广告)php +mysql

热门文章

  1. 商品规格表设计_400㎡美容院装修设计,为什么说无中式不贵气?
  2. Spring详解:WebServlet 中不能注入Bean对象
  3. php转盘抽奖源码yii2,yii2实现 上一篇,下一篇 功能的代码实例
  4. apache http自动跳转https_怎么给网站开启https协议?Apache2下SSL证书安装配置方法...
  5. learning scala read from file
  6. 著名站点的爬虫 —— 豆瓣
  7. LeetCode OJ -Happy Number
  8. (C#)设计模式之装饰模式
  9. 如何设置listview每个item高度
  10. BeanUtils工具包操作JavaBean