当前位置: 首页 > news >正文

HarmonyOS IFAA 免密认证:另一种指纹人脸登录方案,也许适合你的app

什么是 IFAA 免密认证

上一篇我们讲了 FIDO 免密认证,这篇来讲另一种方案——IFAA。IFAA 的全称是"互联网金融身份认证联盟"(Internet Finance Authentication Alliance),听名字就知道,它主要是为金融场景设计的。蚂蚁集团、华为、三星、阿里巴巴这些都是 IFAA 的发起成员。

IFAA 和 FIDO 的目标一样,都是让你用指纹或人脸来代替密码。但 IFAA 更侧重于金融支付场景,比如免密支付、免密登录等。

简单说,IFAA 就是另一套"用生物特征代替密码"的标准,特别适合需要高安全性的金融场景。

核心功能

HarmonyOS 的 IFAA 免密认证提供以下功能:

  1. 开通 IFAA 认证:注册生物特征,绑定到你的账号。开通过程需要从 IIFAA 中心服务器获取开通报文,然后调用ifaa.register完成注册。注册成功后,你的生物特征就安全地存储在设备的安全区域里了
  2. 使用 IFAA 认证:用指纹或人脸进行认证。认证过程分两步:先获取一个 challenge(防止重放攻击),然后拉起生物特征认证界面。用户认证通过后,把认证结果发给服务器验证。整个过程就像"先拿一张入场券,然后验票进场"
  3. 关闭 IFAA 认证:解除生物特征和账号的绑定。关闭需要从 IIFAA 中心服务器获取关闭报文,然后调用ifaa.deregister完成注销。注销后,你的生物特征就不再和账号关联了

环境搭建

硬件要求

  • 设备类型:华为手机、平板、2in1
  • HarmonyOS 系统:HarmonyOS NEXT Developer Beta1 及以上
  • 生物特征:设备需要支持指纹或 3D 人脸

软件要求

  • DevEco Studio 版本:DevEco Studio NEXT Developer Beta1 及以上
  • HarmonyOS SDK 版本:HarmonyOS NEXT Developer Beta1 SDK 及以上

搭建步骤

  1. 安装 DevEco Studio:去华为开发者官网下载安装
  2. 配置开发环境:确保网络环境正常
  3. 设备调试:使用真机进行调试

项目结构

├── entry/src/main/ets │ ├── entryability │ │ └── EntryAbility.ets // 程序入口类 │ ├── model │ │ └── IfaaModel.ets // 开通、认证、关闭功能实现 │ ├── pages │ │ └── Index.ets // 主页面入口 │ └── util │ └── Util.ets // 工具类

和 FIDO 的项目结构类似,核心逻辑放在IfaaModel.ets里。

IFAA 开通流程

下面是 IFAA 免密认证的开通流程:

检查 IFAA 是否已开通

是否已开通?

直接返回

从 IIFAA 服务器获取开通报文

调用 ifaa.register

生物特征注册到安全区域

开通成功

IFAA 认证流程

下面是 IFAA 免密认证的认证流程:

调用 getChallenge 获取挑战值

配置认证参数

拉起生物特征认证界面

用户认证是否通过?

获取 authToken

认证失败

调用 ifaa.auth

服务器验证是否通过?

认证成功

验证失败

第一步:导入模块

import{ifaa}from'@kit.OnlineAuthenticationKit';import{userAuth}from'@kit.UserAuthenticationKit';

这里导入了两个模块:

  • ifaa:IFAA 免密认证的核心接口
  • userAuth:用户认证接口,用来拉起指纹/人脸认证界面

第二步:检查 IFAA 是否已开通

在开通之前,先检查一下当前设备是否已经开通了 IFAA 认证。

