Autentificarea utilizatorilor pentru aplicații web și iOS cu AWS Cognito (Partea 1)

Publicat: 2022-03-10
Rezumat rapid ↬ Dezvoltatorii și organizațiile deopotrivă caută o modalitate de a avea mai multă agilitate cu soluțiile mobile. Există dorința de a reduce timpul de la idee la testare. În calitate de dezvoltator, mă confrunt adesea cu un obstacol care poate încetini construirea inițială a unei ipoteze mobile: gestionarea utilizatorilor.

De-a lungul anilor, am construit cel puțin trei sisteme de management al utilizatorilor de la zero. O mare parte a abordării se poate baza pe un plan general, dar există întotdeauna câteva elemente cheie care trebuie personalizate pentru un anumit client. Este suficient de îngrijorător faptul că o întreagă categorie de servicii de gestionare a utilizatorilor, autentificare și autorizare a apărut pentru a răspunde acestei nevoi. Servicii precum Auth0 au soluții întregi bazate pe gestionarea utilizatorilor și a identității cu care dezvoltatorii se pot integra.

Un serviciu care oferă această funcționalitate este Cognito al Amazon Web Services (AWS). Cognito este un instrument care le permite utilizatorilor să se înscrie și să se conecteze la aplicațiile web și mobile pe care le creați. În plus față de această funcționalitate, permite și stocarea offline a datelor utilizatorului și asigură sincronizarea acestor date. După cum afirmă Amazon, „Cu Amazon Cognito, vă puteți concentra pe crearea unor experiențe grozave de aplicație în loc să vă faceți griji cu privire la construirea, securizarea și scalarea unei soluții pentru a gestiona gestionarea utilizatorilor, autentificarea și sincronizarea pe dispozitive.”

Subestimarea caruselelor

Caruselurile nu merită cu adevărat reputația proastă pe care au câștigat-o de-a lungul anilor. Se pot dovedi a fi foarte eficiente și vin în multe forme și dimensiuni. Citiți un articol înrudit →

Anul trecut, Amazon a introdus un plus la serviciul său Cognito, grupuri de utilizatori personalizate. Această funcționalitate oferă acum ceea ce am nevoie eu și alți dezvoltatori pentru a avea un sistem de management al utilizatorilor complet, personalizabil, multiplatform, cu flexibilitatea necesară pentru a se potrivi cu majoritatea cazurilor de utilizare. Pentru a înțelege de ce, trebuie să aruncăm o privire rapidă la ce este managementul utilizatorilor și ce probleme rezolvă.

Mai multe după săritură! Continuați să citiți mai jos ↓
AWS Cognito
Diagrama grupului de utilizatori personalizat Cognito (Vedeți versiunea mare)

În acest articol, ne vom petrece cea mai mare parte a timpului parcurgând procesul de configurare a unui grup de utilizatori pentru nevoile noastre. Apoi, vom integra acest grup de utilizatori cu o aplicație iOS și vom permite unui utilizator să se conecteze și să preia atributele asociate contului său de utilizator. Până la sfârșit, vom avea o aplicație demonstrativă limitată, dar una care se ocupă de nucleul gestionării utilizatorilor. În plus, după ce acesta va fi pus în aplicare, va exista un articol ulterioară care aprofundează acest lucru destul de mult.

De ce avem nevoie de la managementul utilizatorilor?

Dacă aveți o aplicație mobilă sau web, de ce aveți nevoie exact în ceea ce privește gestionarea utilizatorilor? Deși autentificarea utilizatorului este probabil primul lucru la care te-ai gândi, nu ne putem opri aici. Dacă dorim un sistem flexibil de management al utilizatorilor care să funcționeze pentru majoritatea cazurilor de utilizare a aplicațiilor web și mobile, ar trebui să aibă următoarea funcționalitate:

  • autentificare nume de utilizator și parolă;
  • hashing și stocare sigură a parolei;
  • modificarea parolei;
  • politica și validarea parolelor;
  • declanșatorii ciclului de viață al utilizatorului (e-mail de bun venit, e-mail de rămas bun etc.);
  • atributele utilizatorului (prenume, prenume etc.);
  • configurația necesară și atributele opționale per utilizator;
  • gestionarea parolelor uitate;
  • validarea numărului de telefon prin SMS;
  • Verificare a email-ului;
  • Acces API la punctele finale pe baza permisiunilor;
  • stocarea securizată a token-urilor de acces pe dispozitivele mobile;
  • Stocare offline a atributelor utilizatorului pentru dispozitive mobile;
  • sincronizarea atributelor utilizatorului pentru stările online și offline;
  • autentificare multifactor.

