Bagikan melalui


Biometrik sidik jari

Artikel ini menjelaskan cara menambahkan biometrik sidik jari ke aplikasi Windows Anda, termasuk 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 .

API Windows Runtime (WinRT) untuk biometrik sidik jari adalah bagian dari Windows Software Development Kit (SDK). API ini dibuat untuk digunakan dalam aplikasi Platform Windows Universal (UWP), tetapi juga dapat digunakan di aplikasi WinUI atau di aplikasi desktop paket, termasuk WPF dan Formulir Windows. Untuk informasi selengkapnya tentang menggunakan API WinRT di aplikasi desktop Windows Anda, lihat Memanggil API Windows Runtime di aplikasi desktop.

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;
}
  1. Untuk meminta persetujuan pengguna dari pemindaian sidik jari, panggil metode UserConsentVerifier.RequestVerificationAsync . Agar autentikasi sidik jari berfungsi, pengguna sebelumnya harus menambahkan "tanda tangan" sidik jari ke database sidik jari.
  2. 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;
}