de Kangze Huang

Gestionarea utilizatorilor cu AWS Cognito – (1/3) Configurare inițială

Complet AWS Web Boilerplate – Tutorial 1A

Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala

Cuprinsul principal faceți clic aici

Partea A: Configurare inițială

Partea B: Funcționalitatea de bază

Partea C: Ultimii pași pentru a obține deplin

Descărcați Github Aici.

Introducere

Configurarea autentificării utilizatorilor poate dura veacuri, dar este o piatră de temelie esențială a oricărei aplicații de producție. Există opțiuni, cum ar fi AuthO și PassportJS, dar fie au curbe de învățare dificile, necesită întreținere continuă, fie sunt vulnerabile la erori de programare, deoarece necesită auto-configurare. Dacă ar exista doar un serviciu hands-off, personalizabil, sigur și extrem de scalabil de gestionare a utilizatorului pe cloud.

Vă prezentăm Amazon Cognito și identități federate. Cognito este soluția AWS pentru gestionarea profilurilor utilizatorilor, iar identitățile federate vă ajută să vă urmăriți utilizatorii în mai multe conectări. Integrat în ecosistemul AWS, AWS Cognito deschide o lume a posibilităților de dezvoltare front-end avansată, deoarece rolurile Cognito + IAM vă oferă acces securizat selectiv la alte servicii AWS. Doriți să permiteți accesul S3 Bucket la anumiți utilizatori conectați? Pur și simplu conectați un login Cognito cu un rol IAM permis accesul în bucket, iar acum bucket-ul dvs. este sigur! Cel mai bun dintre toate, nivelul gratuit vă oferă 50.000 de utilizatori activi lunar, astfel încât nu va trebui să vă faceți griji cu privire la plata mai multă până când nu sunteți gata de boom.

Această boilerplate este o aplicație web React-Redux care are toate caracteristicile AWS Cognito și Federated Identities pre-integrate. Utilizați această boilerplate dacă aveți o aplicație pe care doriți să o dezvoltați de la bun început cu un serviciu de autentificare pregătit pentru producție. Într-adevăr, acesta este un lansator puternic pentru următoarea ta idee grozavă.

Accesați AWS Cognito pe consola AWS pentru a începe!

1612000151 31 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala

Configurare inițială – Cognito

1612000152 716 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala

Vom configura AWS Cognito, care este un pool de autentificare personalizat (cum ar fi autentificarea cu e-mail). Cognito NU este un manager de conectare pentru orice tip de conectare (cum ar fi Facebook și Gmail), numai pentru autentificări personalizate.

Să facem mai întâi un grup de utilizatori dând clic pe „Gestionați grupurile de utilizatori”. Un grup de utilizatori este un grup de utilizatori care îndeplinesc aceeași denumire. Dacă ați face o clonă Uber, ați face 2 grupuri de utilizatori – unul pentru șoferi și unul pentru rideri. Deocamdată, să facem doar un nou grup de utilizatori numit „App_Users”. Ecranul de configurare ar trebui să arate astfel:

1612000152 89 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Numele grupului de utilizatori

Vom parcurge acest proces pas cu pas, așa că introduceți numele Pool-ului „App_Users” și faceți clic pe „Step through settings”. Următorul pas este „Atribute”, unde definim atributele pe care le vor avea „Utilizatorii_aplicării” noastre.

1612000152 79 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Atribute utilizator

Acum, vrem doar să avem un e-mail, o parolă și „agentName”. E-mailul este identificatorul nostru unic pentru un utilizator, iar parola este un câmp obligatoriu (motiv pentru care nu îl vedeți în lista de atribute standard). Vrem ca utilizatorii să poată avea un nume de cod, așa că hai să configurăm „agentName” este un atribut personalizat. Folosim „agentName” doar pentru a arăta cum să adăugăm atribute personalizate. Derulați în jos și veți vedea opțiunea de a adăuga atribute personalizate.

1612000153 404 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Atribute personalizate

Începând cu data la care a fost scris acest tutorial, nu puteți să vă întoarceți și să modificați atributele personalizate (chiar dacă AWS pare a fi capabil), deci asigurați-vă că ați reușit acest lucru prima dată! Dacă trebuie să schimbați atributele, va trebui să creați un nou grup de utilizatori. Sperăm că AWS remediază această problemă în curând. Oricum, trecem la politicile contului!

1612000153 633 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Politicile contului

Deci, putem vedea aici că parolele noastre pot fi aplicate pentru a necesita anumite caractere. Evident, necesitatea unui amestec de diferite tipuri de caractere ar fi mai sigur, dar de multe ori utilizatorilor nu le place asta. Pentru un punct de mijloc, să solicităm doar ca parola să aibă o lungime de peste 8 caractere și să includă cel puțin un număr. De asemenea, dorim ca utilizatorii să se poată înscrie. Celelalte părți nu sunt atât de importante, așa că să trecem la pasul următor: verificări.