În timp ce gestionarea utilizatorilor ar putea părea la început ca un sistem de conectare, funcționalitatea trebuie să depășească asta pentru ca sistemul să fie cu adevărat suficient de flexibil pentru a gestiona majoritatea cazurilor de utilizare. Acest lucru depășește în mod clar un nume de utilizator și o parolă.

Un element suplimentar trebuie menționat aici: securitatea. Una dintre cerințele oricărui sistem de management al utilizatorilor este că trebuie să fie evaluat continuu pentru securitatea sistemului în ansamblu. Multe sisteme personalizate de management al utilizatorilor au vulnerabilități care pur și simplu nu au fost corectate. În ultimul an, au existat încălcări de securitate ale sistemelor de management al utilizatorilor unor companii precum Dropbox, Dailymotion, Twitter și Yahoo. Dacă alegeți să construiți o soluție personalizată, sunteți pe punctul de a vă securiza sistemul.

Introduceți Amazon Cognito

Amazon Cognito este un serviciu gestionat care vă permite să integrați un sistem flexibil și scalabil de gestionare a utilizatorilor în aplicațiile dvs. web și mobile. Cognito oferă două moduri distincte de a utiliza serviciul: identități federate, care permit autentificarea prin rețele sociale, cum ar fi Facebook, și grupuri de utilizatori, care vă oferă capabilități de gestionare a utilizatorilor complet personalizate pentru o anumită aplicație sau suită de aplicații.

Identitățile federate sunt grozave dacă doriți ca utilizatorii să se poată conecta cu Facebook (sau Google, Amazon etc.), dar asta înseamnă că o parte a procesului de gestionare a utilizatorilor va fi externalizat către Facebook. Deși acest lucru ar putea fi acceptabil în unele cazuri, utilizatorii ar putea să nu dorească să-și conecteze contul de Facebook la aplicația dvs. În plus, este posibil să doriți să gestionați mai mult din ciclul de viață al utilizatorului în mod direct și, pentru aceasta, identitățile federate nu sunt la fel de flexibile. În scopul articolului de astăzi, ne vom concentra pe grupurile de utilizatori, deoarece oferă flexibilitatea necesară pentru o platformă robustă de gestionare a utilizatorilor, care s-ar potrivi în majoritatea cazurilor de utilizare. În acest fel, veți avea o abordare care poate fi folosită în majoritatea oricărui proiect.

Deoarece acesta este un serviciu AWS, există și alte beneficii ale utilizării Cognito. Cognito se poate integra cu API Gateway pentru a oferi o modalitate simplă de a autoriza accesul la API pe baza token-urilor returnate de la o conectare Cognito. În plus, dacă utilizați deja alte servicii AWS pentru aplicația dvs. mobilă, puteți utiliza grupul de utilizatori ca furnizor de identitate pentru acreditările dvs. AWS.

Ca și în cazul oricărui alt serviciu AWS, există un cost implicat. Prețurile pentru Cognito se bazează pe utilizatorii activi lunari (MAU). Vestea grozavă pentru majoritatea dezvoltatorilor este că există un nivel gratuit nedefinit, care este limitat la 50.000 MAU atunci când se utilizează un grup de utilizatori personalizat. Dacă aveți o aplicație mare, aceasta vă va oferi un număr mare de utilizatori pentru a pilota o nouă abordare a gestionării utilizatorilor. Cu toate acestea, bănuiesc că mulți dintre voi aveți experiențe care nu vor depăși niciodată 50.000 de utilizatori. În acest caz, managementul utilizatorilor de bază va fi aproape gratuit. Singura excepție de la aceasta sunt alte servicii AWS pe care le veți utiliza ca parte a procesului de gestionare a utilizatorilor, cum ar fi Lambda, SNS și S3.

