Lector de huellas en Xamarin Forms

  • xamarin-forms

Tras un largo periodo sin escribir nada, vuelvo a la carga con este interesante y sencillo post en el que voy a explicar como autenticar a un usuario mediante el lector de huellas (o face id en los iPhone que así realicen la autenticación)

El proceso es tan sencillo que bastará con añadir un paquete nuget y escribir algo de configuración en las distintas plataformas. Con esto, nuestra aplicación estaría lista para realizar dicha autenticación.

Añadiendo paquete Plugin.Fingerprint

El paquete que se va a utilizar en este ejemplo es Plugin.Fingerprint cuya implementación la podemos encontrar en https://github.com/smstuebe/xamarin-fingerprint Es necesario añadir este paquete en los tres proyectos de nuestra solución (Android, iOS y común)

 

Configurando Android

Es necesario añadir los siguientes permisos en el AndroidManifest.xml 

<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />

Además, hay que añadir la siguiente línea en el MainActivity.cs para que el plugin sea capaz de mostrar un dialogo en el que se solicita la autenticación mediante lector de huella o reconocimiento facial

protected override void OnCreate(Bundle savedInstanceState)
{
    TabLayoutResource = Resource.Layout.Tabbar;
    ToolbarResource = Resource.Layout.Toolbar;

    base.OnCreate(savedInstanceState);

    CrossFingerprint.SetCurrentActivityResolver(() => this);
    global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
    LoadApplication(new App());
}

Configurando iOS

En esta plataforma, lo único que hay que hacer es añadir una nueva entrada al info.plist con la clave NSFaceIdUsageDescription indicando para qué se utilizará la autenticación por huella o reconocimiento facial.

 

Realizando la autenticación

Tras añadir el paquete nuget y configurar las distintas plataformas, lo único que queda por hacer es realizar la autenticación, para ello, basta con utilizar el método AuthenticateAsync, tal y como se muestra a continuación.

var result = await CrossFingerprint.Current.AuthenticateAsync("Tap that fingerprint sensor!");
if (result.Authenticated)
{
    LblResult.Text = "VALID fingerprint";
    LblResult.TextColor = Color.Green;
}
else
{
    LblResult.Text = "INVALID fingerprint";
    LblResult.TextColor = Color.Red;
}

 

Como es habitual, he creado un proyecto en GitHub para ofrecer más detalles de la implementación que he realizado. Espero que os sea de ayuda https://github.com/jorgediegocrespo/XamarinFingerprint

Bibliografía

https://github.com/smstuebe/xamarin-fingerprint https://www.youtube.com/watch?v=n8m344IxlnY https://blog.torib.io/2019/04/11/agregando-autenticacion-de-huellas-digitales-con-xamarin-forms/