FIDO U2F应用开发(二)-编程接口


  FIDO U2F定义了JavaScript API供开发者开发支持U2F设备的在线服务网站。U2F JS API分为两类:底层基于消息端口的API和上层应用API。在FIDO的规格文档中介绍底层API用于与U2F设备进行消息通讯(使用MessagePort Object),发送和接收消息。本文重点关注屏蔽了通讯细节的上层API接口。  使用WebIDL定义的u2f接口定义如下:  register方法中各参数描述如下:  register方法成功返回的数据(callback的参数)使用RegisterResponse结构。  其中各属性含义如下:  sign方法中各参数描述如下:  sign方法成功返回的数据(callback的参数)使用SignResponse结构。  其中各属性含义如下:  register和sign方法失败时返回的错误码定义如下:  使用WebIDL定义的RegisterRequest结构如下:属性含义如下:  使用WebIDL定义的RegisteredKey结构如下:各属性含义如下:  让我们来到yubico的U2F设备测试网站(https://demo.yubico.com/u2f), 使用yubico的安全key,看看register方法和sign方法如何使用。
  从淘宝上购买的两个U2F Key,如图1所示,其中一个飞天品牌的带蓝牙功能。

  首先测试注册过程,如图2所示。

  通过跟踪网站客户端与服务端的交互消息,我们发现开始注册过程后,客户端向服务端的提交了两次请求,对应《FIDO U2F设备应用与开发(一)-原理与协议》第3节描述的3个阶段中的第1和第3阶段。
  客户端第一次向服务端提交请求后,参数包含用户名和口令,如图3所示。
  在客户端JS脚本对服务端返回的注册请求进行register函数调用后,将register的注册数据提交给服务端,提交的表单数据如图4所示。

  由图4提交的数据可以看到register返回成功,提交的表单数据为:  注册成功后,可执行鉴权(login)过程,如图5所示。

  通过跟踪网站客户端与服务端的交互消息,第一次客户端请求时携带了用户名和密码,如图6所示。

  在客户端JS脚本对服务端返回的签名请求进行sign函数调用后, U2F设备产生签名后,客户端将签名数据提交到服务端,如图7所示。

  提交的表单数据为:  服务端 验证签名后,返回验证成功信息。  实验过程中,如果在交互时不按U2F设备的按钮和不插入设备,register和sign函数都会返回错误码。错误码的定义可参看2.4节。  u2f-api.js是yubico提供的U2F js api,封装了第2节接口规范中描述的接口。可从地址: https://demo.yubico.com/js/u2f-api.js 处获取。u2f-api.js中的主要定义如下:  请注意在这个脚本中将register和sign操作的超时时间定义为3免费云主机域名0秒:  在执行3.1节的注册过程时,通过跟踪浏览器消息,可以看到第一次向服务器请求后返回的页面中包含如下JS代码:  这段代码中,使用U2F的上层函数register进行了注册,读者可以与2.2节的函数参数做一下比对,在这段代码中registeredKeys参数使用是空数组“[]”。
  仔细阅读u2f-api.js,会发现脚本使用了EXTENSION_ID为“kmendfapggjehodndflmmgagdbamhnfd”的chrome内置扩展完成与U2F设备的通讯。
  在执行3.2节的鉴权过程时,通过跟踪浏览器消息,可以看到第一次向服务器请求后返回的页面中包含如下JS代码:  这段代码中,使用U2F的上层函数sign进行了注册。  使用购买的U2F设备在PC上对chrome、firefox、IE浏览器进行了测试。其中chrome版本为69,firefox版本为firefox quantum 62, 这两种浏览器目前都支持U2F设备。
  在firefox中使用U2F需要打开一个开关(默认没有打开),如图8所示。

  这里有个有趣的问题,测试时使用的网站仍然是https://demo.yubico.com/u2f ,JS脚本仍然使用的是u2f-api.js,前面提到这个脚本是针对chrome内置扩展应用与USB口通信的,在firefox中怎么也能正常使用呢?
  原因就是firefox实现了自己的u2f对象,而且这个u2f对象的所有属性都是只读的,u2f-api.js没有改写这个对象,从控制台如下输出可以看到:  IE浏览器使用的版本为11,不支持U2F设备。
  在安卓手机上安装了chrome app,使用U2F设备的BLE模式(蓝牙功能)测试了U2F的支持,没有成功,在chrome调用register函数时,U2F设备没有闪烁。

相关推荐: win7关闭证书服务器的方法

这篇文章主要介绍win7关闭证书服务器的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Win7系统中很多的小程序服务其实大家在平时都用不上,这些服务和进程不仅占用了很大部分的资源,而且还会影响系统的运行速度和安全。一、如何关闭证书服…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/29 18:28
下一篇 01/29 19:06