Crearea unui pool de utilizatori

Primul pas în integrarea unui grup de utilizatori în aplicația dvs. mobilă este să creați un grup de utilizatori Cognito. Acest lucru ne va oferi valorile de configurare necesare pentru a ne conecta la aplicația noastră exemplu. Pentru a crea un nou grup de utilizatori, parcurgeți expertul oferit în consola Cognito a Amazon.

Să parcurgem procesul de creare a unui grup de utilizatori. Trebuie să vă avertizez că acesta este un proces lung. În multe privințe, acesta este un lucru bun, deoarece arată zone de flexibilitate. Cu toate acestea, veți dori să luați o ceașcă de cafea și să vă fixați pentru aceasta.

1. Nume

Pasul inițial în crearea unui grup de utilizatori implică setarea unui nume pentru grupul dvs. de utilizatori și selectarea abordării pe care o veți lua pentru a crea grupul de utilizatori. Puteți fie să revizuiți setările implicite, fie să „pasați prin” setările. Deoarece dorim să avem o cunoaștere bună a modului în care este configurat grupul de utilizatori, alegeți opțiunea „Pas prin setări”.

Pasul 1 în Crearea grupului de utilizatori
Pasul inițial în crearea unui grup de utilizatori (Vedeți versiunea mare)

2. Atribute

Configurarea atributelor va necesita un pic de gândire. Pentru fiecare grup de utilizatori, va trebui să determinați ce atribute vor fi stocate în sistem și care sunt necesare. Deoarece sistemul va impune valorile cerute, nu le puteți modifica pe viitor. Cea mai bună abordare aici este de a marca aici doar valorile cu adevărat esențiale, după cum este necesar. În plus, dacă doriți ca utilizatorii să se poată conecta cu adresa lor de e-mail, asigurați-vă că o marcați ca alias.

Dacă doriți să includeți valori personalizate, va trebui să faceți acest lucru și aici. Fiecare valoare personalizată va avea un tip, reguli de validare opționale și o opțiune pentru a fi modificabilă (modificabilă) sau nemodabilă (neschimbabilă). Există o limită strictă de 25 de atribute personalizate.

În cele din urmă, aici trebuie făcut un punct despre numele de utilizator. Valoarea numelui de utilizator pentru fiecare utilizator este imuabilă (neschimbabilă). Aceasta înseamnă că, în cele mai multe cazuri, generarea automată a acestei valori ar avea sens. Acesta este motivul pentru care există valoarea „nume de utilizator preferat”. Dacă doriți ca utilizatorii să aibă o valoare a numelui de utilizator pe care o pot edita, trebuie doar să marcați atributul „nume de utilizator preferat” ca alias. Dacă doriți ca utilizatorii să se conecteze pur și simplu cu adresa lor de e-mail, asigurați-vă că marcați atributul „e-mail” ca fiind obligatoriu și un alias.

Pentru aplicația noastră demo, am ales să fac necesare „e-mail”, „nume de date” și „nume de familie”.

Pasul 2 în Crearea grupului de utilizatori
Configurarea atributelor utilizatorului pentru grupul de utilizatori (Vedeți versiunea mare)

3. Politici

După configurarea atributelor, veți putea configura politicile pentru cont. Prima politică de configurat este politica de parole. Politica vă permite să configurați atât lungimea, cât și dacă aveți nevoie de numere, caractere speciale, litere mari sau litere mici. Această politică va fi aplicată atât pentru parolele introduse de utilizatori, cât și pentru parolele pe care administratorii le atribuie utilizatorilor.

Următoarele politici se referă la înscrierea utilizatorilor. Pentru o aplicație publică, probabil că veți dori să permiteți utilizatorilor să se înregistreze ei înșiși. Cu toate acestea, în funcție de tipul de aplicație, este posibil să doriți să restricționați înregistrarea și ca sistemul să fie numai pe bază de invitație. În plus, va trebui să configurați cât de repede vor expira aceste invitații dacă nu sunt folosite.

