随着人们对于我的信息安全愈来愈重视,用户对APP安全要求也愈来愈高,尤为是金融类APP,不少都已支持指纹&3D登陆功能。相较于传统登陆方法,指纹&3D面容登陆可省去输入帐户、密码、验证码等环节,在最大限度地方便用户的同时,也保证了用户信息的私密。那么,如何让本身的APP增长指纹/面容登陆功能呢?java
只要接入HMS线上快速验证服务(FIDO),便可帮助你的APP实现指纹&3D面容登陆功能。git
Fast Identity Online是一套身份鉴别框架协议。FIDO联盟于2012年7月成立,至2019年5月已达251家,囊括业界领先厂商,技术规范包括UAF和U2F两大系列,并推出FIDO 2.0项目。FIDO联盟成员网址 https://fidoalliance.org/members/github
FIDO (Fast Identity Online)规范旨在提供通用、安全、便捷的无密码和多因子线上用户身份验证技术方案。支持应用于用户登陆、转帐支付等各类须要验证用户身份的场景。FIDO 2(读音:“faìduo兔”或“faìdōu 兔”)规范定义了一个强大的身份验证解决方案。浏览器
FIDO2典型的应用场景有以下三种:安全
本期咱们将介绍第一个应用场景:指纹/3D面容登陆。在应用内登陆账号时,不须要用户输密码,只须要验证指纹/3D面容即完成登陆,避免密码、撞库等安全风险。服务器
下方的Gif图展现FIDO2如何完成指纹/3D面容登陆的过程。架构
FIDO规范定义了一套在线身份认证的技术架构。其中,除了应用和应用服务器之外,还包括3个组件:FIDO认证器、FIDO客户端和FIDO服务器。框架
FIDO认证器:用来进行本地认证的机制或设备,分为平台认证器和漫游认证器。在面向最终用户时,认证器一般被称为安全密钥。
平台认证器:集成在使用FIDO的设备上的认证器,好比手机或笔记本电脑上基于指纹识别硬件的认证器。maven
漫游认证器:游离于使用FIDO的设备,经过蓝牙、NFC或USB链接的认证器,好比形状相似于U盾或动态令牌的认证器。ide
FIDO客户端:集成在平台中(如Windows、MacOS和HMS Core)中,提供SDK给应用集成;或集成在浏览器中(如Chrome、Firefox和华为浏览器),提供JavaScript API给服务集成。FIDO客户端是应用调用FIDO服务器和FIDO认证器完成认证的桥梁。
FIDO规范定义了两个主要流程:注册和认证。从用户登陆这个实际应用场景来讲,注册流程对应开通指纹/3D面容登陆的过程,认证流程对应使用指纹/3D面容完成登陆的过程。
在注册流程中,FIDO认证器产生一对用户公私钥对做为认证凭据,私钥存储在FIDO认证器中,公钥发送给FIDO服务器存储。同时,FIDO服务器创建用户和认证凭据的关联关系,在认证流程中使用。
在认证流程中,FIDO认证器使用用户私钥对挑战值进行签名,FIDO服务器使用用户公钥验证签名,验证经过即认为是合法用户。
FIDO2的集成准备,超级简单,除了接入HMS SDK必备的agc、maven和混淆等配置以外,只需加上FIDO2的编译依赖便可,坐标以下:
implementation 'com.huawei.hms:fido-fido2:5.0.0.301'
开发(表格性的,错误码、返回值、编译依赖参考ML)
FIDO2分红两个操做,注册和认证,处理流程相似。关键过程代码以下:
fido2Client.getRegistrationIntent(registrationRequest, registrationOptions, new Fido2IntentCallback() { @Override public void onSuccess(Fido2Intent fido2Intent) { fido2Intent.launchFido2Activity(XXXActivity.this, Fido2Client.REGISTRATION_REQUEST); } @Override public void onFailure(int errorCode, CharSequence errString) { Log.e("errorCode: "+ errorCode + ", errorMsg: " + errString); } });
Fido2RegistrationResponse fido2RegistrationResponse = fido2Client.getFido2RegistrationResponse(data)
华为开发者官网上也有相应的演示demo,示例代码和开发文档。
Github演示Demo和示例代码:
https://github.com/HMS-Core/hms-FIDO-demo-java
华为FIDO2慕课视频:
https://developer.huawei.com/consumer/cn/training/detail/101583008688294169
开发指南:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/introduction-0000001051069988-V5
API参考:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References-V5/fido2overview-0000001050176660-V5
基于线上快速身份验证服务,下期聊聊FIDO2定制开发能力,认证器选择策略、UI界面定制,后面还会有实战经验分享,你们能够持续关注~
原文连接:https://developer.huawei.com/consumer/cn/forum/topicview?fid=18&tid=0201315130192110308
原做者:别吃草莓