一文读懂华为FIDO2指纹/3D 面容登录技术

本文介绍了如何利用HMSCoreFIDO2服务为APP添加指纹/3D面容登录功能,简化用户登录流程并提升安全性。FIDO2是一套通用的身份验证框架,通过FIDO认证器、FIDO客户端和FIDO服务器的交互实现无密码登录。集成HMSCoreFIDO2,开发者只需添加相应依赖并按照注册和认证流程调用API,即可实现安全快捷的生物特征登录。

前言
  随着人们对于个人信息安全越来越重视,用户对APP安全要求也越来越高,尤其是金融类APP,很多都已支持指纹&3D登录功能。相较于传统登录方法,指纹&3D面容登录可省去输入账户、密码、验证码等环节,在最大限度地方便用户的同时,也保证了用户信息的私密。那么,如何让自己的APP增加指纹/面容登录功能呢?
在这里插入图片描述只要接入HMS线上快速验证服务(FIDO),即可帮助你的APP实现指纹&3D面容登录功能。

HMS Core FIDO2 是个啥?
  Fast Identity Online是一套身份鉴别框架协议。FIDO联盟于2012年7月成立,至2019年5月已达251家,囊括业界领先厂商,技术规范包括UAF和U2F两大系列,并推出FIDO 2.0项目。FIDO联盟成员网址 https://fidoalliance.org/members/
  
FIDO成员举例
在这里插入图片描述
FIDO (Fast Identity Online)规范旨在提供通用、安全、便捷的无密码和多因子线上用户身份验证技术方案。支持应用于用户登录、转账支付等各种需要验证用户身份的场景。FIDO 2(读音:“faìduo兔”或“faìdōu 兔”)规范定义了一个强大的身份验证解决方案。
  FIDO2典型的应用场景有如下三种:

  • 指纹/3D面容登录;
  • 指纹/3D面容转账/支付;
  • 双因子认证;

本期我们将介绍第一个应用场景:指纹/3D面容登录。在应用内登录帐号时,不需要用户输密码,只需要验证指纹/3D面容即完成登录,避免密码、撞库等安全风险。
场景演示
  下方的Gif图展示FIDO2如何完成指纹/3D面容登录的过程。
  在这里插入图片描述
  HMS Core FIDO2 怎么做到的?
  FIDO规范定义了一套在线身份认证的技术架构。其中,除了应用和应用服务器以外,还包括3个组件:FIDO认证器、FIDO客户端和FIDO服务器。
  在这里插入图片描述

  • FIDO认证器:用来进行本地认证的机制或设备,分为平台认证器和漫游认证器。在面向最终用户时,认证器通常被称为安全密钥。

  • 平台认证器:集成在使用FIDO的设备上的认证器,比如手机或笔记本电脑上基于指纹识别硬件的认证器。

  • 漫游认证器:游离于使用FIDO的设备,通过蓝牙、NFC或USB连接的认证器,比如形状类似于U盾或动态令牌的认证器。

  • FIDO客户端:集成在平台中(如Windows、MacOS和HMS Core)中,提供SDK给应用集成;或集成在浏览器中(如Chrome、Firefox和华为浏览器),提供JavaScript API给服务集成。FIDO客户端是应用调用FIDO服务器和FIDO认证器完成认证的桥梁。

  • FIDO服务器:在应用服务器需要发起FIDO认证时,生成符合FIDO规范的认证请求,发送给应用服务器;并在FIDO认证器完成本地认证后,接收应用服务器返回的FIDO认证响应,并进行较验。

FIDO规范定义了两个主要流程:注册和认证。从用户登录这个实际应用场景来说,注册流程对应开通指纹/3D面容登录的过程,认证流程对应使用指纹/3D面容完成登录的过程。
  在注册流程中,FIDO认证器产生一对用户公私钥对作为认证凭据,私钥存储在FIDO认证器中,公钥发送给FIDO服务器存储。同时,FIDO服务器建立用户和认证凭据的关联关系,在认证流程中使用。

在这里插入图片描述
在认证流程中,FIDO认证器使用用户私钥对挑战值进行签名,FIDO服务器使用用户公钥验证签名,验证通过即认为是合法用户。
在这里插入图片描述
如何集成华为HMS Core FIDO2?
在这里插入图片描述
开发前准备
  FIDO2的集成准备,超级简单,除了接入HMS SDK必备的agc、maven和混淆等配置之外,只需加上FIDO2的编译依赖即可,坐标如下:
  implementation ‘com.huawei.hms:fido-fido2:5.0.0.301’
  开发(表格性的,错误码、返回值、编译依赖参考ML)
  FIDO2分成两个操作,注册和认证,处理流程类似。关键过程代码如下:

  1. 初始化一个Fido2Client实例
    Fido2Client fido2Client = Fido2.getFido2Client(activity);

  2. 调用Fido2Client.getRegistrationIntent()发起注册。或调用Fido2Client.getAuthenticationIntent()发起认证。从FIDO服务器获取挑战值及相关策略,并组装请求消息。(这里仅提供FIDO客户端的API,涉及与FIDO服务器的交互,请参考相关规范,并联系FIDO服务器供应商获取相关接口说明。)然后调用Fido2Client.getRegistrationIntent()发起注册。或调用Fido2Client.getAuthenticationIntent()发起认证。
    在回调中调用Fido2Intent.launchFido2Activity(),启动注册(requestCode为Fido2Client.REGISTRATION_REQUEST)或认证(requestCode为Fido2Client.AUTHENTICATION_REQUEST)。该回调在主线程中执行。

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);
    }
});

  1. 在回调Activity.onActivityResult()中,调用getFido2RegistrationResponse()或Fido2Client.getFido2AuthenticationResponse()获取注册或认证的结果。
Fido2RegistrationResponse fido2RegistrationResponse = fido2Client.getFido2RegistrationResponse(data)

  1. 把注册或认证的结果发送给FIDO服务器进行验证
    这里仅提供FIDO客户端的API,涉及与FIDO服务器的交互,请参考相关规范,并联系FIDO服务器供应商获取相关接口说明,代码略

链接:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值