FIDO android客户端认证
1、官方测试网址
https://conformance.fidoalliance.org/v2_tool/
需要注册登录。
2、网页手动测试
登录后页面显示包含“Manual Tests”和“Start Server Test”其中“Manual Tests”为手动测试,在正式测试之前需要通过网页版的手动测试,测试时使用的TestID可以随便填写。
测试方式有两种:Single和Bunk。Single测试方式比较好理解,只要将输入的“Request”和输出的“Response”;Bunk测试方式需要将所有的单独测试项的Request和Response罗列在一个文件中(其中Authenticate需要做三次,不然会报错),通过“选择文件”按钮添加已经编辑好的报文文件,选择测试类别,就可以测试了。实例如下:
RegReq: [{"header":{"upv":{"major":1,"minor":0},"op":"Reg","appID":"https://fido.tendyron.com:8283/tdrfidouaf/facets","serverData":"cFQwUEE3cWlfRXFjWVJYNGpGclhLZlp1RnpLQVQyM3VRdlF0TENaT2Mydy5NVFV3TmpjMU1qRXlNVFEwTWcuZEdSeS5Ta1JLYUVwRVJYZEtSbEUwVWtoR2RGUnJPVkJoUXpsVFpXdGtNMVl6Vlhka1YzUldVVEpW"},"challenge":"JDJhJDEwJFQ4RHFtTk9PaC9Sekd3V3UwdWtVQ2U","username":"tdr","policy":{"accepted":[[{"aaid":["0055#0001"]}],[{"aaid":["0014#1001"]}]]}}]
RegResp: [{"assertions":[{"assertion":"AT4kAQM-2AALLgkAMDA4QSMwMDAyDi4HAAAAAQEAAAEKLiAAOYRSVfMCNYLYI9dIMJEW90yi7TJix9JE1HLwDKkrLH8JLkcAWldKaGVTMTBaWE4wTFd0bGVTMUtSRXBvU2tSRmQwcEdjRmhVTWtWNFRqQlNXRlZIUlhwaGJsSnpZbGRLU2xaWVpFMU5SVGcNLggAAAAAAAAAAAAMLkEABP6F2lGgicROWhC0YP6CRIDDPVRm4-hD52CQhw6HviuqvZ1oNitTxIa3TtV1Z6s76OfQ3Uc6mkR0egenXFpGxEcIPkQABi5AAGk1skwluqi5Pb7oYGUXdZLrSfwZb-FV6iL7kjSaIg2qmNM2fZlS04E3131-rRdQeqkqwafnH2jwOUXs2EWd1lM","assertionScheme":"UAFV1TLV"}],"fcParams":"eyJhcHBJRCI6Imh0dHBzOi8vZmlkby50ZW5keXJvbi5jb206ODI4My90ZHJmaWRvdWFmL2ZhY2V0cyIsImNoYWxsZW5nZSI6IkpESmhKREV3SkZRNFJIRnRUazlQYUM5U2VrZDNWM1V3ZFd0VlEyVSIsImZhY2V0SUQiOiJhbmRyb2lkOmFway1rZXktaGFzaDoydGMzblVyZ0djRTJUN2JqclBZWVNiTHltdjQifQ","header":{"appID":"https://fido.tendyron.com:8283/tdrfidouaf/facets","op":"Reg","serverData":"cFQwUEE3cWlfRXFjWVJYNGpGclhLZlp1RnpLQVQyM3VRdlF0TENaT2Mydy5NVFV3TmpjMU1qRXlNVFEwTWcuZEdSeS5Ta1JLYUVwRVJYZEtSbEUwVWtoR2RGUnJPVkJoUXpsVFpXdGtNMVl6Vlhka1YzUldVVEpW","upv":{"major":1,"minor":0}}}]AuthReq: [{"header":{"upv":{"major":1,"minor":0},"op":"Auth","appID":"https://fido.tendyron.com:8283/tdrfidouaf/facets","serverData":"SDZXR3hLN1V1WkFCU3plcVE1RGVza2xGa011QzRVRF9SX09USWZPY1R4TS5NVFV3TmpjMU1qSTBPVE13TWcuU2tSS2FFcEVSWGRLUlU1VVducGtSVTR3YzNwaFJHUjFUVzVrVkZGWGNEVmtWbWhRV1c1Vg"},"challenge":"JDJhJDEwJENTZzdEN0szaDduMndTQWp5dVhPYnU","policy":{"accepted":[[{"aaid":["0055#0001"]}],[{"aaid":["0014#1001"]}]]}}]
AuthResp: [{"assertions":[{"assertion":"Aj4dAQQ-1QALLgkAMDA4QSMwMDAyDi4FAAAAAQEADy5AADQ4ZmViMmIzYjllOWE2OTE4NTllYTk0MTljOWI4ZWNmMzIyY2E4NjAwYmI4N2RmMTc0MDg0M2JmNzc0ODI5YTQKLiAAnMQ7OkqtooIwE9CTDkoxphFm-TRZiUMMJK_KYRdaLesQLgAACS5HAFpXSmhlUzEwWlhOMExXdGxlUzFLUkVwb1NrUkZkMHBHY0ZoVU1rVjRUakJTV0ZWSFJYcGhibEp6WWxkS1NsWllaRTFOUlRnDS4EAAAAAAAGLkAAr79MFjO9SDq-TvQVmFjUVb6I45SMc1Nu5nE8NJuuVW_ngf6zk7Ue8eDSDrIRmi2W2qVD770NYaz1enSqiNkmEg","assertionScheme":"UAFV1TLV"}],"fcParams":"eyJhcHBJRCI6Imh0dHBzOi8vZmlkby50ZW5keXJvbi5jb206ODI4My90ZHJmaWRvdWFmL2ZhY2V0cyIsImNoYWxsZW5nZSI6IkpESmhKREV3SkVOVFp6ZEVOMHN6YURkdU1uZFRRV3A1ZFZoUFluVSIsImZhY2V0SUQiOiJhbmRyb2lkOmFway1rZXktaGFzaDoydGMzblVyZ0djRTJUN2JqclBZWVNiTHltdjQifQ","header":{"appID":"https://fido.tendyron.com:8283/tdrfidouaf/facets","op":"Auth","serverData":"SDZXR3hLN1V1WkFCU3plcVE1RGVza2xGa011QzRVRF9SX09USWZPY1R4TS5NVFV3TmpjMU1qSTBPVE13TWcuU2tSS2FFcEVSWGRLUlU1VVducGtSVTR3YzNwaFJHUjFUVzVrVkZGWGNEVmtWbWhRV1c1Vg","upv":{"major":1,"minor":0}}}]AuthReq: [{"header":{"upv":{"major":1,"minor":0},"op":"Auth","appID":"https://fido.tendyron.com:8283/tdrfidouaf/facets","serverData":"Z05PYjc4c2ZldTNiS0M4SDYxblpaaTlaelJ4MHRvdldXRW9ZbVFyeDZCZy5NVFV3TmpjMU1qTXhNekF5TWcuU2tSS2FFcEVSWGRLUlVWNFRWWmFOR1F6Y0VKTlJ6VTJZVEExTWxORlRubGtWemxNVGxoVg"},"challenge":"JDJhJDEwJEExMVZ4d3pBMG56a052SENydW9LNXU","policy":{"accepted":[[{"aaid":["0055#0001"]}],[{"aaid":["0014#1001"]}]]}}]
AuthResp: [{"assertions":[{"assertion":"Aj4dAQQ-1QALLgkAMDA4QSMwMDAyDi4FAAAAAQEADy5AADFlNGUyNDIzZWUyYzk4MmI0ODEyODNkMGIyODY3NzM0ZjMxODUyMjk1YTBjNmZmNjFkMjMxOWM1NzRkYzlkZTUKLiAAHV1jvz84Uk_YJl-Kie8Hop3DQsKaMyVWtpfhia9wXTEQLgAACS5HAFpXSmhlUzEwWlhOMExXdGxlUzFLUkVwb1NrUkZkMHBHY0ZoVU1rVjRUakJTV0ZWSFJYcGhibEp6WWxkS1NsWllaRTFOUlRnDS4EAAAAAAAGLkAA1NpThxQM1gY9qARx_rmoIV14gjr7p9HNUshO5AuXvNPwiuKwG_3A-evshxlRe8ucdmLqtHIQF0WKQqPT-WgyZg","assertionScheme":"UAFV1TLV"}],"fcParams":"eyJhcHBJRCI6Imh0dHBzOi8vZmlkby50ZW5keXJvbi5jb206ODI4My90ZHJmaWRvdWFmL2ZhY2V0cyIsImNoYWxsZW5nZSI6IkpESmhKREV3SkVFeE1WWjRkM3BCTUc1NmEwNTJTRU55ZFc5TE5YVSIsImZhY2V0SUQiOiJhbmRyb2lkOmFway1rZXktaGFzaDoydGMzblVyZ0djRTJUN2JqclBZWVNiTHltdjQifQ","header":{"appID":"https://fido.tendyron.com:8283/tdrfidouaf/facets","op":"Auth","serverData":"Z05PYjc4c2ZldTNiS0M4SDYxblpaaTlaelJ4MHRvdldXRW9ZbVFyeDZCZy5NVFV3TmpjMU1qTXhNekF5TWcuU2tSS2FFcEVSWGRLUlVWNFRWWmFOR1F6Y0VKTlJ6VTJZVEExTWxORlRubGtWemxNVGxoVg","upv":{"major":1,"minor":0}}}]AuthReq: [{"header":{"upv":{"major":1,"minor":0},"op":"Auth","appID":"https://fido.tendyron.com:8283/tdrfidouaf/facets","serverData":"akhydGU4Tml1RmJfQW1vckUzbXhCRk9RdUdGOUJsNmpzdlBwWXlZNl84by5NVFV3TmpjMU1qTTNNRFkzT0EuU2tSS2FFcEVSWGRLUmtwSFducEJORmt5TkRWTWFUbHNWa1JDZVZkSE9XNWxSRUpDVFZVNA"},"challenge":"JDJhJDEwJFJGZzA4Y245Li9lVDByWG9neDBBMU8","transaction":[{"contentType":"text/plain","content":"MTAw"}],"policy":{"accepted":[[{"aaid":["0055#0001"]}],[{"aaid":["0033#0001"]}],[{"aaid":["0033#0101"]}],[{"aaid":["0050#0001"]}],[{"aaid":["0014#1001"]}]]}}]
AuthResp: [{"assertions":[{"assertion":"Aj4dAQQ-1QALLgkAMDA4QSMwMDAyDi4FAAAAAQEADy5AAGQwZDdlMjMyYWMxZGJhOWYyYzcyYjViMjQ1ZWM1ZTA0YTM5OGUwYWM5Y2NkYzI2MWJiOWEwOWFjMzFjMWE4YWMKLiAAMlrIV5yeU16WC6OZZVawZ-niDhavVOhePz6g2UjOducQLgAACS5HAFpXSmhlUzEwWlhOMExXdGxlUzFLUkVwb1NrUkZkMHBHY0ZoVU1rVjRUakJTV0ZWSFJYcGhibEp6WWxkS1NsWllaRTFOUlRnDS4EAAAAAAAGLkAAxqZC10-koshLLW2nQiTopSO6UPZ0ni5uWvTX6VvhmoTCmoYfFhXA8Cl9XCcL3QnCE64g9vFBA_qXKy5b-3nSvA","assertionScheme":"UAFV1TLV"}],"fcParams":"eyJhcHBJRCI6Imh0dHBzOi8vZmlkby50ZW5keXJvbi5jb206ODI4My90ZHJmaWRvdWFmL2ZhY2V0cyIsImNoYWxsZW5nZSI6IkpESmhKREV3SkZKR1p6QTRZMjQ1TGk5bFZEQnlXRzluZURCQk1VOCIsImZhY2V0SUQiOiJhbmRyb2lkOmFway1rZXktaGFzaDoydGMzblVyZ0djRTJUN2JqclBZWVNiTHltdjQifQ","header":{"appID":"https://fido.tendyron.com:8283/tdrfidouaf/facets","op":"Auth","serverData":"akhydGU4Tml1RmJfQW1vckUzbXhCRk9RdUdGOUJsNmpzdlBwWXlZNl84by5NVFV3TmpjMU1qTTNNRFkzT0EuU2tSS2FFcEVSWGRLUmtwSFducEJORmt5TkRWTWFUbHNWa1JDZVZkSE9XNWxSRUpDVFZVNA","upv":{"major":1,"minor":0}}}]DeregReq: [{"header":{"upv":{"major":1,"minor":0},"op":"Dereg","appID":"https://fido.tendyron.com:8283/tdrfidouaf/facets"},"authenticators":[{"aaid":"008A#0002","keyID":"WldKaGVTMTBaWE4wTFd0bGVTMUtSRXBvU2tSRmQwcEdjRmhVTWtWNFRqQlNXRlZIUlhwaGJsSnpZbGRLU2xaWVpFMU5SVGc"},{"aaid":"008A#0002","keyID":"WldKaGVTMTBaWE4wTFd0bGVTMUtSRXBvU2tSRmQwcElWbkJWYlRGTldWVnNXRlpXU1RCWFYyUjRUV3RHVlUwd2JFNVRNbFU"},{"aaid":"008A#0002","keyID":"WldKaGVTMTBaWE4wTFd0bGVTMUtSRXBvU2tSRmQwcEdSWFZXTTFVd1lXMUZkVlV5VWtSVGJGcDZUVE5PTWsxWWNFcGlNRGc"},{"aaid":"008A#0002","keyID":"WldKaGVTMTBaWE4wTFd0bGVTMUtSRXBvU2tSRmQwcElVbTFVVlRGdlkyMW9iV1J0T0RGTWEzUTFWRmhTVTA1WFRuSlZhVFE"}]}]
UAF Conformance Test测试项包括:
本次通过认证并没有对这项测试结果做要求,也能是新的APP测试项已经覆盖了这部分内容,但这依然是查看合法的标准报文和验证报文的重要途径。
3、APP手动测试工具
认证最终没有使用网页上提供的旧版测试app,2017年11月的认证首次使用了新版的测试工具,在调试的过程中测试工具一直出现各种bug,耽误了很多时间。认证时使用的软件版本号为v0.8.31,软件还存在许多未知bug,FIDO的软件工程师还在不停的更新版本。
官方测试工具下载地址:https://conformance-test.fidoalliance.org
Username:conformance
Password: accioBuilds
4、APP手动测试简介
要使用官方测试APP,首先需要有一个官方给出的AAID,AAID是需要交钱向FIDO官方申请的,格式形如008A#0001,其中#前面的是公司的代码,花钱买的主要就是这个四个字符,#后面的一般用于区分不通的认证器,ios端最终使用的是008A#0001,android端的是008A#0002。除了AAID,还需要一个json格式的metadata(元数据)如下:
{
"aaid":"1234#1234",
"authenticatorVersion":1,
"authenticationAlgorithm":1,
"publicKeyAlgAndEncoding":256,
"assertionScheme":"UAFV1TLV",
"attachmentHint":1,
"attestationTypes":[15880],
"attestationRootCertificates":[],
"description":"略",
"icon":略,
"isSecondFactorOnly":false,
"upv":[{"major":1,"minor":0}],
"tcDisplay":1,
"tcDisplayContentType":"text/plain",
"title":"略",
"keyProtection":1,
"matcherProtection":4,
"userVerificationDetails":[[{"userVerification": 1}]]
}
这里忽略了一些不必要的metadata字段,完整的metadata关键字及含义在官方fido-metadata-statement-v1.1-id-20170202.pdf的文档中有详细说明。
下图是测试工具的页面,需要输入一些必要数据后才可以开始测试。
这一版测试工具比较不方便的是无法逐条单独测试,只能按类别批量测试(比如选择Registration test就要一下跑完所有Registration的测试项),对于定位错误实在是很麻烦。但是这一版测试工具基本实现了官方文档中给出的所有测试项。FIDO UAF TestSpecification.pdf这个文档详细描述了每个测试项的细节信息。
当所有的测试项都完成并通过,会有一个提交测试结果的按钮,点击后填写公司信息提交就可以,Fido官方会确认测试结果的。如果确认测试结果有效,那么手动测试的部分就完成了。接下来的就是交互性测试,也同样可以使用官方测试软件进行测试。
首先要把待测试的认证器的AAID、metadata以及FactID告诉待测的服务器厂商,让他们把这些数据录入他们的FIDO服务器,以信任你的认证器。输入用户名,待测服务器地址以及待测认证器的AAID就可以开始测试,页面如下图(通过认证时最后两个测试项还有bug无法测试,正式认证的时候官方人员也没提这个):
正式的认证时官方工作人员会把所有当期他要通过认证的厂商都添加到一个视频会议中,然后通过摄像头,看你通过该官方APP连接当期要过认证的服务器,一个一个测试,如果全部通过,那么恭喜你认证就通过了,其实还是比较水的。但是由于时差的问题,认证测试时凌晨一点开始的,客户端还比较容易,很快就测完了。服务器就比较惨了,按照凌晨一点到早上九点熬了两个通宵。
FIDO android客户端认证相关推荐
- android 客户端bks,Keytools Https双向认证(Android通用)
Https认证: 单向认证:保证服务器是可信任的,可以安全的访问的! 客户端拿到服务器的证书,通过CA认证信任,然后取出公钥,加密对称密钥传给服务器,服务器用自己的私钥解密得到对称密钥,后续使用该对称 ...
- 新浪微博Android客户端SSO授权认证缺陷
从最近几年开始,做平台的公司都流行起Open API.这是一个非常好的理念,也受到广大开发者的欢迎.如今,开发一款软件,你可以很容易地集成微博.微信.人人网等流行社交媒介的分享功能,做一个社交应用变得 ...
- 接入新浪、腾讯微博和人人网的Android客户端实例 接入新浪、腾讯微博和人人网的Android客户端实例...
做了个Android项目,需要接入新浪微博,实现时也顺带着研究了下腾讯微博和人人网的Android客户端接入,本文就跟大家分享下三者的Android客户端接入方法. 一.实例概述 说白了,接入微博就是 ...
- 行代码入门python_新浪微博Android客户端开发视频教程(36讲)
教程名称:新浪微博Android客户端开发视频教程(36讲) 课程目录: [IT教程网]新浪微博Android客户端介绍 [IT教程网]新浪微博Android客户端相关资料 [IT教程网]新浪微博An ...
- Android客户端和Java服务器端集成支付宝
移动端集成支付,似乎是每个App都可能面临的一件事.所有项目都在谈盈利模式,而从C端获取现金流是盈利中最重要的一个途径之一. 当前大家主要采用微信支付和阿里支付集成到自己的移动应用,虽然官方提供一些文 ...
- android 腾讯微博授权,5腾讯微博Android客户端开发获取请求用户授权Request Token.pdf...
腾讯微博Android客户端开发 博客:/coolszy Android Android 腾讯微博AAnnddrrooiidd客户端开发 RequestToken RequestToken --获取请 ...
- android客户端接入新浪、腾讯微博以及人人网
本文原创http://blog.csdn.net/yanbin1079415046,转载请注明出处. 从事android工作也有段时间了,碍于肚子里料不多,一直也没写过什么东西.最近刚好项目中要接入新 ...
- WordPress Blog Android客户端源码分析(一)
一直想找一个大型的Android开源项目进行分析,由于自身和导师课程需要选择了wordpress的Android客户端源码进行学习和解读.源码github官方下载地址:开源项目地址.分析源码的最佳手段 ...
- 安能饭否Android客户端
安能饭否 安能饭否 是一款开源的 饭否Android客户端 . [特别提醒] 1.安能饭否 不是 饭否官方客户端.官方客户端并未开源. 2.安能饭否源码中 不包含 oauth key信息,因此直接编译 ...
- Android 客户端 okhttp3 与服务器之间的双向验证
分为三个阶段 一:简单的后台服务器搭建 二:客户端接入okhttp3,并进行的网络请求 三:服务器和客户端的双向验证 第一步: 搭建简单的服务器 1:下载tomcat 2:配置tomcat 3:部 ...
最新文章
- 9月,最值得看的30篇肠道健康文献!
- 【每日一题】502. IPO
- 在ctex环境下利用Metapost作图
- 在vi或vim上查找字符串
- delphi精品项目源码_项目是如何死掉的?太过真实!
- java enummap_Java EnumMap size()方法与示例
- 4.RabbitMQ Linux安装
- jetbrains-docker插件文档
- matlab牛顿差值法函数,matlab牛顿插值函数
- JAVA8十大新特性详解
- Android实战开发-Kotlin教程(组件篇 2.2)
- Android视频直播推流的实现
- 夜神模拟器无法安装Charles证书
- 0成本睡后收入!从0教你搭建外卖红包CPS小程序
- 数学与计算机科学虎扑,北大数学系在国内是最顶级存在吗?
- 什么是指纹浏览器(浏览器指纹7个重要参数)
- 单亲妈妈开米粉店,赚得比当白领的女儿还多,做生意一定要懂方法
- 【openh264】libfreerdp 编解码 CQP VBR
- appinventor飞机大战案例_第一个AppInventor 开发案例 Hello Kitty(下)
- mysql多表查询数值为空null时处理成0
热门文章
- IJCAI 2021丨时间序列相关研究论文汇总
- Win10与苹果AirDrop(隔空投送)
- XGBoost股票预测
- 最优化理论——罚函数法·乘子法
- 人们有时对机率存在的错误的认识
- 百度地图 地图级别 是什么意思
- [4G5G专题-90]:流程 - 4G LTE 专用承载建立与Qos业务:QCI、ARP、AMBR、GBR、NON-GBR
- 2022最新WiFi大师小程序V3.0.9独立版源码
- MathType 运行时错误‘53’:文件未找到:MathPage.WLL
- 深空时代来临,探日究竟有何魔力?