HarmonyOS FIDO 免密认证:让你的APP支持用指纹和人脸代替密码
什么是 FIDO 免密认证
你有没有觉得每次登录都要输密码很烦?FIDO 免密认证就是用来解决这个问题的。它让你可以用指纹或人脸来代替密码,既方便又安全。
FIDO(Fast Identity Online)是一种国际主流的免密认证标准。简单说,它让你的生物特征(指纹、人脸)成为你的"密码"。你不需要记住复杂的密码,只要按一下指纹或看一下摄像头,就能完成认证。
核心功能
HarmonyOS 的 FIDO 免密认证提供以下功能:
- 开通免密认证:注册生物特征,绑定到你的账号。开通过程需要和 FIDO 服务器交互:先从服务器获取注册报文,然后弹出指纹或人脸认证界面,用户认证通过后,把结果发回服务器保存。这样你的生物特征就和账号绑定了
- 使用免密认证:用指纹或人脸登录。认证过程也需要和 FIDO 服务器交互:先从服务器获取认证报文,然后弹出指纹或人脸认证界面,用户认证通过后,把结果发回服务器验证。服务器验证通过后,返回用户信息,你就登录成功了
- 关闭免密认证:解除生物特征和账号的绑定。关闭后,你的指纹或人脸就不再和账号关联了。如果想再次使用免密认证,需要重新开通过程
环境搭建
硬件要求
- 设备类型:华为手机、平板、2in1
- HarmonyOS 系统:HarmonyOS NEXT Developer Beta1 及以上
- 生物特征:设备需要支持指纹或 3D 人脸
软件要求
- DevEco Studio 版本:DevEco Studio NEXT Developer Beta1 及以上
- HarmonyOS SDK 版本:HarmonyOS NEXT Developer Beta1 SDK 及以上
搭建步骤
- 安装 DevEco Studio:去华为开发者官网下载安装
- 配置开发环境:确保网络环境正常
- 设备调试:使用真机进行调试
项目结构
├── 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 认证流程
下面是 FIDO 免密认证的认证(登录)流程:
第一步:导入模块
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 认证流程是这样的:
注册流程
- 客户端向 FIDO 服务器请求注册报文
- 客户端调用
processUAFOperation,弹出生物特征认证 - 用户进行指纹或人脸认证
- 客户端把认证结果发送给 FIDO 服务器
- FIDO 服务器保存绑定关系
- 客户端调用
notifyUAFResult通知结果
认证流程
- 客户端向 FIDO 服务器请求认证报文
- 客户端调用
processUAFOperation,弹出生物特征认证 - 用户进行指纹或人脸认证
- 客户端把认证结果发送给 FIDO 服务器
- 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 免密认证适合以下场景:
- 银行应用:免密登录、免密支付
- 金融应用:身份验证、交易确认
- 企业应用:员工登录、敏感操作确认
- 社交应用:快速登录
注意事项
- 设备支持:设备需要支持指纹或 3D 人脸
- 生物特征录入:使用前需要先录入指纹或人脸
- FIDO 服务器:需要开发者自己实现 FIDO 服务器逻辑
- 安全性:FIDO 是国际标准,安全性很高
- 用户体验:比输密码方便很多,用户接受度高
总结
FIDO 免密认证让你的应用支持指纹和人脸登录,核心流程:
- 开通免密认证(注册生物特征)
- 使用免密认证(指纹/人脸登录)
- 关闭免密认证(解除绑定)
掌握了这些,你就能让你的应用支持免密认证,提升用户体验和安全性。