Pentru aplicația noastră demo, am ales să folosesc doar valorile implicite, cu excepția faptului că nu vreau ca utilizatorii să se poată înscrie pe cont propriu. Cu aceste valori în vigoare, putem trece la verificări.

Pasul 3 în Crearea grupului de utilizatori
Configurarea politicilor pentru grupul de utilizatori (Vedeți versiunea mare)

4. Verificări

Pasul de verificări vă permite să configurați autentificarea cu mai mulți factori, precum și verificarea prin e-mail și prin telefon. Deși această funcționalitate este relativ ușor de configurat în consolă, rețineți că va trebui să solicitați o creștere a cheltuielilor pentru AWS SNS dacă doriți fie să verificați numerele de telefon, fie să utilizați autentificarea cu mai mulți factori.

Pentru aplicația noastră demo, am ales să folosesc doar valorile implicite.

Pasul 4 în Crearea grupului de utilizatori
Configurarea verificărilor pentru grupul de utilizatori (Vedeți versiunea mare)

5. Personalizări ale mesajelor

Acest pas vă permite să personalizați mesajele de e-mail și SMS pe care grupul dvs. de utilizatori le va trimite, precum și adresele de e-mail „de la” și „răspuns la”. În scopul aplicației noastre demo, voi lăsa aici valorile implicite și voi continua.

Pasul 5 în Crearea grupului de utilizatori
Configurarea mesajelor ciclului de viață pentru grupul de utilizatori (Vedeți versiunea mare)

6. Etichete

Dacă sunteți nou în AWS, este posibil să nu fie nevoie să specificați nicio etichetă. Cu toate acestea, în cazul în care organizația dvs. utilizează AWS în mod regulat, etichetele oferă o modalitate de a analiza cheltuielile și de a atribui permisiuni cu IAM. De exemplu, unele organizații specifică etichete pe mediu (dezvoltare, punere în scenă, producție) și pe proiect.

Indiferent ce introduceți în acest pas, nu va afecta aplicația noastră demo.

Pasul 6 în Crearea grupului de utilizatori
Adăugarea de etichete pentru grupul de utilizatori (Vedeți versiunea mare)

7. Dispozitive

Următorul pas vă permite să definiți dacă grupul de utilizatori își va aminti dispozitivele utilizatorului dvs. Acesta este un pas suplimentar de securitate care vă permite să vedeți cu ce dispozitive a fost conectat un anumit cont. Acest lucru are o valoare suplimentară atunci când utilizați autentificarea cu mai mulți factori (MFA). Dacă dispozitivul este reținut, puteți alege să nu solicitați un simbol MFA la fiecare conectare.

În scopul aplicației demo, am ales să setez valoarea la „Întotdeauna”.

Pasul 7 în Crearea grupului de utilizatori
Configurarea gestionării dispozitivului pentru grupul de utilizatori (Vedeți versiunea mare)

8. Clienții aplicației

Pentru fiecare aplicație pentru care doriți să utilizați grupul de utilizatori (cum ar fi o aplicație iOS, aplicație web, aplicație Android etc.), ar trebui să creați o aplicație. Cu toate acestea, puteți să vă întoarceți și să le creați după ce grupul de utilizatori a fost creat, deci nu este nevoie să adăugați toate acestea încă.

Fiecare aplicație are mai multe valori pe care le puteți configura. Pentru această aplicație demonstrativă, vom da aplicației un nume și apoi vom lăsa valorile implicite. Apoi, puteți configura ce atribute de utilizator poate citi și scrie fiecare aplicație.

Pasul 8 în Crearea grupului de utilizatori
Configurarea aplicațiilor client pentru grupul de utilizatori (Vedeți versiunea mare)

Puteți seta orice valoare doriți în acest pas, atâta timp cât adresa de e-mail, numele de familie și prenumele sunt toate lizibile și scrise de aplicație. Asigurați-vă că faceți clic pe opțiunea „Creare App Client” înainte de a continua.

9. Declanșatoare

