DataV 支持 token 验证啦!

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

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

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

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

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

如图,在开启“验证 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分钟将会验证失败。

好了

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

时间: 2024-10-14 03:24:39

DataV 支持 token 验证啦!的相关文章

ci-微信接口token验证失败

问题描述 微信接口token验证失败 我想用PHP CI框架写微信接口,但是token验证老是失败,该怎么解决 解决方案 先看你是否通过授权,是否拿到正确token 解决方案二: 都不描述一下你是怎么验证token的,怎么帮你? 解决方案三: 如果是拿到了token那就要考虑请求的uri是否正确了,微信的授权验证机制,是先将各个参数以请求的方式发到微信的服务器,然后再转发回来的,可能在转发的过程中,你某些参数获取失败了,跟踪uri 的返回,将参数打印出来,可能就能解决了 解决方案四: token

服务器没有正确响应Token验证的解决方法

一.问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 1. 你的服务器没有正确响应Token验证,请阅读消息接口使用指南 这样回头检查一下各项配置是否正确.如果确定配置没有问题,请按下面的方法检查 2. 请求URL超时 你的服务器在国外,或者服务器网速不给力,一般多试几次就可以了.如果经常这样,就需要考虑更换服务器 3. 提交成功 恭喜你,配置成功了. 我们来讲解一下第一种的原因及解决方法. 二.问题分析 首先要了解的是什么是URL和Token,在

自己编写的支持Ajax验证的JS表单验证插件

 创建一个JavaScript表单验证插件,可以说是一个繁琐的过程,涉及到初期设计.开发与测试等等环节.实际上一个优秀的程序员不仅是技术高手,也应该是善假于外物的.本文介绍的这个不错的JavaScript表单验证插件,支持ajax验证,有需要的小伙伴可以参考下     自己编写了一个表单验证插件,支持ajax验证,使用起来很简单. 每个需要验证的表单元素下面有一个span标签,这个标签的class有一个valid表示需要验证,如果有nullable则表示可为空:rule表示验证规则,msg表示错

sae-微信公众公众平台和SAE token验证失败

问题描述 微信公众公众平台和SAE token验证失败 我从微信公众平台下的官方的wx_sample.php文件,然后部署在SAE上,之后去做token校验的时候总是提示失败,是什么原因 解决方案 首先看网络能不能访问,其次是不是微信有故意拦截等.最后就是token是否失效 解决方案二: 网络是可以访问的 故意拦截就不太清楚了 token值会失效吗 这个不是那个access_token

java token验证-Java写的后台代码 微信订阅号成为开发者时报 你的服务器没有正确响应Token验证

问题描述 Java写的后台代码 微信订阅号成为开发者时报 你的服务器没有正确响应Token验证 首先请注意是java写的,不是php,网上大部分遇到的这方面都是php写的,我是java写的程序然后打包成war包发布到BAE上,是根据网上的教程做的,用BAE3.0里的应用引擎测试那个url地址报的错跟教程一模一样 token用的后台里的复制 不知道什么原因 教程里没有说明 可就是最后一步的步骤也是最关键的一步不成功 在提交成为开发者时提示 你的服务器没有正确响应Token验证,请阅读消息接口使用指

微信接口token验证失败

问题描述 微信接口token验证失败 我用微信官方的代码,token验证一直通不过...不知道什么原因 用的百度bae,日志上倒是有微信的访问记录,看起来也没什么bug... 求大神拯救 解决方案 如果你的微信接口页面没有做好,提交保存的时候,会提示:验证Token失败.这个错误是因为,你的接口页面还没有反馈正确的信息给微信接口.微信在教程方面还做得不够成熟,就一个PHP示例,还是有问题的,在下篇文章我会讲到这个错误在哪.微信官方也没有跟大家说清楚怎么才能是token验证成功.下面我将给出示例告

微信Token验证代码的实现

微信开放第三方API接口, 申请地址:  https://mp.weixin.qq.com/advanced/advanced?action=interface&t=advanced/interface&token=1865635074&lang=zh_CN 官方提供PHP开发代码下载: 点此下载 如果你的微信接口页面没有做好,提交保存的时候,会提示:验证Token失败.这个错误是因为,你的接口页面还没有反馈正确的信息给微信接口.微信在教程方面还做得不够成熟,就一个PHP示例,还是

服务器-关于用java开发微信公众平台开发 token验证失败的问题

问题描述 关于用java开发微信公众平台开发 token验证失败的问题 大家好,最近在学习用java开发微信公众平台,第一次写的代码token验证通过了,用的是阿里云的服务器换系统(server2008->2003)后就怎么也通过不过验证.直接输入域名www.zhenggufang.com/aip/longin网页显示404.域名也已经备过案.服务器上的tomcat也启动正常tomcat/conf/server也修改了.多谢提交还是token验证失败.请各位帮忙看看代码如下: package s

微信公众平台开发token验证不过

问题描述 微信公众平台开发token验证不过 我有自己的服务器,使用java和jsp开发,但是不知道怎养在服务器去获取微信token验证,需要在服务器做什么.求大神指点 解决方案 在做token验证的时候,有4个参数,并且有一定的规则. 只要按照规则,进行http请求和验证就可以了,给你个解析的link,希望对你有用 http://yuedu.baidu.com/ebook/5d964e2577232f60dccca171?pn=1&click_type=10010002&rf=https