publicregister(dataType:string):Promise<Uint8Array|null>{// 检查IFAA免密认证能力是否已经开通if(sampleData[dataType]===null){console.error("invalid parameters!");thrownewError("invalid parameters");}letdata=sampleData[dataType];letregisterRes=ifaa.queryStatusSync(this.stringToUint8Array(data[3]));if(registerRes===true){thrownewError("ifaa already registered");}

ifaa.queryStatusSync是一个同步方法,用来查询 IFAA 是否已经开通。如果返回true,说明已经开通了,就不需要重复开通了。

第三步:开通 IFAA 免密认证

// 请参考全量代码, 替换IIFAA中心服务器签名下发的数据returnifaa.register(this.hexToBytes(data[0]));}

调用ifaa.register来开通 IFAA 认证。传入的参数是 IIFAA 中心服务器下发的开通报文。

这里的data[0]是从 IIFAA 中心服务器获取的报文数据,需要你替换为实际的服务器数据。

第四步:使用 IFAA 免密认证

IFAA 的认证流程分两步:先获取 challenge,再进行生物特征认证。

// 认证步骤// 使用 ifaa.PreAuth 获取challengeletifaaChallenge:Uint8Array=IfaaModel.getChallenge();

先调用IfaaModel.getChallenge获取一个 challenge。这个 challenge 是用来防止重放攻击的,每次认证都会生成一个新的。

// 拉起生物特征认证(此步骤为IFAA流程所需步骤,非IFAA能力)letauthParam:userAuth.AuthParam={challenge:ifaaChallenge,authType:[userAuth.UserAuthType.FINGERPRINT],authTrustLevel:userAuth.AuthTrustLevel.ATL4};letuserAuthInstance=userAuth.getUserAuthInstance(authParam,{title:'请认证'});

然后用userAuth拉起生物特征认证界面。这里配置了:

  • challenge:前面获取的 challenge
  • authType:认证类型,这里用的是指纹
  • authTrustLevel:认证信任等级,ATL4 是最高等级
  • title:认证界面显示的标题
userAuthInstance.on('result',{asynconResult(result){letauthToken=result.token;try{// 生物特征认证成功后,调用IFAA认证awaitIfaaModel.auth(ifaaAuthType,authToken);show("IFAA auth success");}catch(err){show("IFAA auth failed");}}});userAuthInstance.start();

监听认证结果。用户完成指纹或人脸认证后,会返回一个authToken。然后把这个 token 传给IfaaModel.auth,完成 IFAA 认证。

publicauth(dataType:string,authToken:Uint8Array):Promise<Uint8Array|null>{if(authToken===null){console.error("invalid parameters!");thrownewError("invalid parameters!");}letdata=sampleData[dataType];// 替换IIFAA中心服务器签名下发的数据returnifaa.auth(authToken,this.hexToBytes(data[1]));}

ifaa.auth是 IFAA 认证的核心方法。它接收两个参数:

  • authToken:生物特征认证后返回的 token
  • data[1]:IIFAA 中心服务器下发的认证报文

第五步:关闭 IFAA 免密认证

如果不想用 IFAA 免密认证了,可以关闭它。

publicderegister(dataType:string):Promise<void>{if(sampleData[dataType]===null){console.error("invalid parameters!");thrownewTypeError("Error message");}letdata=sampleData[dataType];// 替换IIFAA中心服务器签名下发的数据returnifaa.deregister(this.hexToBytes(data[2]));}

调用ifaa.deregister来关闭 IFAA 认证。传入的参数是 IIFAA 中心服务器下发的关闭报文。

IFAA 认证流程

整个 IFAA 认证流程是这样的:

开通流程

  1. 检查 IFAA 是否已开通
  2. 从 IIFAA 中心服务器获取开通报文
  3. 调用ifaa.register开通认证
  4. 生物特征注册到设备安全区域

认证流程

  1. 调用IfaaModel.getChallenge获取 challenge
  2. 调用userAuth拉起生物特征认证
  3. 用户进行指纹或人脸认证
  4. 获取 authToken
  5. 调用ifaa.auth完成 IFAA 认证

关闭流程

  1. 从 IIFAA 中心服务器获取关闭报文
  2. 调用ifaa.deregister关闭认证

IFAA 和 FIDO 的区别

你可能会问:IFAA 和 FIDO 都是免密认证,有什么区别?

特性IFAAFIDO
发起方中国信通院、蚂蚁集团等FIDO Alliance(国际)
主要场景金融支付通用认证
协议标准IIFAA 协议UAF 协议
生态国内金融为主全球通用

简单说,IFAA 更适合国内金融场景,FIDO 更通用。如果你的应用面向国内市场,特别是金融类应用,IFAA 可能更合适。

实际应用场景

IFAA 免密认证在实际开发中有很多用途:

免密支付

// 用户支付时,用指纹确认asyncfunctionpayWithFingerprint(amount:number){letchallenge=IfaaModel.getChallenge();letauthToken=awaitstartBiometricAuth(challenge);letresult=awaitIfaaModel.auth('payment',authToken);// 验证结果,完成支付}

免密登录

// 用户打开应用,直接用指纹登录asyncfunctionloginWithFingerprint(){letchallenge=IfaaModel.getChallenge();letauthToken=awaitstartBiometricAuth(challenge);letresult=awaitIfaaModel.auth('login',authToken);// 验证结果,完成登录}

身份验证

// 敏感操作前,验证用户身份asyncfunctionverifyIdentity(){letchallenge=IfaaModel.getChallenge();letauthToken=awaitstartBiometricAuth(challenge);letresult=awaitIfaaModel.auth('verify',authToken);// 验证结果,允许操作}

适用场景

IFAA 免密认证适合以下场景:

  • 银行应用:免密登录、免密支付
  • 金融应用:身份验证、交易确认
  • 支付应用:免密支付
  • 企业应用:员工登录、敏感操作确认

注意事项

  1. IIFAA 服务器:需要接入 IIFAA 中心服务器,获取报文数据
  2. 设备支持:设备需要支持指纹或 3D 人脸
  3. 生物特征录入:使用前需要先录入指纹或人脸
  4. 报文安全:IIFAA 中心服务器下发的报文要妥善保管,不要泄露
  5. challenge 机制:每次认证都要生成新的 challenge,防止重放攻击

总结

IFAA 免密认证让你的应用支持指纹和人脸登录,特别适合金融场景,核心流程:

  1. 检查 IFAA 是否已开通
  2. 从 IIFAA 中心服务器获取报文
  3. 调用ifaa.register开通认证
  4. 调用userAuth拉起生物特征认证
  5. 调用ifaa.auth完成认证
  6. 调用ifaa.deregister关闭认证

掌握了这些,你就能让你的应用支持 IFAA 免密认证,提升用户体验和安全性。

http://www.zskr.cn/news/1483207.html

相关文章:

  • 别只看落款印章!字画鉴伪没这么简单 - 深鉴新闻
  • 2026年 BR600/780HE品牌推荐榜:专业级风冷引擎,高效耐用与稳定性能口碑之选 - 品牌发掘
  • HTML2Image技术架构与实现原理:基于无头浏览器的HTML转图片解决方案
  • 字画变现常见八大套路,藏家一定要避开 - 深鉴新闻
  • TVA为什么是企业智能化升级的战略支点(15)
  • 2026年聚氨酯地坪材料厂家推荐榜单:聚氨酯超耐磨/聚氨酯砂浆/水性聚氨酯砂浆优质品牌深度解析 - 品牌发掘
  • 中小企业网络安全风险现状与全维度防御体系研究
  • 2026年抖音运营公司实测TOP4榜单,帮企业避坑选靠谱运营服务商
  • 2026专升本改革新政策|变化内容+备考调整建议PDF
  • 老字画怎么养护?这样存放越放越值钱 - 深鉴新闻
  • 【紧急提醒】CSDN AI营销套餐剩余权益即将清零!3步自查是否符合顺延资格,错过再等365天
  • 2026年6月上海ISO三体系认证代办公司盘点:企业合规进阶必备指南
  • TVA为什么是企业智能化升级的战略支点(17)
  • DownKyi终极指南:三步搞定B站8K视频下载与批量管理
  • 企业声誉管理选对不选贵(2026 年 6 月):四大技术流派拆解 + 高性价比服务商指南 - 玖叁鹿
  • 2026年 HC600/980QP 高强钢厂家推荐榜单:汽车轻量化QP钢核心供应商与最新选购指南 - 品牌发掘
  • 光伏电池MPPT与恒功率控制模式切换运行策略研究(Simulink仿真实现)
  • 【CSDN AI数字营销企业版报价解密】:20年IT采购专家亲授3步精准获取官方报价+避坑指南
  • Spring AI 从入门到精通-ChatClient你与 AI 对话的终极武器
  • MongoDB PHP
  • 怎样高效使用百度网盘秒传技术:进阶用户的实战策略
  • 终极指南:深度解析OpenCore Legacy Patcher资源包处理与系统优化
  • BDF箱泵一体化厂家性价比实测:成都学校一站式消防泵站/成都学校不锈钢水箱/成都小区BDF装配式水箱/成都小区一体化生活泵站/选择指南 - 优质品牌商家
  • 看完就会:高效论文写作全流程AI论文工具推荐(2026 最新)
  • 25+图像控制工具:ComfyUI ControlNet Auxiliary Preprocessors如何革新AI绘图预处理工作流
  • 2026 济南防水补漏服务商口碑测评榜单|全屋渗漏维修机构优选指南 - 宅安选房屋修缮
  • 神经渲染引爆虚拟制片:技术原理、实战应用与未来蓝图
  • Java Agent Premain Agentmain
  • 手机号查QQ终极指南:3个技巧帮你找回遗忘的账号
  • 2026 东莞防水补漏服务商口碑测评榜单|全屋渗漏维修机构优选指南(6 月最新) - 宅安选房屋修缮