Cu declanșatoare, puteți utiliza funcțiile Lambda pentru a personaliza complet procesul ciclului de viață al utilizatorului. De exemplu, dacă doriți ca utilizatorii cu o adresă de e-mail din domeniul companiei dvs. să se poată înregistra, puteți adăuga o funcție Lambda pentru declanșatorul „Pre-înregistrare” pentru a efectua această validare și a respinge orice cerere de înscriere care nu trece.

Pentru aplicația noastră demo, nu voi adăuga niciun declanșator.

Pasul 9 în Crearea grupului de utilizatori
Configurarea declanșatoarelor pentru grupul de utilizatori (Vedeți versiunea mare)

10. Revizuire

Îmi dau seama că acesta ar fi putut părea un proces lung și anevoios. Dar rețineți că fiecare pas în crearea unui grup de utilizatori are flexibilitate care permite soluției să se potrivească mai multor cazuri de utilizare. Și acum pentru știrile pe care așteptați să o auziți: acesta este ultimul pas.

Examinați doar setările pentru a vă asigura că le-ați configurat corect pentru aplicația demo. Din acest ecran, puteți reveni și edita oricare dintre setările anterioare. Odată ce grupul de utilizatori este creat, unele valori de configurare (cum ar fi atributele necesare) nu pot fi modificate.

Odată cu noul dvs. grup de utilizatori creat, puteți continua acum să le integrați într-un exemplu de aplicație iOS folosind SDK-ul AWS pentru iOS.

Pasul 10 în Crearea grupului de utilizatori
Revizuirea finală a grupului de utilizatori înainte de creare (Vedeți versiunea mare)

Configurarea aplicației dvs. iOS pentru grupul dvs. de utilizatori

Am creat un exemplu de aplicație iOS care se integrează cu Cognito pentru a permite utilizatorului să se conecteze, să se deconecteze, să introducă numele și prenumele și să stabilească o parolă. Pentru această demonstrație inițială, înregistrarea utilizatorului nu este inclusă, așa că am folosit consola Cognito pentru a adăuga un utilizator nou pentru testare.

Codul pentru această aplicație poate fi găsit în depozitul meu GitHub.

Configurarea dependențelor

Această aplicație folosește CocoaPods pentru gestionarea dependențelor. În acest moment, singurele dependențe sunt elementele specifice ale SDK-ului AWS iOS care se referă la grupurile de utilizatori Cognito.

(O descriere completă a CocoaPods depășește domeniul de aplicare al acestui articol, cu toate acestea, o resursă de pe site-ul web al CocoaPods vă va ajuta să vă puneți în funcțiune, în cazul în care acest concept este nou pentru dvs.)

Conținutul Podfile pentru această aplicație poate fi văzut mai jos:

 source 'https://github.com/CocoaPods/Specs.git' platform :ios, '10.0' use_frameworks! target 'CognitoApplication' do pod 'AWSCore', '~> 2.5.5' pod 'AWSCognitoIdentityProvider', '~> 2.5.5' end

Presupunând că CocoaPods este instalat pe mașina dvs., puteți doar să rulați pod install și dependențele necesare vor fi instalate pentru dvs.

Configurare pool de utilizatori

Următorul pas este să includeți valorile pentru grupul dvs. de utilizatori și pentru aplicația client. Aplicația demo este configurată să utilizeze un fișier, CognitoApplication/CognitoConfig.plist , din care să extragă aceste informații. Trebuie definite patru valori:

  • region (șir)
    Aceasta este regiunea în care v-ați creat grupul de utilizatori. Acesta trebuie să fie identificatorul de regiune standard, cum ar fi us-east-1 sau ap-southeast-1 .
  • poolId (șir)
    Acesta este ID-ul grupului de utilizatori pe care l-ați creat.
  • clientId (șir)
    Acesta este clientId -ul configurat ca parte a aplicației pe care ați atașat-o grupului de utilizatori.
  • clientSecret (șir)
    Acesta este clientSecret care este configurat ca parte a aplicației pe care ați atașat-o la pool-ul de utilizatori.

Cu acel fișier și valorile adecvate în loc, aplicația demo poate fi lansată. Dacă apar excepții în timpul lansării, asigurați-vă că ați inclus fiecare dintre cele patru valori afișate mai jos și că fișierul este plasat în directorul corect.