1612000154 646 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Verificări de cont

Această parte este interesantă, putem integra cu ușurință autentificarea multi-factor (MFA). Aceasta înseamnă că utilizatorii trebuie să se înscrie cu un e-mail, precum și cu o altă formă de autentificare, cum ar fi un număr de telefon. Un cod PIN ar fi trimis la acel număr de telefon și utilizatorul l-ar folosi pentru a-și verifica contul. Nu vom folosi MFA în acest tutorial, ci doar verificarea prin e-mail. Setați MFA la „dezactivat” și bifați numai „E-mail” ca metodă de verificare. Putem lăsa „AppUsers-SMS-Role” (rolul IAM) care a fost completat, deoarece nu îl vom folosi, dar îl vom putea folosi în viitor. Cognito folosește acel rol IAM pentru a fi autorizat să trimită mesaje text SMS utilizate în MFA. Deoarece nu folosim MFA, putem trece la: Personalizarea mesajelor.

1612000154 945 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Mesaje de cont personalizate

Când utilizatorii primesc e-mailurile de verificare a contului, putem specifica ce intră în e-mailul respectiv. Aici am creat un e-mail personalizat și plasat programat în codul PIN de verificare reprezentat ca {####}. Din păcate, nu putem transmite alte variabile, cum ar fi un link de verificare. Pentru a realiza acest lucru, ar trebui să folosim o combinație de AWS Lambda și AWS SES.

1612000155 176 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Mesaje de cont personalizate

Derulați pagina în jos în pasul Personalizări mesaje și putem adăuga propriile adrese implicite FROM și REPLY-TO. Pentru a face acest lucru, trebuie să verificăm un e-mail în AWS SES, care este ușor și rapid de configurat. Într-o filă nouă, accesați pagina de pornire a consolei AWS făcând clic pe cubul portocaliu din partea stângă sus. În pagina principală a consolei, căutați SES (Serviciu simplu de e-mail). Faceți clic pentru a accesa pagina SES, apoi faceți clic pe linkul Adrese de e-mail din meniul din stânga.

1612000155 602 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala

Apoi faceți clic pe „Verificați o adresă nouă” și introduceți adresa de e-mail pe care doriți să o verificați.

1612000156 131 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala

Acum conectați-vă la adresa dvs. de e-mail și deschideți-o de la AWS. Faceți clic pe linkul din interiorul e-mailului pentru a confirma și veți fi redirecționat din nou către pagina AWS SES. Ați verificat cu succes un e-mail! A fost ușor.

Acum este gata, să revenim la AWS Cognito și să trecem la: Etichete.

1612000156 289 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Etichetele grupului de utilizatori

Nu este obligatoriu să adăugați etichete la un grup de utilizatori, dar este cu siguranță util pentru gestionarea multor servicii AWS. Să adăugăm doar o etichetă pentru „AppName” și să o setăm la valoarea „MyApp”. Acum putem trece la: Dispozitive.

1612000156 128 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Dispozitive

Putem opta să ne amintim dispozitivele utilizatorului nostru. De obicei selectez „Întotdeauna” deoarece amintirea dispozitivelor utilizatorului este gratuită și nu necesită codificare din partea noastră. Și informațiile sunt utile, așa că de ce nu? Pasul următor: Aplicații.

1612000157 803 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Aplicații

Vrem ca anumite aplicații să aibă acces la grupul nostru de utilizatori. Aceste aplicații nu sunt prezente nicăieri în ecosistemul AWS, ceea ce înseamnă că atunci când creăm o „aplicație”, este un identificator numai Cognito. Aplicațiile sunt utile, deoarece putem avea mai multe aplicații care accesează același grup de utilizatori (imaginați-vă o aplicație de clonare Uber și o aplicație gratuită de testare a condusului). Vom seta jetonul de reîmprospătare la 30 de zile, ceea ce înseamnă că fiecare încercare de autentificare va returna un jeton de reîmprospătare pe care îl putem folosi pentru autentificare în loc să ne conectăm de fiecare dată. Dezactivăm clicul „Generați secretul clientului”, deoarece intenționăm să ne conectăm la grupul nostru de utilizatori din partea frontală în loc de partea din spate (ergo, nu putem păstra secrete pe partea frontală, deoarece acest lucru este nesigur). Faceți clic pe „Creați aplicație” și apoi pe „Pasul următor” pentru a trece la: Triggers.

1612000157 681 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Declanșatoare

Putem declanșa diverse acțiuni în autentificarea utilizatorului și în fluxul de configurare. Vă amintiți cum am spus că putem crea e-mailuri mai complexe de verificare a contului utilizând AWS Lambda și AWS SES? Aici am putea stabili asta. În scopul acestui tutorial, nu vom folosi niciun declanșator AWS Lambda. Să trecem la pasul final: Revizuirea.

1612000158 251 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Revizuire

Aici examinăm toate configurațiile de configurare pe care le-am făcut. Dacă sunteți sigur de aceste informații, faceți clic pe „Creați un pool” și va fi generat grupul nostru de utilizatori Cognito!

Luați notă de identificatorul piscinei us-east-1_6i5p2Fwao în fila Detalii despre piscină.

1612000158 282 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Observați ID-ul piscinei

Și codul de client al aplicației 5jr0qvudipsikhk2n1ltcq684b în fila Aplicații. Vom avea nevoie de ambele în aplicația noastră pentru clienți.

1612000159 808 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Observați codul de client al aplicației

Acum că Cognito este configurat, putem configura identități federate pentru mai mulți furnizori de autentificare. În acest tutorial nu acoperim specificul FB Login, deoarece nu se află în sfera acestei serii de tutoriale. Cu toate acestea, integrarea FB Login este foarte ușoară și vom arăta cum se face în secțiunea de mai jos.

Configurare inițială – Identități federate

1612000159 89 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala

Apoi vrem să configurăm „Identități Federate”. Dacă avem o aplicație care permite mai multor furnizori de conectare (Amazon Cognito, Facebook, Gmail..etc) aceluiași utilizator, am folosi Identități federate pentru a centraliza toate aceste autentificări. În acest tutorial, vom folosi atât datele noastre de conectare Amazon Cognito, cât și o potențială autentificare Facebook. Accesați Identități federate și începeți procesul pentru a crea un nou pool de identități. Dă-i un nume adecvat.

1612000160 373 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala

Acum extindeți secțiunea „Furnizori de autentificare” și veți vedea ecranul de mai jos. Sub Cognito, vom adăuga grupul de utilizatori Cognito pe care tocmai l-am creat. Copiați și lipiți ID-ul grupului de utilizatori și ID-ul clientului aplicației pe care le-am notat anterior.

1612000160 738 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala

Și dacă am dorit conectarea la Facebook pentru același grup de identitate de utilizator, putem accesa fila Facebook și pur și simplu introduceți ID-ul aplicației Facebook. Asta este tot ce există în consola AWS!

1612000161 949 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala

Salvați grupul de identități și veți fi redirecționat către ecranul de mai jos unde sunt create rolurile IAM pentru a reprezenta grupul de identitate federat. Rolul IAM neautentificat este pentru utilizatorii care nu sunt conectați, iar versiunea autentificată este pentru utilizatorii conectați. Putem acorda aceste roluri IAM permisiunea de a accesa alte resurse AWS, cum ar fi cupe S3 și altele. Acesta este modul în care obținem o securitate mai mare prin integrarea aplicației noastre în întregul ecosistem AWS. Continuați să finalizați crearea acestui pool de identități.

1612000161 519 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala

Acum ar trebui să vedeți ecranul de mai jos după ce ați creat cu succes grupul de identități. Acum trebuie doar să notați un lucru care este ID-ul pool-ului de identitate (adică. us-east-1:65bd1e7d-546c-4f8c-b1bc-9e3e571cfaa7) pe care îl vom folosi mai târziu în codul nostru. Grozav!

1612000161 266 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala

Părăsiți totul și reveniți la ecranul principal AWS Cognito. Dacă intrăm în secțiunea Cognito sau în secțiunea Identități federate, vedem că avem configurate cele 2 pool-uri necesare. AWS Cognito și AWS Federated Identities sunt pregătite!

1612000162 351 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
AWS Cognito
1612000162 387 Gestionarea utilizatorilor cu AWS Cognito 13 Configurare initiala
Identități federate AWS

Asta este tot pentru configurare! Cu aceste 2 pool-uri putem integra restul codului nostru în serviciul complet de autentificare Amazon și putem realiza un management de nivel superior al utilizatorilor. A fost mult mai ușor decât OAuth + Passport.js personalizat! Dacă îți place ceea ce ai văzut până acum, continuă să citești! Amintiți-vă că după ce veți afla acest lucru odată, va fi foarte ușor în viitor, deci merită cu siguranță investiția în timp. Ne vedem în secțiunea următoare!

Cuprinsul principal Faceți clic aici

Partea A: Configurare inițială

Partea B: Funcționalitatea de bază

Partea C: Ultimii pași pentru a obține deplin

Aceste metode au fost parțial utilizate în implementarea programului renthero.ca