简介

FIDO BioAuthn提供本地生物特征认证能力,包括指纹认证和3D面容认证。对开发者提供安全易用的免密认证服务,并保障认证结果安全可信。FIDO提供两个版本BioAuthn SDK。分别是:

您将建立什么

调用华为3D人脸认证的过程。在这个Codelab中,您将使用已经创建好的Demo Project实现对华为BioAuthn的API调用,通过Demo Project你可以体验到:

您将会学到什么

其他特性

线上快速身份验证(FIDO2)

硬件要求

软件要求

集成HUAWEI HMS Core能力,需要完成以下准备工作

具体操作,请按照《HUAWEI HMS Core集成准备》中详细说明来完成。

打开服务开关

点击"管理中心 > 应用市场 > 我的应用 > 应用名 > 开发 > API 管理",进入服务管理菜单。

打开"FIDO"服务开关。

添加当前应用的AGC配置文件

将下载的"agconnect-services.json"文件移至Android Studio开发工程app的根目录下。

配置HMS Core SDK的Maven仓地址

打开Android Studio项目级build.gradle文件

在allprojects > repositories里面配置HMS Core SDK的Maven仓地址

allprojects { repositories { google() jcenter() // Add the following line maven { url 'https://developer.huawei.com/repo/' } } }

在buildscript > repositories里面配置HMS Core SDK的Maven仓地址

buildscript { repositories { google() jcenter() // Add the following line maven { url 'https://developer.huawei.com/repo/' } } }

在buildscript > dependencies里面增加配置

buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.3.0' // Add the following line classpath 'com.huawei.agconnect:agcp:1.3.1.300' } }

添加编译依赖

打开应用级的build.gradle文件

在"dependencies"中添加编译依赖

1. BioAuthn-AndroidX

dependencies { implementation 'com.huawei.hms:fido-bioauthn-androidx:5.0.1.301' }

2. BioAuthn

dependencies { implementation 'com.huawei.hms:fido-bioauthn:5.0.1.301' }

在文件头添加配置

Apply plugin: 'com.huawei.agconnect'

在"android"中配置签名

将从能力接入准备中获取的JKS文件(如FIDO BioAuthn Android Sample.jks)拷贝到工程的app目录下。同时在build.gradle文件中配置签名。

android { signingConfigs { config { keyAlias 'FIDO BioAuthn Android Sample' keyPassword '123456' storeFile file('FIDO BioAuthn Android Sample.jks') storePassword '123456' } } buildTypes { debug { signingConfig signingConfigs.config } release { signingConfig signingConfigs.config minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }

点击Sync Now同步工程

FIDO提供两个版本BioAuthn SDK。分别是:

这里分别介绍相关API的使用。

BioAuthn-AndroidX SDK

1.指纹认证

华为提供安全的指纹认证能力。如果系统安全存在问题,回调方法BioAuthnCallback.onAuthError(),会提供错误码BioAuthnPrompt.ERROR_SYS_INTEGRITY_FAILED或BioAuthnPrompt.ERROR_CRYPTO_VERIFY_FAILED。如果设备运行环境安全,则执行指纹认证。指纹认证的错误码详情,请参见接口文档

华为指纹认证能力使用方法,如以下代码片段所示:

import android.view.View; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.ContextCompat; import com.huawei.hms.support.api.fido.bioauthn.BioAuthnCallback; import com.huawei.hms.support.api.fido.bioauthn.BioAuthnManager; import com.huawei.hms.support.api.fido.bioauthn.BioAuthnPrompt; import com.huawei.hms.support.api.fido.bioauthn.BioAuthnResult; public class MainActivity extends AppCompatActivity { public void btnFingerAuthenticateWithoutCryptoObjectClicked(View view) { // 是否支持指纹认证 BioAuthnManager bioAuthnManager = new BioAuthnManager(this); int errorCode = bioAuthnManager.canAuth(); if (errorCode != 0) { // 不支持指纹认证 return; } // 回调 BioAuthnCallback callback = new BioAuthnCallback() { @Override public void onAuthError(int errMsgId, CharSequence errString) { // 认证错误 } @Override public void onAuthSucceeded(BioAuthnResult result) { // 认证成功 } @Override public void onAuthFailed() { // 认证失败 } }; BioAuthnPrompt bioAuthnPrompt = new BioAuthnPrompt(this, ContextCompat.getMainExecutor(this), callback); // 构建提示信息 BioAuthnPrompt.PromptInfo.Builder builder = new BioAuthnPrompt.PromptInfo.Builder().setTitle("This is the title.") .setSubtitle("This is the subtitle") .setDescription("This is the description"); // 首先会提示用户使用指纹认证,但是也提供选项,可以使用PIN码、图形解锁或锁屏密码进行认证。 // 但是,如果这里设置为true,则不能设置setNegativeButtonText(CharSequence)。 builder.setDeviceCredentialAllowed(true); // 设置取消按钮标题。如果设置了该值,则不能setDeviceCredentialAllowed(true)。 // builder.setNegativeButtonText("This is the 'Cancel' button."); BioAuthnPrompt.PromptInfo info = builder.build(); bioAuthnPrompt.auth(info); } }

2. 3D面容认证

华为提供安全的3D面容认证能力。如果系统安全存在问题,回调方法BioAuthnCallback.onAuthError(),会提供错误码FaceManager.FACE_ERROR_SYS_INTEGRITY_FAILED。如果设备运行环境安全,则执行3D面容认证。3D面容认证的错误码详情,参见接口文档

华为3D面容认证能力使用方法,如以下代码片段所示:

import android.os.CancellationSignal; import android.os.Handler; import android.view.View; import androidx.appcompat.app.AppCompatActivity; import com.huawei.hms.support.api.fido.bioauthn.BioAuthnCallback; import com.huawei.hms.support.api.fido.bioauthn.BioAuthnResult; import com.huawei.hms.support.api.fido.bioauthn.CryptoObject; import com.huawei.hms.support.api.fido.bioauthn.FaceManager; public class MainActivity extends AppCompatActivity { public void btnFaceAuthenticateWithoutCryptoObjectClicked(View view) { // 回调 BioAuthnCallback callback = new BioAuthnCallback() { @Override public void onAuthError(int errMsgId, CharSequence errString) { // 认证错误 } @Override public void onAuthHelp(int helpMsgId, CharSequence helpString) { // 帮助 } @Override public void onAuthSucceeded(BioAuthnResult result) { // 认证成功 } @Override public void onAuthFailed() { // 认证失败 } }; // 取消信号 CancellationSignal cancellationSignal = new CancellationSignal(); FaceManager faceManager = new FaceManager(this); int errorCode = faceManager.canAuth(); if (errorCode != 0) { // 不支持认证 return; } // Flags. int flags = 0; // 认证消息处理器 Handler handler = null; // 推荐CryptoObject传null,当前版本,KeyStore没有和面容识别关联。 // KeyGenParameterSpec.Builder.setUserAuthenticationRequired()必须设置为false。 CryptoObject crypto = null; faceManager.auth(crypto, cancellationSignal, flags, callback, handler); } }

BioAuthn SDK

1. 指纹认证

华为提供安全的指纹认证能力。如果系统安全存在问题,回调方法BioAuthnCallback.onAuthError(),会提供错误码FingerprintManager.ERROR_SYS_INTEGRITY_FAILED或FingerprintManager.ERROR_CRYPTO_VERIFY_FAILED。如果设备运行环境安全,则执行指纹认证。指纹认证的错误码详情,请参见接口文档

华为指纹认证能力使用方法,如以下代码片段所示:

import android.app.Activity; import android.view.View; import com.huawei.hms.support.api.fido.bioauthn.BioAuthnCallback; import com.huawei.hms.support.api.fido.bioauthn.BioAuthnResult; import com.huawei.hms.support.api.fido.bioauthn.FingerprintManager; import java.util.concurrent.Executors; public class MainActivity extends Activity { public void btnFingerAuthenticateWithoutCryptoObjectClicked(View view) { // 回调 BioAuthnCallback bioAuthnCallback = new BioAuthnCallback() { @Override public void onAuthError(int errMsgId, CharSequence errString) { // 认证错误 } @Override public void onAuthSucceeded(BioAuthnResult result) { // 认证成功 } @Override public void onAuthFailed() { // 认证失败 } }; FingerprintManager fingerprintManager = new FingerprintManager(this, Executors.newSingleThreadExecutor(), bioAuthnCallback); // 是否支持认证 int errorCode = fingerprintManager.canAuth(); if (errorCode == 0) { // 不支持认证 return; } // 执行认证 fingerprintManager.auth(); } }

2. 3D面容认证

华为提供安全的3D面容认证能力。如果系统安全存在问题,回调方法BioAuthnCallback.onAuthError(),会提供错误码FaceManager.FACE_ERROR_SYS_INTEGRITY_FAILED。如果设备运行环境安全,则执行3D面容认证。3D面容认证的错误码详情,参见接口文档

华为3D面容认证能力使用方法,如以下代码片段所示:

import android.app.Activity; import android.os.CancellationSignal; import android.os.Handler; import android.view.View; import com.huawei.hms.support.api.fido.bioauthn.BioAuthnCallback; import com.huawei.hms.support.api.fido.bioauthn.BioAuthnResult; import com.huawei.hms.support.api.fido.bioauthn.CryptoObject; import com.huawei.hms.support.api.fido.bioauthn.FaceManager; public class MainActivity extends Activity { public void btnFaceAuthenticateWithoutCryptoObjectClicked(View view) { // 回调 BioAuthnCallback callback = new BioAuthnCallback() { @Override public void onAuthError(int errMsgId, CharSequence errString) { // 认证错误 } @Override public void onAuthHelp(int helpMsgId, CharSequence helpString) { // 帮助 } @Override public void onAuthSucceeded(BioAuthnResult result) { // 认证成功 } @Override public void onAuthFailed() { // 认证失败 } }; // 取消信号 CancellationSignal cancellationSignal = new CancellationSignal(); FaceManager faceManager = new FaceManager(this); int errorCode = faceManager.canAuth(); if (errorCode != 0) { // 不支持认证 return; } // Flags. int flags = 0; // 认证消息处理器 Handler handler = null; // 推荐CryptoObject传null,当前版本,KeyStore没有和面容识别关联。 // KeyGenParameterSpec.Builder.setUserAuthenticationRequired()必须设置为false。 CryptoObject crypto = null; faceManager.auth(crypto, cancellationSignal, flags, callback, handler); } }

安装测试APK,点击测试按钮,触发指纹或面容认证。

干得好,您已经成功完成了Codelab并学到了:

您可以阅读下面链接,了解更多相关的信息。

相关文档

BioAuthn-AndroidX SDK

您可以点击下方按钮下载源码。

源码下载

BioAuthn SDK

您可以点击下方按钮下载源码。

源码下载

已复制代码