EMUI 4(API Level 23)及以上版本才支持FIDO2。
使用3D面容认证,需要确保EMUI 10(API Level 29)及以上版本,另外请确保手机硬件支持3D面容认证。目前支持的机型:Mate 20 Pro和Mate 30 Pro。
FIDO2根据手机是否支持华为PKI自动选择对应的证书链。如果终端设备具备华为PKI能力,则会使用华为CA签发设备证书,证书链:CBG根证书->云服务根证书->FIDO设备证书。
如果终端设备不具备华为PKI能力,则由Android KeyStore签发设备证书,并提供证书链。请将华为根证书和google根证书都上传到FIDO服务器。
华为根证书下载地址:Huawei CBG Root CA.zip
Fido2Status遵循WebAuthn规范,是FIDO2客户端错误码;CtapStatus遵循CTAP规范,是认证器错误码。有些场景只有Fido2Status错误码,因为不涉及认证器错误,例如用户取消注册或认证。
使用NFC认证器,需要放置在手机NFC识别区域内,并且在认证过程中尽量将认证器保持在原位。
FIDO BioAuthn-AndroidX SDK基于AndroidX实现。AndroidX不能与Android支持库共存使用。遇到这种情况,请使用BioAuthn SDK。
更多信息请参考AndroidX官方介绍:https://developer.android.com/jetpack/androidx
EMUI 4(API Level 23)及以上版本才支持指纹认证,另外请确保手机硬件支持指纹认证。
利用PromptInfo.Builder创建PromptInfo时,setDeviceCredentialAllowed(true)和setNegativeButtonText()互斥,只能二选一。setDeviceCredentialAllowed(true)允许在指纹认证页面,切换到其他认证方式,如锁屏密码。
使用BioAuthnPrompt.PromptInfo.Builder.setDeviceCredentialAllowed(true)注意事项:
1. 该功能不支持具有屏下指纹且运行EMUI 9.x系统的设备,例如Mate 20 Pro、P30、P30 Pro、Magic2,在这些设备上切换锁屏密码认证会立刻导致认证失败。
2. 在EMUI 9.x及以下版本,可能会出现仅能开启一次指纹认证的问题。解决措施如下(选择一种即可):
(1)Activity不重复创建BioAuthnPrompt对象。
(2)认证完成后,调用Activity.recreate()方法重绘界面。
(3)关闭Activity重新打开。
BioAuthn-AndroidX SDK基于androidx.biometric API开发。BioAuthn SDK基于android.hardware.fingerprint开发。
BioAuthn-AndroidX SDK的指纹认证能力提供统一界面,不需要应用自己绘制指纹认证提示界面;BioAuthn SDK的指纹认证能力不提供统一界面,需要应用自己绘制指纹认证提示界面。
需要确保EMUI 10(API Level 29)及以上版本,另外请确保手机硬件支持3D面容认证。目前支持的机型:Mate 20 Pro和Mate 30 Pro。
需要申请android.permission.CAMERA和android.permission.USE_FACERECOGNITION权限,否则无法进行3D面容认证。
构造CryptoObject对象时,KeyGenParameterSpec.Builder.setUserAuthenticationRequired()输入参数必须为false,否则会导致CryptoObject对象无法使用。
这是EMUI 9.x系统上屏下指纹设备的交互规范决定的。如果希望彻底取消该次指纹认证,可以在BioAuthnCallback.onAuthHelp()回调方法中,当helpCode等于1011时关闭调用认证接口的activity。
错误码907135000:传入的参数错误。
检查agconnect-services.json文件中的app_id、package_name参数是否正确,build.gradle文件中证书签名是否配置。有可能是HMS Core缓存导致的,卸载并重新更新HMS Core,然后断开网络再连接,再打开app。建议用华为手机先测试,华为FIDO BioAuthn会依赖HMS Core应用,在华为手机上都会预装这个应用,非华为手机上没有预装。