Compartir a través de


Autenticación con huella digital (biométrica) (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Para mejorar la seguridad de la aplicación, puedes incluir una solicitud de autenticación con huella digital (biométrica) cuando el usuario deba dar su consentimiento a una acción concreta. Por ejemplo, puedes requerir la autenticación con huella digital antes de autorizar una compra desde la aplicación o de tener acceso a recursos restringidos. Puedes administrar la autenticación con huella digital con la clase UserConsentVerifier en el espacio de nombres Windows.Security.Credentials.UI.

Para saber si el dispositivo tiene un lector de huellas digitales, llama al método UserConsentVerifier.CheckAvailabilityAsync. Incluso si un dispositivo admite la autenticación con huella digital, tu aplicación debería proporcionar a los usuarios una opción en Configuración para habilitarla o deshabilitarla. Para obtener más información acerca de la creación de esta configuración, consulta Adición de la configuración de una aplicación.

En el ejemplo siguiente se muestra un método que comprueba si el PC actual es compatible con la autenticación con huella digital y devuelve un mensaje con el resultado.

function checkFingerprintAvailability() {
    try {
        // Check the availability of fingerprint authentication.

        Windows.Security.Credentials.UI.UserConsentVerifier.checkAvailabilityAsync().then(
        function (ucvAvailability) {

            switch (ucvAvailability)
            {
                case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.available:
                    outputDiv.innerHTML = "<br/>Fingerprint verification is available.";
                    break;
                case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.deviceBusy:
                    outputDiv.innerHTML = "<br/>Biometric device is busy.";
                    break;
                case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.deviceNotPresent:
                    outputDiv.innerHTML = "<br/>No biometric device found.";
                    break;
                case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.disabledByPolicy:
                    outputDiv.innerHTML = "<br/>Biometric verification is disabled by policy.";
                    break;
                case Windows.Security.Credentials.UI.UserConsentVerifierAvailability.notConfiguredForUser:
                    outputDiv.innerHTML = "<br/>The user has no fingerprints registered. Please add a fingerprint to the " +
                                    "fingerprint database and try again.";
                    break;
                default:
                    outputDiv.innerHTML = "<br/>Fingerprints verification is currently unavailable.";
                    break;
            }
        });
    }
    catch (ex) {
        outputDiv.innerHTML = "<br/>Fingerprint authentication availability check failed: " + ex.toString();
    }
}

Para solicitar el consentimiento del usuario con un examen de huella digital, llama al método UserConsentVerifier.RequestVerificationAsync. Para que la autenticación con huella digital funcione, el usuario debe haber agregado anteriormente una "firma" con huella digital a la base de datos de huellas digitales. Cuando se llama al método UserConsentVerifier.RequestVerificationAsync, se presenta al usuario un diálogo modal que solicita un examen de la huella digital. Puedes incluir un mensaje en el método UserConsentVerifier.RequestVerificationAsync que se mostrará al usuario como parte del diálogo modal, tal como se muestra en la siguiente imagen.

diálogo modal de autenticación con huella digital

En el ejemplo siguiente se muestra un método que solicita la autenticación con huella digital y devuelve un mensaje con el resultado.

function requestConsent(userMessage) {
    if (!userMessage) {
        userMessage = "Please provide fingerprint verification.";
    }

    try {
        // Request the logged on user's consent via fingerprint swipe.
        Windows.Security.Credentials.UI.UserConsentVerifier.requestVerificationAsync(userMessage) 
        .then(
            function (consentResult) { 
                switch (consentResult) {
                    case Windows.Security.Credentials.UI.UserConsentVerificationResult.verified:
                        outputDiv.innerHTML = "<br/>Fingerprint verified.";
                        break;
                    case Windows.Security.Credentials.UI.UserConsentVerificationResult.deviceBusy:
                        outputDiv.innerHTML = "<br/>Biometric device is busy.";
                        break;
                    case Windows.Security.Credentials.UI.UserConsentVerificationResult.deviceNotPresent:
                        outputDiv.innerHTML = "<br/>No biometric device found.";
                        break;
                    case Windows.Security.Credentials.UI.UserConsentVerificationResult.disabledByPolicy:
                        outputDiv.innerHTML = "<br/>Biometric verification is disabled by policy.";
                        break;
                    case Windows.Security.Credentials.UI.UserConsentVerificationResult.notConfiguredForUser:
                        outputDiv.innerHTML = "<br/>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:
                        outputDiv.innerHTML = "<br/>There have been too many failed attempts. Fingerprint authentication canceled.";
                        break;
                    case Windows.Security.Credentials.UI.UserConsentVerificationResult.canceled:
                        outputDiv.innerHTML = "<br/>Fingerprint authentication canceled.";
                        break;
                    default:
                        outputDiv.innerHTML = "<br/>Fingerprint authentication is currently unavailable.";
                        break;
                }
            });
    }
    catch (ex) {
        outputDiv.innerHTML = "<br/>Fingerprint authentication failed: " + ex.toString();
    }
}

Temas relacionados

Muestra de UserConsentVerifier

UserConsentVerifier

Windows.Security.Credentials.UI

Autenticación e identidad de usuario