news 2026/6/8 1:09:09

HarmonyOS FIDO 免密认证:让你的APP支持用指纹和人脸代替密码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HarmonyOS FIDO 免密认证:让你的APP支持用指纹和人脸代替密码

什么是 FIDO 免密认证

你有没有觉得每次登录都要输密码很烦?FIDO 免密认证就是用来解决这个问题的。它让你可以用指纹或人脸来代替密码,既方便又安全。

FIDO(Fast Identity Online)是一种国际主流的免密认证标准。简单说,它让你的生物特征(指纹、人脸)成为你的"密码"。你不需要记住复杂的密码,只要按一下指纹或看一下摄像头,就能完成认证。

核心功能

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

  1. 开通免密认证:注册生物特征,绑定到你的账号。开通过程需要和 FIDO 服务器交互:先从服务器获取注册报文,然后弹出指纹或人脸认证界面,用户认证通过后,把结果发回服务器保存。这样你的生物特征就和账号绑定了
  2. 使用免密认证:用指纹或人脸登录。认证过程也需要和 FIDO 服务器交互:先从服务器获取认证报文,然后弹出指纹或人脸认证界面,用户认证通过后,把结果发回服务器验证。服务器验证通过后,返回用户信息,你就登录成功了
  3. 关闭免密认证:解除生物特征和账号的绑定。关闭后,你的指纹或人脸就不再和账号关联了。如果想再次使用免密认证,需要重新开通过程

环境搭建

硬件要求

  • 设备类型:华为手机、平板、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 │ ├── bean │ │ ├── FidoAuth.ets // 认证数据结构 │ │ ├── FidoDereg.ets // 注销数据结构 │ │ └── FidoReg.ets // 注册数据结构 │ ├── ConnectService.ets // 连接FIDO服务器 │ ├── entryability │ │ └── EntryAbility.ets // 程序入口类 │ ├── pages │ │ └── Index.ets // 接口调用示例 │ └── util │ └── Util.ets // 工具类

FIDO 注册流程

下面是 FIDO 免密认证的注册(开通)流程:

客户端请求注册报文

FIDO 服务器返回注册报文

调用 processUAFOperation

弹出生物特征认证界面

用户认证是否通过?

获取认证结果

认证失败

发送认证结果给服务器

服务器保存绑定关系

调用 notifyUAFResult

注册成功

FIDO 认证流程

下面是 FIDO 免密认证的认证(登录)流程:

客户端请求认证报文

FIDO 服务器返回认证报文

调用 processUAFOperation

弹出生物特征认证界面

用户认证是否通过?

获取认证结果

认证失败

发送认证结果给服务器

服务器验证是否通过?

返回用户信息

验证失败

登录成功

第一步:导入模块

import{fido}from'@kit.OnlineAuthenticationKit';

导入在线认证服务模块。

第二步:开通 FIDO 免密认证

开通免密认证就是把你的生物特征(指纹/人脸)和你的账号绑定起来。

// 访问FIDO服务端获取策略检查报文letmessage:string=awaitthis.con.selectType('UAF_REG');letuafMessage:fido.UAFMessage={uafProtocolMessage:message,additionalData:''};

先从 FIDO 服务器获取注册报文。UAF_REG表示这是一个注册请求。

// 传连接通道参数(可选)letchannelBinding:fido.ChannelBinding={};letmessageResp:fido.UAFMessage=awaitfido.processUAFOperation(this.uiContext,uafMessage,channelBinding);letuafProtocolMessage:string=messageResp.uafProtocolMessage;

调用processUAFOperation处理 FIDO 操作。这个函数会弹出生物特征认证界面(指纹或人脸),让用户进行认证。

// 把认证结果发送给FIDO服务器letpar=Util.SpP('regResp',uafProtocolMessage);letregResp:string=awaitUtil.connectFidoServer1(ConnectService.url+'fidoreg',par);

把认证结果发送给 FIDO 服务器,完成注册。

// 通知注册结果letuafMessage:fido.UAFMessage={uafProtocolMessage:uafMess,additionalData:''};fido.notifyUAFResult(this.uiContext,uafMessage).then(()=>{console.info('注册成功');});

调用notifyUAFResult通知系统注册结果。

第三步:使用 FIDO 免密认证

开通之后,就可以用生物特征来登录了。

