用户认证模块的界说
用户认证模块提供用户认证本领,对应用开发者而言,可使用该模块举行用户身份认证,用于设备解锁、支付、应用登录等身份认证场景。
当前用户认证提供人脸识别和指纹识别本领,设备具备哪种识别本领,取决于当前设备的硬件本领和技术实现。
基本概念
- 人脸识别:基于人的脸部特性信息举行身份识别的一种生物特性识别技术,用摄像机或摄像头采集含有人脸的图像或视频流,并主动在图像中检测和跟踪人脸,进而对检测到的人脸举行脸部识别,通常也叫做人像识别、面部识别、人脸认证。
- 指纹识别:基于人的指尖皮肤纹路举行身份识别的一种生物特性识别技术。当用户触摸指纹采集器件时,器件感知并获取到用户的指纹图像,然后传输到指纹识别模块举行肯定的处理后与用户预先注册的指纹信息举行比对,从而识别出用户身份。
场景先容
当前用户认证支持Pin码认证、人脸识别和指纹识别,可应用于设备解锁、应用登录、支付等身份认证场景。
User Authentication Kit用户认证
1、查询当前设备是否支持相应的认证本领
开发步调
- 申请权限。调用getAvailableStatus接口,需要在module.json5文件的requestPermissions对象中配置ohos.permission.ACCESS_BIOMETRIC权限。更多配置信息请参考Stage模子应用程序包结构。
- 指定认证类型和认证等级,调用getAvailableStatus接口查询当前的设备是否支持相应的认证本领。
配置权限
module.json5文件中:
- "requestPermissions": [
- // User Authentication Kit(用户认证服务)
- // 用户认证权限,指纹,密码,面容
- {
- "name": "ohos.permission.ACCESS_BIOMETRIC"
- }
- ]
复制代码 调用getAvailableStatus接口
- getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number
复制代码 参数
实当代码:
- // 认证类型参数
- pravite authType: userAuth.UserAuthType[] = [
- userAuth.UserAuthType.PIN, // PIN密码(模拟器支持)
- userAuth.UserAuthType.FINGERPRINT, // 指纹
- userAuth.UserAuthType.FACE// 面容ID
- ]
- // 认证信任等级参数
- pravite authTrustLevel: userAuth.AuthTrustLevel = userAuth.AuthTrustLevel.ATL3
复制代码- // 查询认证能力是否支持,同时检测多项能力,有一项支持即可
- checkUserAuthSupport() {
- const authTypeRes = this.authType.map((item) => {
- try {// 查询认证能力是否支持,使用 try catch捕获错误
- userAuth.getAvailableStatus(item, this.authTrustLevel)
- return true
- } catch {
- return false
- }
- })
- // 有一项支持即可
- return authTypeRes.some(v => v === true)//some返回值是布尔值
- }
复制代码
2、实行认证操纵并订阅认证结果
开发步调
- 申请权限。调用start接口,需要在module.json5文件的requestPermissions对象中配置ohos.permission.ACCESS_BIOMETRIC权限。更多配置信息请参考Stage模子应用程序包结构。
- 指定challenge、认证类型和认证等级,获取认证对象。
- 调用on接口订阅认证结果。
- 调用start接口发起认证,通过callback回调返回认证结果。
代码实现
- // 1配置认证参数
- const authParam: userAuth.AuthParam = {
- challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),// 挑战值,用来防重放攻击。
- authType: UserAuthManager.authType,// 认证类型列表
- authTrustLevel: UserAuthManager.authTrustLevel// 认证信任等级
- };
复制代码- // 2配置认证界面参数
- const widgetParam: userAuth.WidgetParam = {
- title: '请进行身份认证', //认证时提示的标题内容
- };
复制代码- // 3获取认证对象实例
- let userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
- // 4订阅认证结果
- userAuthInstance.on('result', {
- onResult(result) {
- console.log('result---实例结果是' + JSON.stringify(result));
- // 最终认证的结果
- if (result.result === 12500000) {
- resolve(true)
- } else {
- resolve(false)
- }
- // 5取消订阅认证结果
- userAuthInstance.off('result');
- }
- });
- // 6开始启动订阅认证
- userAuthInstance.start();
复制代码 封装用户认证管理类
重要界说了两个方法:
1、检测当前设备是否支持相应的本领:checkUserAuthSupport()
注意:如果检测结果为不支持需要引导用户去设置页开启相关指纹/面容验证
2、开启订阅认证:StartUserAuth()
详细在ArkTs文件实现:
- import { userAuth } from '@kit.UserAuthenticationKit'//用户认证能力
- import { promptAction } from '@kit.ArkUI'//弹窗
- import { BusinessError } from '@kit.BasicServicesKit'//错误类型
- // User Authentication Kit用户认证
- // 场景介绍:当前用户认证支持人脸识别和指纹识别,可应用于设备解锁、应用登录、支付等身份认证场景。
- //用户认证管理封装类
- export class UserAuthManager {
- // 认证类型列表
- static authType: userAuth.UserAuthType[] = [
- userAuth.UserAuthType.PIN, // PIN密码(模拟器支持)
- userAuth.UserAuthType.FINGERPRINT, // 指纹
- userAuth.UserAuthType.FACE// 面容ID
- ]
- // 认证信任等级
- static authTrustLevel: userAuth.AuthTrustLevel = userAuth.AuthTrustLevel.ATL3
- // 查询认证能力是否支持,同时检测多项能力,有一项支持即可
- static checkUserAuthSupport() {
- const authTypeRes = UserAuthManager.authType.map((item) => {
- try {
- // 查询认证能力是否支持,注意这里需要用 try catch
- userAuth.getAvailableStatus(item, UserAuthManager.authTrustLevel)
- return true
- } catch {
- return false
- }
- })
- // 有一项支持即可
- return authTypeRes.some(v => v === true)//some返回值是布尔值
- }
- //进行用户认证订阅
- static StartUserAuth(): Promise<boolean> {
- return new Promise((resolve) => {
- // 设置认证参数
- const authParam: userAuth.AuthParam = {
- challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),// 挑战值,用来防重放攻击。
- authType: UserAuthManager.authType,// 认证类型列表
- authTrustLevel: UserAuthManager.authTrustLevel// 认证信任等级
- };
- // 配置认证界面
- const widgetParam: userAuth.WidgetParam = {
- title: '请进行身份认证', //认证时提示的标题内容
- };
- try {
- // 获取认证对象实例
- let userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
- console.log('1result---获取用户认证实例成功,开启userAuthInstance.on事件订阅认证结果');
- // 订阅认证结果
- userAuthInstance.on('result', {
- onResult(result) {
- console.log('3result---实例结果是' + JSON.stringify(result));
- // 最终认证的结果
- if (result.result === 12500000) {
- resolve(true)
- } else {
- resolve(false)
- }
- // 取消订阅认证结果
- userAuthInstance.off('result');
- }
- });
- console.log('2result---调用userAuthInstance.start开启订阅认证');
- // 启动订阅认证
- userAuthInstance.start();
- } catch (error) {
- const err: BusinessError = error as BusinessError;
- promptAction.showToast({ message: '验证出错' + err.message })
- }
- })
- }
- }
复制代码 官网地址参考
用户认证开发指导-用户认证-安全-开发 | 华为开发者同盟 (huawei.com)https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V1/userauth-guidelines-0000001630425273-V1
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |