În septembrie 2013, Apple a prezentat cel mai recent iPhone cu o serie de îmbunătățiri hardware. Caracteristica cea mai inovatoare a iPhone 5s a fost o bandă subțire de metal care înconjoară butonul de acasă, un senzor de amprente numit Touch ID. Dezvoltatorii au cerut să știe despre API. Un an și iOS 8 introduc un nou cadru, oferind dezvoltatorilor posibilitatea de a utiliza senzorul de amprentă digitală.
Autentificare locală cadru oferă metode pentru a solicita unui utilizator autentificarea. Ați putea să utilizați această metodă ca autentificare pentru aplicația dvs. sau să o utilizați doar pentru a proteja datele sensibile dintr-o aplicație. În acest tutorial, vă voi explica opțiunile disponibile, ce date puteți obține de pe dispozitiv și vom construi, de asemenea, o mostră de aplicații.
Acest tutorial necesită Xcode 6 pentru a crea proiectul și veți avea nevoie de un dispozitiv cu ID-ul Touch pentru a testa aplicația probabilă pe care o vom crea.
Atingerea ID se referă la senzorul de amprentă digitală integrat în butonul de pornire al iPhone 5s. A fost adăugat pentru a încuraja utilizarea codurilor de trecere prin facilitarea autentificării utilizatorilor. Puteți configura fiecare dispozitiv cu maxim cinci amprente digitale. Până în prezent, a fost folosit pentru a debloca dispozitivul și pentru a efectua achiziții în magazinul iTunes, App Store și iBooks Store. Înainte de a vedea cum le puteți utiliza în aplicațiile dvs., iată o prezentare generală rapidă a senzorului în sine.
Senzorul Touch ID este capabil să vă scaneze degetele la o rezoluție de 500 de pixeli pe inch, permițându-i să pună fiecare imprimare într-una din cele trei categorii, arc, spirală sau buclă. Senzorul este proiectat pentru a fi cu adevărat convenabil, puteți scana degetul în orice orientare și va determina o potrivire cu orice amprentă existentă indiferent de orientarea inițială.
Apple afirmă că probabilitatea unui fals pozitiv pentru o amprentă dată este de 1 din 50.000, ceea ce este mult mai bun decât probabilitatea de a ghici un cod PIN de 4 cifre la 1 din 10.000. Ei nu menționează că este posibil să renunțați la utilizarea numărului PIN pentru momentele în care nu puteți să utilizați amprentele digitale, de exemplu, când sunteți răniți după înot.
Dacă intenționați să utilizați identificatorul tactil, este important să vă gândiți și la scenarii în care utilizatorii nu pot folosi degetul ca mijloc de autentificare. Deoarece nu puteți verifica codul PIN al dispozitivului ca Apple, este posibil ca utilizatorii să creeze o parolă în aplicația dvs..
Cea mai mare preocupare cu senzorul de amprentă digitală este că viața privată a utilizatorilor este în mod fundamental încălcată. Dacă parola dvs. este dezvăluită, o puteți schimba la ceva nou și o persoană rău intenționată nu va mai putea să o folosească pentru a accesa datele dvs. Dacă este expusă amprenta dvs. sau reprezentarea matematică a acesteia de către Apple, nu o puteți schimba destul de ușor.
Autentificare locală cadru se ocupă de ridicarea greu de verificare a utilizatorilor. Când lucrați cu ID-ul Touch, este important să știți că nu dezvăluie detalii despre utilizator și că nu sunt transferate date de pe dispozitiv. Cu toate acestea, dezvoltatorii pot folosi cadrul pentru a verifica dacă un utilizator are voie să utilizeze aplicația.
Dacă sunteți familiarizat cu specificația OAuth, puteți vedea asemănări în felul în care este tratată autentificarea, cereți unei terțe părți să verifice identitatea unui utilizator, dacă aveți încredere în terța parte, puteți utiliza răspunsul în locul solicitării acreditările direct de la utilizator.
LAContext
Inima cadrului Local Authentication este LAContext
clasă. Dezvoltatorii pot folosi o instanță de LAContext
pentru a evalua o politică de securitate. La momentul redactării, există doar o politică. Controlează, utilizând senzorul Touch ID, că persoana care autentifică este proprietarul dispozitivului. În viitor, pot exista alte politici de securitate. De exemplu, Apple poate introduce un rol neprivilat, care poate accesa numai anumite resurse.
Dacă cadrul nu este capabil să se autentifice, acesta aruncă o eroare. Există mai multe motive pentru care un dispozitiv nu se poate autentifica.
LAErrorTouchIDNotAvailable
Dispozitivul nu are un senzor de amprentă digitală.LAErrorPasscodeNotSet
Nu există setul de coduri de acces pe dispozitiv, ceea ce înseamnă că ID-ul tactil este dezactivat.LAErrorTouchIDNotEnrolled
Există un set de parolă, dar dispozitivul nu a fost configurat cu amprente digitale.Dacă o eroare este aruncată cu oricare dintre codurile de eroare de mai sus, atunci trebuie să furnizați o altă metodă pentru autentificare a utilizatorilor. În acest moment, nu vă puteți baza exclusiv pe ID-ul de atingere.
Să creăm un exemplu de aplicație pentru a afla cum putem folosi cadrul de autentificare locală.
Deschideți Xcode și selectați Nou> Proiect ... de la Fişier meniul. Alege Vizualizare individuală din lista de Aplicația iOS șabloane și faceți clic pe Următor →.
Introduceți un nume pentru proiectul dvs., am sunat-o pe a mea Auth. Introduceți numele organizației, identificatorul companiei și prefixul clasei. Alege iPhone de la Dispozitive listă, faceți clic pe Următor →, și alegeți o locație pentru a salva proiectul.
Clic ViewController.h și să definiți o nouă acțiune, authenticateButtonTapped
, care va declanșa procesul de autentificare. Interfața din ViewController
clasa ar trebui să arate astfel:
#import@ interfață ViewController: UIViewController - (IBAction) authenticateButtonTapped: (id) expeditor; @Sfârșit
Deschis Main.storyboard și trageți a Buton pe vizualizarea controlerului de vizualizare. Schimbați eticheta pentru a citi Autentifica.
Faceți clic dreapta pe buton pentru a afișa Conectarea inspectorului. Faceți clic pe plus în partea stângă a butonului Touch Up Inside și selectați controlerul de vizualizare care conține butonul. Va apărea un alt meniu în care puteți selecta acțiunea pe care am declarat-o acum un moment.
Schimba cu ViewController.m pentru a implementa authenticateButtonTapped
metodă. În partea de sus a fișierului, adăugați următoarea instrucțiune de import pentru cadrul de autentificare locală.
#import
În authenticateButtonTapped
, vom crea un context și vom determina dacă contextul poate evalua LAPolicyDeviceOwnerAuthenticationWithBiometrics
politică, afișați altfel un mesaj de eroare.
- (IBAction) authenticateButtonTapped: (id) expeditor LAContext * context = [[LAContext alloc] init]; NSError * eroare = zero; dacă [[context canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics error & error]) // Autentificați utilizatorul altceva UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ Mesaj "Error": @ "Aparatul nu poate autentifica folosind TouchID. delegat: nil cancelButtonTitle: @ "Ok" altButtonTitle: nil]; [alertă spectacol];
În cazul în care LAContext
obiectul este capabil să se autentifice folosind ID-ul Touch, apoi încercăm să verificăm identitatea utilizatorului. Dacă nu este aruncat nici o eroare, îi spunem utilizatorului dacă sunt proprietarul dispozitivului. Punerea în aplicare finală a authenticateButtonTapped
este prezentată mai jos.
- (void) authenicateButtonTapped: (id) expeditor LAContext * context = [[LAContext alloc] init]; NSError * eroare = zero; dacă [[context canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics error: & error]) [context evaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason: @ "Sunteți proprietarul dispozitivului?" răspuns: ^ (succes BOOL, eroare NSError *) if (error) UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ mesajul "Error": @ "A fost o problemă verificarea identității tale". delegat: nil cancelButtonTitle: @ "Ok" altButtonTitle: nil]; [alertă spectacol]; întoarcere; dacă (succes) UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ Mesajul "Succes": @ "Sunteți proprietarul dispozitivului!" delegat: nil cancelButtonTitle: @ "Ok" altButtonTitle: nil]; [alertă spectacol]; altceva UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ Mesajul "Error": @ "Nu sunteți proprietarul dispozitivului". delegat: nil cancelButtonTitle: @ "Ok" altButtonTitle: nil]; [alertă spectacol]; ]; altceva UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ Mesajul "Error": @ "Aparatul nu poate fi autentificat folosind TouchID." delegat: nil cancelButtonTitle: @ "Ok" altButtonTitle: nil]; [alertă spectacol];
Construiți și executați aplicația pe un dispozitiv fizic cu un senzor de amprentă digitală și atingeți butonul pentru autentificare. Atâta timp cât dispozitivul dvs. are suport Touch ID, trebuie să vi se solicite autentificarea. Dacă vă puneți degetul pe senzor, aplicația ar trebui să vă spună dacă sunteți proprietarul dispozitivului sau nu.
În acest tutorial, am analizat cadrul de autentificare local introdus în iOS 8. Prin verificarea identității utilizatorului autentificat, LAContext
clasa permite utilizatorilor să se identifice fără a furniza date sensibile direct aplicației.