HarmonyOS 鸿蒙Next中用户认证(人脸识别)
HarmonyOS 鸿蒙Next中用户认证(人脸识别)
- 开启权限
ohos.permission.ACCESS_BIOMETRIC
- 指定认证类型(UserAuthType)和认证等级(AuthTrustLevel),调用getAvailableStatus接口查询当前的设备是否支持相应的认证能力。
认证可信等级的详细介绍请参见认证可信等级划分原则。
import { BusinessError } from '@kit.BasicServicesKit';
import { userAuth } from '@kit.UserAuthenticationKit';
// 查询认证能力是否支持
try {
userAuth.getAvailableStatus(userAuth.UserAuthType.FACE, userAuth.AuthTrustLevel.ATL1);
console.info('current auth trust level is supported');
} catch (error) {
const err: BusinessError = error as BusinessError;
console.error(`current auth trust level is not supported. Code is ${err?.code}, message is ${err?.message}`);
}
demo(权限要开,手机要录人脸)
import { cryptoFramework } from '@kit.CryptoArchitectureKit';
import { userAuth, UserAuthIcon } from '@kit.UserAuthenticationKit';
// API version 10
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct Index {
rand = cryptoFramework.createRandom();
len: number = 16;
randData: Uint8Array = this.rand?.generateRandomSync(this.len)?.data;
authParam: userAuth.AuthParam = {
challenge: this.randData,
authType: [userAuth.UserAuthType.FACE, userAuth.UserAuthType.PIN],
authTrustLevel: userAuth.AuthTrustLevel.ATL3
};
widgetParam: userAuth.WidgetParam = {
title: '请进行身份认证'
};
build() {
Row() {
Column() {
UserAuthIcon({
authParam: this.authParam,
widgetParam: this.widgetParam,
iconHeight: 200,
iconColor: Color.Blue,
onIconClick: () => {
console.info('The user clicked the icon.');
try {
const rand = cryptoFramework.createRandom();
const len: number = 16; // Generate a 16-byte random number.
const randData: Uint8Array = rand?.generateRandomSync(len)?.data;
// 设置认证参数
const authParam: userAuth.AuthParam = {
challenge: randData,
authType: [userAuth.UserAuthType.PIN, userAuth.UserAuthType.FACE],
authTrustLevel: userAuth.AuthTrustLevel.ATL3,
};
// 配置认证界面
const widgetParam: userAuth.WidgetParam = {
title: '请进行身份认证',
};
// 获取认证对象
const userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
console.info('get userAuth instance success');
// 订阅认证结果
userAuthInstance.on('result', {
onResult(result) {
console.info(`userAuthInstance callback result: ${JSON.stringify(result)}`);
// 可在认证结束或其他业务需要场景,取消订阅认证结果
userAuthInstance.off('result');
}
});
console.info('auth on success');
userAuthInstance.start();
console.info('auth start success');
} catch (error) {
const err: BusinessError = error as BusinessError;
console.error(`auth catch error. Code is ${err?.code}, message is ${err?.message}`);
}
},
onAuthResult: (result: userAuth.UserAuthResult) => {
console.info(`Get user auth result, result = ${JSON.stringify(result)}`);
}
})
}
}
}
}
更多关于HarmonyOS 鸿蒙Next中用户认证(人脸识别)的实战教程也可以访问 https://www.itying.com/category-93-b0.html
牛
鸿蒙Next的人脸识别认证基于系统级生物特征识别框架实现。通过FaceManager提供标准化API接口,支持3D结构光和ToF等活体检测技术。认证过程调用HUKS硬件密钥库进行数据加密,认证结果通过统一身份认证服务返回。系统严格遵循隐私保护规范,生物特征数据仅存储在安全隔离区(TEE),不上传云端。
在HarmonyOS Next中实现人脸识别认证需要遵循以下关键步骤:
-
权限声明:在config.json中声明
ohos.permission.ACCESS_BIOMETRIC
权限,这是使用生物特征认证的基础。 -
认证能力检查:通过
getAvailableStatus()
接口验证设备是否支持指定类型(FACE)和认证等级(ATL1-ATL4)的组合。不同等级对应不同的安全强度,需根据业务场景选择。 -
认证参数配置:使用
AuthParam
设置挑战值(challenge)、认证类型数组和可信等级。挑战值应使用加密随机数生成,增强防重放能力。 -
UI组件集成:通过
UserAuthIcon
组件提供标准化的认证入口,可自定义图标尺寸、颜色等属性。点击事件触发认证流程。 -
认证实例管理:调用
getUserAuthInstance()
获取认证实例,通过on()方法订阅认证结果事件。认证完成后及时调用off()取消订阅。 -
错误处理:必须捕获
BusinessError
,通过code和message区分设备不支持、用户取消、认证失败等不同场景。
注意:实际使用前需在设备中录入人脸信息,且认证等级需与设备能力匹配。高安全场景建议使用ATL3或ATL4等级。