前言

随着人们对于个人信息安全越来越重视,用户对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分成两个操作,注册和认证,处理流程类似。关键过程代码如下:

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

调用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);

}

});

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

Fido2RegistrationResponse fido2RegistrationResponse = fido2Client.getFido2RegistrationResponse(data)

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

更多信息

华为开发者官网上也有相应的演示demo,示例代码和开发文档。   Github演示Demo和示例代码:   https://github.com/HMS-Core/hms-FIDO-demo-java

后期预告

基于线上快速身份验证服务,下期聊聊FIDO2定制开发能力,认证器选择策略、UI界面定制,后面还会有实战经验分享,大家可以持续关注~

原作者:别吃草莓

java中fido_一文读懂华为FIDO2指纹/3D 面容登录技术相关推荐

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

    前言   随着人们对于个人信息安全越来越重视,用户对APP安全要求也越来越高,尤其是金融类APP,很多都已支持指纹&3D登录功能.相较于传统登录方法,指纹&3D面容登录可省去输入账户. ...

  2. 一文读懂华为的组织绩效和个人绩效管理

    一文读懂华为的组织绩效和个人绩效管理 本文作者 | 谢宁,<华为战略管理法:DSTE实战体系>.<智慧研发管理>作者 添加图片注释,不超过 140 字(可选) 本文主要包含两大 ...

  3. java integer valueof_一文读懂什么是Java中的自动拆装箱

    本文主要介绍Java中的自动拆箱与自动装箱的有关知识. 基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型 ...

  4. 一文读懂华为Mate20系列三大看点

    关注网易智能,聚焦AI大事件,读懂下一个大时代! 北京时间10月16日21点,华为在英国伦敦召开新品发布会,余承东依然用他那不太流利的中式英语赢得了阵阵掌声. 此次华为正式推出Mate20系列四款手机 ...

  5. 「Java基本功」一文读懂Java内部类的用法和原理

    内部类初探 一.什么是内部类? 内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的.内部类可为静态,可用protected和private修饰(而外部类只能 ...

  6. 【Java基本功】一文读懂String及其包装类的实现原理

    String作为Java中最常用的引用类型,相对来说基本上都比较熟悉,无论在平时的编码过程中还是在笔试面试中,String都很受到青睐,然而,在使用String过程中,又有较多需要注意的细节之处. S ...

  7. 开放鸿蒙,未来可循:一文读懂华为开发者大会2021主题演讲

    2021年10月22日,华为开发者大会2021(Together)在东莞如期揭幕. 在长达将近三个小时的主题演讲中,华为不但发布了HarmonyOS 3开发者预览版.HMS Core 6等一系列全新开 ...

  8. java委派_一文读懂java类加载之双亲委派机制

    作者:程序猿微录 出自:TinyRecord 一个编译后的class文件,想要在JVM中运行,就需要先加载到JVM中.java中将类的加载工具抽象为类加载器,而通过加载工具加载类文件的具体方式被称为双 ...

  9. Android3d结构光,一文看懂OPPO Find X 3D结构光技术有多牛

    法国时间6月19日,OPPO在巴黎卢浮宫正式举办未来旗舰Find X发布会.此次亮相的Find X新机,既有充满艺术感的3D玻璃机身设计,又有3D结构光.曲面全景屏.双轨潜望结构等多项黑科技.众多黑科 ...

最新文章

  1. 三层交换机原理:01路由器如何隔离广播域?
  2. 时光煮雨 Unity3D实现2D人物移动-总结篇
  3. sdut-1148 相加和最大值
  4. 箭头函数可被打印却不能调用_5种应该避免使用箭头函数的情况
  5. Jmeter之后置处理器操作
  6. JQUERY的size()与length
  7. PHP经验总结 - 开发技巧分享
  8. mysql对日期的操作_MySql对日期的操作
  9. poj2635 同余定理 + 素数筛法
  10. iview中table里嵌套i-switch、input、select等
  11. mysql数据库事务实现方式_mysql事务的实现原理
  12. 微信小游戏源码及H5开源小程序游戏源码1000套
  13. android 环形进地图条,easyEcharts折线,柱状,饼图,仪表盘,环形,水球,圆柱,地图纯JS绘制...
  14. Excel单元格引用
  15. 如何设置变更Word页面颜色?干货经验!怎样操作更改word背景颜色?
  16. java.lang.IllegalStateException: No instances available for localhost
  17. lua工具库penlight--06数据(二)
  18. 盛唐气象:李白的诗与酒
  19. 跟着示例学Ubuntu UFW防火墙设置
  20. 天猫双十一红包口令玩法

热门文章

  1. threejs正方体六面贴图
  2. [开源]爱发布类似fir.im和蒲公英的App发布平台
  3. 《图解HTTP》摘录
  4. ps - 修改图片背景色、改变图片大小
  5. 家谱树 (并查集拓扑排序)
  6. 【GDScript】保存/加载物品装备数据
  7. 小程序转uni-app——条件判断包含中文
  8. java-net-php-python-java作业批改系统的设计PPT计算机毕业设计程序
  9. oc实时渲染的图如何导出_如何使用C4D制作逼真的循环三维动画
  10. Vue开发实例(11)之el-menu实现左侧菜单导航