L'autenticazione è un passaggio di verifica importante per diverse app. Soprattutto quando si parla di applicazioni che hanno accesso a dati sensibili, come quelli medici, la sicurezza deve essere una priorità.
Il riconoscimento biometrico tramite Touch ID / Face ID (iOS) o Biometric API (Android) fornisce una garanzia di sicurezza che i metodi tradizionali non avevano. Mentre, infatti, con ID e password si sa solo che una persona possiede quelle informazioni di accesso, col dato biometrico, come l'impronta digitale o la conformazione del volto, si ha una verifica molto più sicura.
L'identificazione biometrica si basa su sistemi hardware per l’acquisizione dei dati cui si integrano le componenti software che consentono, attraverso algoritmi matematici, di effettuare l’analisi dei dati e ricostruire l’identità di una persona e riconoscerla.
In E-HCert, l'app per iOS e Android che abbiamo sviluppato per I-Dante (leggi il nostro caso d'uso: E-HCert: la tua cartella clinica a portata di click), l'esigenza è stata quella di proteggere l'accesso all'applicazione e la condivisione dei dati presenti (test clinici, documenti medici, ecc.).
Per garantire ciò ci siamo affidati al package local_auth. Questo consente di gestire l’autenticazione biometrica, tramite volto o impronta, sul dispositivo dialogando con le API native del sistema operativo, (Biometrics API per Android e Local Authentication(LA) per iOS) garantendo la massima sicurezza.
Per cominciare a usare le funzionalità che ci vengono offerte dobbiamo prima integrare il package con le componenti native del sistema.
1import android.os.Bundle;
2import io.flutter.app.FlutterFragmentActivity;
3import io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin;
4import io.flutter.plugins.localauth.LocalAuthPlugin;
5
6public class MainActivity extends FlutterFragmentActivity {
7 @Override
8 protected void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10 FlutterAndroidLifecyclePlugin.registerWith(
11 registrarFor(
12 "io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin"));
13 LocalAuthPlugin.registerWith(registrarFor("io.flutter.plugins.localauth.LocalAuthPlugin"));
14 }
15}
1<key>NSFaceIDUsageDescription</key>
2<string>Why is my app authenticating using face id?</string>
Una volta integrato il package possiamo iniziare ad utilizzarlo inserendo un altro blocco di codice per la richiesta di autenticazione dell'app.
1import 'package:local_auth/local_auth.dart';
2
3...
4final LocalAuthentication auth = LocalAuthentication();
5bool authenticated = false;
6try {
7 authenticated = await auth.authenticateWithBiometrics(
8 localizedReason: 'Scan your fingerprint to authenticate',
9 useErrorDialogs: true,
10 stickyAuth: false,
11 );
12} on PlatformException catch (e) {
13 ...
14}
15if (authenticated) {
16...
17}
Ovviamente non tutti gli smartphone supportano l'autenticazione biometrica o, magari, non tutti la impostano. L'applicazione allora richiede un pin per garantire l'accesso. Il pin viene salvato sul dispositivo in maniera sicura tramite l’uso del package flutter_secure_storage.
Screeshot iPhone 8 con Touch ID e iPhone 11 con FaceID
Come avete visto, con Flutter anche le funzionalità che possono sembrare complesse vengono risolte grazie ad un'infinita disponibilità di pacchetti aggiuntivi. Tutto merito di una community enorme e ampiamente collaborativa!
Da sempre affascinato dalle tecnologie web e dalla loro evoluzione, inizia il suo percorso in una calda estate con un breve, ma intenso, tuffo nel mondo di Ruby on Rails. La continua ricerca e sperimentazione lo portarono poi a innamorarsi e appassionarsi di quello che è React, React native e tutto l'ecosistema attorno.
Estremamente nerd come piace a noi di Devmy, sempre disponibile e pronto ad esplorare nuove tecnologie. Attento alle novità del settore si è, infatti, lanciato anche nella sfida di Flutter, attratto dalle molte possibilità offerte da questo tool.
Sei interessato a sviluppare un'applicazione in Flutter?
Anche se - semplicemente - vuoi prendere un caffè con noi o vedere la nostra collezione di Action Figures scrivici tramite questo form.