// 访问FIDO服务端获取认证报文letmessage:string=awaitthis.con.selectType('UAF_AUTH');letuafMessage:fido.UAFMessage={uafProtocolMessage:message,additionalData:''};letchannelBinding:fido.ChannelBinding={};letmessageResp:fido.UAFMessage=awaitfido.processUAFOperation(this.uiContext,uafMessage,channelBinding);

UAF_AUTH表示这是一个认证请求。processUAFOperation会弹出生物特征认证界面。

// 把认证结果发送给FIDO服务器letpar=Util.SpP('loginAuthResp',uafProtocolMessage);letauthResp:string=awaitUtil.connectFidoServer1(ConnectService.url+'fidoauth',par);letisAuth=authResp.includes('userinfo');if(isAuth){// 认证成功}

把认证结果发送给 FIDO 服务器验证。如果服务器返回了用户信息,说明认证成功。

第四步:关闭 FIDO 免密认证

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

// 访问FIDO服务端获取注销报文letmessage:string=awaitthis.con.selectType('UAF_DEREG');letuafMessage:fido.UAFMessage={uafProtocolMessage:message,additionalData:''};letchannelBinding:fido.ChannelBinding={};letmessageResp:fido.UAFMessage=awaitfido.processUAFOperation(this.uiContext,uafMessage,channelBinding);

UAF_DEREG表示这是一个注销请求。调用后,生物特征和账号的绑定关系会被解除。

FIDO 认证流程

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

注册流程

  1. 客户端向 FIDO 服务器请求注册报文
  2. 客户端调用processUAFOperation,弹出生物特征认证
  3. 用户进行指纹或人脸认证
  4. 客户端把认证结果发送给 FIDO 服务器
  5. FIDO 服务器保存绑定关系
  6. 客户端调用notifyUAFResult通知结果

认证流程

  1. 客户端向 FIDO 服务器请求认证报文
  2. 客户端调用processUAFOperation,弹出生物特征认证
  3. 用户进行指纹或人脸认证
  4. 客户端把认证结果发送给 FIDO 服务器
  5. FIDO 服务器验证并返回用户信息

实际应用场景

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

免密登录

// 用户打开应用,直接用指纹登录asyncfunctionloginWithFingerprint(){letmessage=awaitgetAuthMessage();letresult=awaitfido.processUAFOperation(uiContext,message,{});// 验证结果,完成登录}

免密支付

// 用户支付时,用指纹确认asyncfunctionpayWithFingerprint(amount:number){letmessage=awaitgetPaymentAuthMessage(amount);letresult=awaitfido.processUAFOperation(uiContext,message,{});// 验证结果,完成支付}

身份验证

// 敏感操作前,验证用户身份asyncfunctionverifyIdentity(){letmessage=awaitgetVerifyMessage();letresult=awaitfido.processUAFOperation(uiContext,message,{});// 验证结果,允许操作}

适用场景

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

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

注意事项

  1. 设备支持:设备需要支持指纹或 3D 人脸
  2. 生物特征录入:使用前需要先录入指纹或人脸
  3. FIDO 服务器:需要开发者自己实现 FIDO 服务器逻辑
  4. 安全性:FIDO 是国际标准,安全性很高
  5. 用户体验:比输密码方便很多,用户接受度高

总结

FIDO 免密认证让你的应用支持指纹和人脸登录,核心流程:

  1. 开通免密认证(注册生物特征)
  2. 使用免密认证(指纹/人脸登录)
  3. 关闭免密认证(解除绑定)

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 1:03:57

JAVASE类和对象-6

1.类与对象的关系(类型务虚、对象务实)对象(行为履行者): new 类型()类型(特征塑造者)事物的特征受到类型的约束2.类与对象的创建 类型 属性列表(非必须) 语法&#xf…

作者头像 李华
网站建设 2026/6/8 0:41:18

神经渲染:颠覆特效制作的技术革命与实战指南

神经渲染:颠覆特效制作的技术革命与实战指南 引言 从《阿凡达》的奇幻世界到抖音里的实时3D滤镜,特效制作正经历一场由AI驱动的深刻变革。神经渲染,作为计算机视觉与图形学的交叉前沿,正以其“从2D图像学习3D世界”的独特能力&am…

作者头像 李华
网站建设 2026/6/8 0:25:46

Mac NTFS读写困境终结者:免费开源工具Nigate的完整解决方案

Mac NTFS读写困境终结者:免费开源工具Nigate的完整解决方案 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and manageme…

作者头像 李华