指紋驗證

本指南討論如何將Android 6.0中引進的指紋驗證新增至 Xamarin.Android 應用程式。

指紋驗證概觀

Android 裝置上的指紋掃描器抵達可提供應用程式替代使用者驗證的傳統使用者名稱/密碼方法。 使用指紋來驗證使用者,可讓應用程式納入比使用者名稱和密碼更不具侵入性的安全性。

FingerprintManager API 是以指紋掃描器為目標的裝置,並執行 API 層級 23 (Android 6.0) 或更高版本。 API 位於 命名空間中 Android.Hardware.Fingerprints 。 Android 支援連結庫 v4 提供適用於舊版 Android 的指紋 API 版本。 在 命名空間中找到 Android.Support.v4.Hardware.Fingerprint 相容性 API,會透過 Xamarin.Android.Support.v4 NuGet 套件散發。

FingerprintManager(及其支持連結庫對應專案,FingerprintManagerCompat)是使用指紋掃描硬體的主要類別。 這個類別是系統層級服務周圍的 Android SDK 包裝函式,可管理與硬體本身的互動。 它負責啟動指紋掃描器,並響應掃描器的意見反應。 這個類別有一個相當簡單的介面,只有三個成員:

  • Authenticate – 這個方法會初始化硬體掃描器,並在背景啟動服務,等待用戶掃描其指紋。
  • EnrolledFingerprints – 如果使用者已向裝置註冊一或多個指紋,這個屬性會傳回 true
  • HardwareDetected – 這個屬性可用來判斷裝置是否支援指紋掃描。

Android FingerprintManager.Authenticate 應用程式會使用 此方法來啟動指紋掃描器。 下列代碼段是如何使用支援連結庫相容性 API 叫用它的範例:

// context is any Android.Content.Context instance, typically the Activity 
FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context);
fingerprintManager.Authenticate(FingerprintManager.CryptoObject crypto,
                                int flags,
                                CancellationSignal cancel,
                                FingerprintManagerCompat.AuthenticationCallback callback,
                                Handler handler
                               );

本指南將討論如何使用 FingerprintManager API 來增強具有指紋驗證的 Android 應用程式。 其將說明如何具現化和建立 CryptoObject ,以協助保護指紋掃描器的結果。 我們將檢查應用程式應如何子類別 FingerprintManager.AuthenticationCallback ,並響應指紋掃描器的意見反應。 最後,我們將瞭解如何在Android裝置或模擬器上註冊指紋,以及如何使用 adb 來模擬指紋掃描。

需求

指紋驗證需要 Android 6.0(API 層級 23)或更高版本,以及具有指紋掃描器的裝置。

必須已向要驗證的每個用戶註冊指紋。 這包括設定使用密碼、PIN、撥動模式或臉部辨識的螢幕鎖定。 在Android模擬器中,可以模擬某些指紋驗證功能。 如需這兩個主題的詳細資訊,請參閱 註冊指紋 一節。