Biometrik sidik jari

Artikel ini menjelaskan cara menambahkan biometrik sidik jari ke aplikasi Platform Windows Universal (UWP) Anda. Menyertakan permintaan autentikasi sidik jari saat pengguna harus menyetujui tindakan tertentu meningkatkan keamanan aplikasi Anda. Misalnya, Anda dapat memerlukan autentikasi sidik jari sebelum mengotorisasi pembelian dalam aplikasi, atau akses ke sumber daya terbatas. Autentikasi sidik jari dikelola menggunakan kelas UserConsentVerifier di namespace Layanan Windows.Security.Credentials.UI .

Periksa perangkat untuk pembaca sidik jari

Untuk mengetahui apakah perangkat memiliki pembaca sidik jari, panggil UserConsentVerifier.CheckAvailabilityAsync. Bahkan jika perangkat mendukung autentikasi sidik jari, aplikasi Anda masih harus memberi pengguna opsi di Pengaturan untuk mengaktifkan atau menonaktifkannya.

public async System.Threading.Tasks.Task<string> CheckFingerprintAvailability()
{
    string returnMessage = "";

    try
    {
        // Check the availability of fingerprint authentication.
        var ucvAvailability = await Windows.Security.Credentials.UI.UserConsentVerifier.CheckAvailabilityAsync();

        switch (ucvAvailability)
        {
            case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.Available:
                returnMessage = "Fingerprint verification is available.";
                break;
            case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.DeviceBusy:
                returnMessage = "Biometric device is busy.";
                break;
            case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.DeviceNotPresent:
                returnMessage = "No biometric device found.";
                break;
            case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.DisabledByPolicy:
                returnMessage = "Biometric verification is disabled by policy.";
                break;
            case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.NotConfiguredForUser:
                returnMessage = "The user has no fingerprints registered. Please add a fingerprint to the " +
                                "fingerprint database and try again.";
                break;
            default:
                returnMessage = "Fingerprints verification is currently unavailable.";
                break;
        }
    }
    catch (Exception ex)
    {
        returnMessage = "Fingerprint authentication availability check failed: " + ex.ToString();
    }

    return returnMessage;
}

Untuk meminta persetujuan pengguna dari pemindaian sidik jari, panggil metode UserConsentVerifier.RequestVerificationAsync . Agar autentikasi sidik jari berfungsi, pengguna sebelumnya harus menambahkan sidik jari "tanda tangan" ke database sidik jari.

Saat Anda memanggil UserConsentVerifier.RequestVerificationAsync, pengguna disajikan dengan dialog modal yang meminta pemindaian sidik jari. Anda dapat memberikan pesan ke metode UserConsentVerifier.RequestVerificationAsync yang akan ditampilkan kepada pengguna sebagai bagian dari dialog modal, seperti yang ditunjukkan pada gambar berikut.

private async System.Threading.Tasks.Task<string> RequestConsent(string userMessage)
{
    string returnMessage;

    if (String.IsNullOrEmpty(userMessage))
    {
        userMessage = "Please provide fingerprint verification.";
    }

    try
    {
        // Request the logged on user's consent via fingerprint swipe.
        var consentResult = await Windows.Security.Credentials.UI.UserConsentVerifier.RequestVerificationAsync(userMessage);

        switch (consentResult)
        {
            case Windows.Security.Credentials.UI.UserConsentVerificationResult.Verified:
                returnMessage = "Fingerprint verified.";
                break;
            case Windows.Security.Credentials.UI.UserConsentVerificationResult.DeviceBusy:
                returnMessage = "Biometric device is busy.";
                break;
            case Windows.Security.Credentials.UI.UserConsentVerificationResult.DeviceNotPresent:
                returnMessage = "No biometric device found.";
                break;
            case Windows.Security.Credentials.UI.UserConsentVerificationResult.DisabledByPolicy:
                returnMessage = "Biometric verification is disabled by policy.";
                break;
            case Windows.Security.Credentials.UI.UserConsentVerificationResult.NotConfiguredForUser:
                returnMessage = "The user has no fingerprints registered. Please add a fingerprint to the " +
                                "fingerprint database and try again.";
                break;
            case Windows.Security.Credentials.UI.UserConsentVerificationResult.RetriesExhausted:
                returnMessage = "There have been too many failed attempts. Fingerprint authentication canceled.";
                break;
            case Windows.Security.Credentials.UI.UserConsentVerificationResult.Canceled:
                returnMessage = "Fingerprint authentication canceled.";
                break;
            default:
                returnMessage = "Fingerprint authentication is currently unavailable.";
                break;
        }
    }
    catch (Exception ex)
    {
        returnMessage = "Fingerprint authentication failed: " + ex.ToString();
    }

    return returnMessage;
}