plist Configurare în Xcode
Configurarea grupului de utilizatori în Xcode cu fișierul plist (Vedeți versiunea mare)

Integrarea delegatului aplicației

Miezul integrării cu Amazon Cognito are loc în AppDelegate al aplicației. Primul nostru pas este să ne asigurăm că ne-am configurat înregistrarea și ne-am conectat la grupul nostru de utilizatori. Ca parte a acestui proces, vom atribui AppDelegate ca delegat al grupului de utilizatori. Pentru acest exemplu de bază, putem păstra această logică în AppDelegate . Pentru proiecte mai mari, ar putea avea sens să se ocupe de asta în altă parte.

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // set up logging for AWS and Cognito AWSDDLog.sharedInstance.logLevel = .verbose AWSDDLog.add(AWSDDTTYLogger.sharedInstance) // set up Cognito config self.cognitoConfig = CognitoConfig() // set up Cognito setupCognitoUserPool() return true } func setupCognitoUserPool() { // we pull the needed values from the CognitoConfig object // this just pulls the values in from the plist let clientId:String = self.cognitoConfig!.getClientId() let poolId:String = self.cognitoConfig!.getPoolId() let clientSecret:String = self.cognitoConfig!.getClientSecret() let region:AWSRegionType = self.cognitoConfig!.getRegion() // we need to let Cognito know which region we plan to connect to let serviceConfiguration:AWSServiceConfiguration = AWSServiceConfiguration(region: region, credentialsProvider: nil) // we need to pass it the clientId and clientSecret from the app and the poolId for the user pool let cognitoConfiguration:AWSCognitoIdentityUserPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: clientId, clientSecret: clientSecret, poolId: poolId) AWSCognitoIdentityUserPool.register(with: serviceConfiguration, userPoolConfiguration: cognitoConfiguration, forKey: userPoolID) let pool:AWSCognitoIdentityUserPool = AppDelegate.defaultUserPool() // we need to set the AppDelegate as the user pool's delegate, which will get called when events occur pool.delegate = self }

