目录

指纹登录怎么检测设备指纹是否发生变化

问题现象

出于安全考虑,指纹登录功能在指纹发生变化时要禁止使用,怎么才能检测指纹的变化?

背景知识

名称

类型

说明

credentialDigest

number

注册的凭据摘要,在凭据增加时随机生成。

credentialCount

number

注册的凭据数量。

解决方案

  1. 首次使用指纹登录时,指定认证类型(UserAuthType),调用getEnrolledState接口查询用户注册凭据的状态,并将该状态储存。
  2. 当调用者需要感知用户凭据变化时,取出上次存储的凭据状态,与调用getEnrolledState接口获取状态做对比,若不同则说明指纹发生变更,处理完成后更新存储凭据状态覆盖原状态。用户凭据含两个字段credentialDigest和credentialCount,凭据对比规则如下:
    • credentialDigest和credentialCount均相同,说明本机指纹未发生变化。
    • credentialDigest不同,无论credentialCount是否相同,说明本机指纹有新增或变更。
    • credentialDigest不变,credentialCount减小,说明本机指纹有删除。

用户认证完整代码示例请参考用户身份认证开发步骤。

常见FAQ

Q:User Authentication Kit(用户认证服务)执行userIAM_userAuth.getAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1),提示凭据类型尚未注册,报错12500010如何解决?

A:该错误码一般表示没有录入对应的认证信息。可以在userAuth模块的getAvailableStatus接口中检查是否录入了该类型的凭据。如果需要录入该类型的凭据,可以通过调用start接口发起人脸认证来完成。录入认证信息可以在【设置->生物识别和密码->生物识别打开对应类型的识别能力(指纹、人脸)】设置。

Q:User Authentication Kit(用户认证服务)中的userAuth.UserAuthType.PIN仅支持切换密码校验(锁屏密码校验),不支持切换密码校验(输入的密码,通过云侧接口校验)

A:User Authentication Kit(用户认证服务)是本地认证,不支持该能力。可以参考切换自定义认证。

Q:如何在指纹认证前就确认指纹是否发生变化?

A:在调用指纹前使用getEnrolledState接口查询用户注册凭据的状态即可。