乐趣区

关于android:一文读懂华为FIDO2指纹3D-面容登录技术

前言

  随着人们对于集体信息安全越来越器重,用户对 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);

  1. 调用 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 服务器供应商获取相干接口阐明,代码略)

更多信息

  华为开发者官网上也有相应的演示 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

原作者:别吃草莓

退出移动版