După ce această configurație este în vigoare, trebuie să configuram metodele de delegare pentru grupul de utilizatori. Protocolul pe care îl implementăm este AWSCognitoIdentityInteractiveAuthenticationDelegate . Acest delegat va fi sunat de fiecare dată când utilizatorul trebuie să se conecteze, să își reseta parola sau să furnizeze un cod de autentificare cu mai mulți factori sau dacă trebuie să interogăm utilizatorul dacă ar dori ca dispozitivul său să fie amintit. Pentru exemplul nostru, trebuie doar să implementăm startPasswordAuthentication și startNewPasswordRequired :

 extension AppDelegate: AWSCognitoIdentityInteractiveAuthenticationDelegate { // This method is called when we need to log into the application. // It will grab the view controller from the storyboard and present it. func startPasswordAuthentication() -> AWSCognitoIdentityPasswordAuthentication { if(self.navigationController == nil) { self.navigationController = self.window?.rootViewController as? UINavigationController } if(self.loginViewController == nil) { self.loginViewController = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as? LoginViewController } DispatchQueue.main.async { if(self.loginViewController!.isViewLoaded || self.loginViewController!.view.window == nil) { self.navigationController?.present(self.loginViewController!, animated: true, completion: nil) } } return self.loginViewController! } // This method is called when we need to reset a password. // It will grab the view controller from the storyboard and present it. func startNewPasswordRequired() -> AWSCognitoIdentityNewPasswordRequired { if (self.resetPasswordViewController == nil) { self.resetPasswordViewController = self.storyboard?.instantiateViewController(withIdentifier: "ResetPasswordController") as? ResetPasswordViewController } DispatchQueue.main.async { if(self.resetPasswordViewController!.isViewLoaded || self.resetPasswordViewController!.view.window == nil) { self.navigationController?.present(self.resetPasswordViewController!, animated: true, completion: nil) } } return self.resetPasswordViewController! } }

Un lucru cheie de reținut este că ambele metode returnează un controler de vizualizare care implementează un protocol specific. De exemplu, LoginViewController implementează AWSCognitoIdentityPasswordAuthentication , care are o singură metodă care este apelată cu parametrii necesari pentru a permite utilizatorului să finalizeze procesul de conectare.

Fluxul de autentificare

Cu toate aceste piese la locul lor în aplicația demo, acum puteți vedea cum procesul de conectare funcționează de la început până la sfârșit. Vizualizarea principală a aplicației arată numele de utilizator și prenumele și prenumele utilizatorului. Pentru a face acest lucru, au loc următorii pași:

  1. În AppViewController , apelăm metoda fetchUserAttributes în metoda viewDidLoad . Dacă utilizatorul nu este autentificat, acest lucru va declanșa procesul de conectare.
  2. Va fi declanșată metoda startPasswordAuthentication din AppDelegate . Această metodă încarcă LoginViewController și îl prezintă.
  3. Metoda getDetails a LoginViewController este apelată de AWS SDK. Acesta include un obiect care este o instanță a AWSTaskCompletionSource , pe care îl putem folosi pentru a permite utilizatorului să încerce să se autentifice.
  4. Când utilizatorul apasă butonul „Log in”, transmitem acreditările de conectare acelui obiect. Aceasta va apela apoi metoda didCompleteStepWithError și putem gestiona rezultatul în consecință. Dacă nu există nicio eroare, putem închide controlerul de vizualizare.
  5. Dacă am creat utilizatorul în consolă, vom avea încă un pas de rezolvat aici. Deoarece i-am dat utilizatorului o parolă temporară, acesta va trebui să seteze una mai permanentă. În plus, deoarece am setat numele și numele de familie ca parametri solicitați, trebuie să permitem utilizatorului să le introducă și pe aceștia. SDK-ul AWS va detecta acest lucru și va apela metoda startNewPasswordRequired în AppDelegate . Aceasta va prezenta ResetPasswordViewController și va seta instanța lui AWSTaskCompletionSource .
  6. ResetPasswordViewController funcționează aproape identic cu LoginViewController . Trebuie pur și simplu să cerem utilizatorului valorile corecte și apoi să trimitem acele valori. Odată ce acest proces este finalizat cu succes, respingem controlerul de vizualizare.
  7. Odată ce întregul proces de conectare s-a încheiat, SDK-ul va stoca în siguranță jetoanele returnate de Cognito. Apoi, vom prelua în sfârșit detaliile utilizatorului și le putem folosi pentru a popula AppViewController cu numele de utilizator, prenumele și numele de familie ale utilizatorului.

Aplicația de lucru cu autentificare
Exemplu de aplicație de lucru, care arată numele de utilizator și metadate

Concluzie

Deși procesul de configurare a grupului de utilizatori poate avea mai mulți pași, acești pași sunt ușor de navigat. În plus, cantitatea posibilă de configurație ar trebui să vă ofere încredere că poate suporta majoritatea cazurilor de utilizare. În munca mea de zi cu zi la Universal Mind, am lucrat cu mai mulți clienți care își mută aplicațiile existente pentru a profita de capabilitățile pe care Cognito le oferă pentru gestionarea utilizatorilor.

Indiferent dacă trebuie să implementați un sistem de management al utilizatorilor în mod regulat, acesta este un instrument pe care fiecare dezvoltator web și mobil ar trebui să îl aibă în cutia de instrumente . În următorul articol din această serie, vom începe să explorăm un pic mai mult capacitățile Cognito prin implementarea unei aplicații demonstrative cu mai multe caracteristici, care implementează mai multe cazuri de utilizare obișnuite pentru managementul utilizatorilor.

Cu puțină practică, poți să te impresionezi pe toți prietenii tăi creând o nouă aplicație care să satisfacă toate aceste cazuri de utilizare pentru gestionarea utilizatorilor într-o zi. E destul de bine pentru o zi de muncă.

Link-uri și resurse

  • Amazon Cognito
  • „Resurse pentru dezvoltatori”, Amazon Cognito
  • AWS Mobile SDK
  • „Tutorial CocoaPods pentru Swift: Noțiuni introductive”, Joshua Greene, raywenderlich.com