Upravljanje korisnicima s AWS Cognito - (1/3) početno postavljanje

Kompletna AWS web ploča - Vodič 1A

Glavni sadržaj Kliknite ovdje Dio A: Početna postavka Dio B: Osnovna funkcionalnost Dio C: Posljednji koraci do punog postavljanja

Preuzmite Github ovdje.

Uvod

Postavljanje provjere autentičnosti korisnika može potrajati, ali to je ključni kamen svake proizvodne aplikacije. Postoje opcije poput AuthO i PassportJS, ali one imaju krivulje tvrdog učenja, zahtijevaju neprekidno održavanje ili su ranjive na pogreške programera jer zahtijevaju samo-postavljanje. Kad bi barem postojala praktična, prilagodljiva, sigurna i visoko skalabilna usluga upravljanja korisnicima u oblaku.

Predstavljamo Amazon Cognito i Federated Identities. Cognito je AWS rješenje za upravljanje korisničkim profilima, a Federated Identities pomažu u praćenju vaših korisnika na više prijava. Integriran u AWS ekosustav, AWS Cognito otvara svijet mogućnosti za napredni front end razvoj jer vam uloge Cognito + IAM pružaju selektivan siguran pristup ostalim AWS uslugama. Želite li dopustiti pristup S3 segmentu samo određenim prijavljenim korisnicima? Jednostavno povežite prijavu Cognito s IAM ulogom kojoj je omogućen pristup segmentu i sada je vaš segment siguran! Najbolje od svega je što vam besplatni nivo daje 50.000 aktivnih korisnika mjesečno, tako da nećete morati brinuti hoćete li platiti više dok ne budete spremni za procvat.

Ovaj je obrazac web-aplikacija React-Redux koja ima sve značajke unaprijed integriranih AWS Cognito i Federated Identities. Koristite ovaj obrazac ako imate aplikaciju za koju želite da je od samog početka razvijena s uslugom provjere autentičnosti. Zapravo je ovo moćna lansirna ploča za vašu sljedeću sjajnu ideju.

Idite na AWS Cognito na AWS konzoli da započnete!

Početna postavka - Cognito

Postavit ćemo AWS Cognito, koji je prilagođeni fond za prijavu (poput prijave putem e-pošte). Cognito NIJE upravitelj prijave za bilo koju vrstu prijave (kao što su Facebook i Gmail), samo za prilagođene prijave.

Prvo napravimo korisnički skup klikom na "Upravljanje svojim korisničkim skupinama". Korisničko spremište je skupina korisnika koji ispunjavaju istu oznaku. Da izrađujete Uberov klon, napravili biste 2 korisnička skupa - jedan za vozače i jedan za vozače. Za sada samo napravimo 1 novi korisnički skup nazvan "App_Users". Zaslon za postavljanje trebao bi izgledati ovako:

Proći ćemo kroz ovaj postupak korak po korak, pa unesite naziv bazena "App_Users" i kliknite "Korak kroz postavke". Sljedeći je korak „Atributi“, gdje definiramo atribute koje će imati naši „Korisnici aplikacije“.

Mi sada želimo imati samo e-poštu, lozinku i "agentName". E-adresa je naš jedinstveni identifikator za korisnika, a zaporka je obavezno polje (zbog čega je ne vidite na popisu standardnih atributa). Želimo da korisnici mogu imati kodno ime, tako da postavimo "agentName" prilagođeni atribut. Koristimo samo "agentName" da pokažemo kako dodati prilagođene atribute. Pomaknite se prema dolje i vidjet ćete opciju za dodavanje prilagođenih atributa.

Od datuma pisanja ovog vodiča ne možete se vratiti i mijenjati prilagođene atribute (iako se čini da AWS to može), zato budite sigurni da ste to popravili prvi put! Ako trebate promijeniti atribute, morat ćete stvoriti novi korisnički prostor. Nadam se da će AWS uskoro riješiti ovaj problem. U svakom slučaju, prelazimo na pravila računa!

Dakle, ovdje možemo vidjeti da se naše lozinke mogu nametnuti tako da zahtijevaju određene znakove. Očito bi zahtijevanje kombinacije različitih tipova znakova bilo sigurnije, ali korisnici to često ne vole. Za sredinu, samo zahtijevamo da lozinka ima više od 8 znakova i sadrži najmanje 1 broj. Također želimo da se korisnici mogu sami prijaviti. Ostali dijelovi nisu toliko važni, pa prijeđimo na sljedeći korak: provjere.

Ovaj je dio sjajan, lako možemo integrirati višefaktorsku provjeru autentičnosti (MFA). To znači da se korisnici moraju prijaviti e-poštom, kao i drugim oblikom provjere autentičnosti, poput telefonskog broja. PIN bi se poslao na taj telefonski broj i korisnik bi ga koristio za potvrdu svog računa. U ovom uputstvu nećemo koristiti MFA, već samo potvrdu e-poštom. Postavite MFA na "isključeno" i označite samo "E-pošta" kao način provjere. Možemo napustiti ispunjenu "Ulogu korisnika-SMS-uloga" (IAM uloga), jer je nećemo koristiti, ali ćemo je možda koristiti u budućnosti. Cognito koristi tu ulogu IAM-a da bi bio ovlašten za slanje SMS tekstualnih poruka korištenih u MFA-u. Budući da ne koristimo MFA, možemo prijeći na: Prilagođavanje poruka.

Kad korisnici dobiju e-poštu za potvrdu računa, možemo odrediti što ulazi u tu e-poštu. Ovdje smo napravili prilagođenu e-poštu i programski smješteni u verifikacijski PIN predstavljen kao {####}. Nažalost, ne možemo proslijediti druge varijable poput veze za provjeru. Da bismo to postigli, morali bismo koristiti kombinaciju AWS Lambda i AWS SES.

Pomaknite se prema dolje u koraku Prilagođavanja poruka i možemo dodati vlastite zadane FROM i REPLY-TO adrese. Da bismo to učinili, moramo potvrditi e-poštu u AWS SES, koju je jednostavno i vrlo brzo postaviti. U novoj kartici idite na početnu stranicu konzole AWS klikom narančaste kocke u gornjem lijevom dijelu. Na početnoj stranici konzole potražite SES (Jednostavna usluga e-pošte). Kliknite da biste otišli na stranicu SES, a zatim kliknite vezu Adresa e-pošte na lijevom izborniku.

Zatim kliknite "Potvrdi novu adresu" i unesite e-adresu koju želite potvrditi.

Sada se prijavite na svoju e-poštu i otvorite e-poštu s AWS-a. Kliknite vezu unutar e-pošte za potvrdu i ponovno ćete biti preusmjereni na stranicu AWS SES. Uspješno ste potvrdili e-poštu! To je bilo lako.

Sad je to gotovo, vratimo se natrag na AWS Cognito i prijeđimo na: Oznake.

Nije obvezno dodavanje oznaka u korisnički bazen, ali je definitivno korisno za upravljanje mnogim AWS uslugama. Samo dodajmo oznaku za 'AppName' i postavimo je na vrijednost 'MyApp'. Sada možemo prijeći na: Uređaji.

Možemo se sjetiti uređaja naših korisnika. Obično odaberem "Uvijek", jer je pamćenje korisničkih uređaja i besplatno i ne zahtijeva kodiranje s naše strane. Informacije su također korisne, pa zašto ne? Sljedeći korak: Aplikacije.

Želimo da određene aplikacije imaju pristup našem korisničkom spremištu. Te aplikacije nisu prisutne nigdje drugdje u ekosustavu AWS, što znači da kada kreiramo "aplikaciju", to je identifikator samo za Cognito. Aplikacije su korisne jer možemo imati više aplikacija koje pristupaju istom korisničkom skupu (zamislite aplikaciju za klon Uber i besplatnu aplikaciju za praksu vožnje). Token za osvježavanje postavit ćemo na 30 dana, što znači da će svaki pokušaj prijave vratiti token za osvježavanje koji možemo koristiti za provjeru autentičnosti umjesto da se svaki put prijavimo. Poništavamo klik na „Generiraj tajnu klijenta“ jer se namjeravamo prijaviti u naš korisnički skup s prednjeg kraja, a ne sa stražnje strane (ergo, ne možemo čuvati tajne na prednjem kraju, jer je to nesigurno). Kliknite "Izradi aplikaciju", a zatim "Sljedeći korak" da biste prešli na: Okidači.

Možemo pokretati razne radnje u tijeku provjere autentičnosti i postavljanja korisnika. Sjećate se kako smo rekli da možemo stvoriti složenije e-adrese za potvrdu računa pomoću AWS Lambda i AWS SES? Ovdje bismo to postavili. Za opseg ovog vodiča, nećemo koristiti nijedan AWS Lambda okidač. Prijeđimo na zadnji korak: Pregled.

Ovdje ćemo pregledati sve konfiguracije postavki koje smo napravili. Ako ste sigurni u ove informacije, kliknite "Stvori skup" i generirat će se naš Cognito korisnički skup!

Zabilježite Id us-east-1_6i5p2Fwaobazena na kartici Pojedinosti bazena.

I ID klijenta 5jr0qvudipsikhk2n1ltcq684baplikacije na kartici Aplikacije. Oboje će nam trebati u našoj aplikaciji na strani klijenta.

Sada kada je postavljen Cognito, možemo postaviti Federated Identities za više pružatelja usluga prijave. U ovom vodiču ne pokrivamo specifičnosti FB prijave jer nije unutar opsega ove serije tutorijala. Međutim, integriranje FB prijave je vrlo jednostavno, a u nastavku ćemo pokazati kako se to radi.

Početna postavka - Federativni identiteti

Dalje želimo postaviti "Federated Identities". Ako imamo aplikaciju koja omogućuje više davatelja usluge za prijavu (Amazon Cognito, Facebook, Gmail..itd) istom korisniku, koristili bismo Federated Identities za centralizaciju svih tih prijava. U ovom uputstvu koristit ćemo i našu Amazon Cognito prijavu, kao i potencijalnu Facebook prijavu. Idite na Federated Identities i započnite postupak stvaranja novog spremišta identiteta. Dajte mu odgovarajuće ime.

Sada proširite odjeljak "Davatelji autentifikacije" i vidjet ćete donji zaslon. Pod Cognito, dodat ćemo Cognito User Pool koji smo upravo stvorili. Kopirajte i zalijepite ID korisničkog spremišta i ID klijenta aplikacije koje smo ranije zabilježili.

A ako smo željeli Facebook prijavu za isti skup korisničkih identiteta, možemo prijeći na Facebook karticu i jednostavno unijeti svoj Facebook App ID. To je sve na AWS konzoli!

Spremite spremište identiteta i bit ćete preusmjereni na donji zaslon na kojem su stvorene IAM uloge koje predstavljaju Federated Identity Pool. Neautentificirana IAM uloga je za ne prijavljene korisnike, a ovjerena verzija za prijavljene korisnike. Ovim IAM ulogama možemo odobriti pristup drugim AWS resursima kao što su S3 segmenti i slično. Na taj način postižemo veću sigurnost integrirajući našu aplikaciju u AWS ekosustav. Nastavite dovršiti stvaranje ovog Identity Pool-a.

Nakon uspješnog stvaranja spremišta identiteta trebali biste vidjeti zaslon u nastavku. Sada trebate zabilježiti samo jednu stvar, a to je Identity Pool ID (tj. us-east-1:65bd1e7d-546c-4f8c-b1bc-9e3e571cfaa7) Koju ćemo koristiti kasnije u našem kodu. Sjajno!

Izađite iz svega i vratite se na glavni zaslon AWS Cognito. Ako uđemo u odjeljak Cognito ili odjeljak Federated Identities, vidjet ćemo da imamo postavljena 2 potrebna spremišta. AWS Cognito i AWS Federated Identities su spremni za rad!

To je sve za postavljanje! S ova 2 spremišta možemo integrirati ostatak našeg koda u Amazonovu cjelovitu uslugu provjere autentičnosti i postići upravljanje korisnicima najviše razine. To je bilo puno lakše od prilagođenog OAuth + Passport.js! Ako vam se sviđa ono što ste do sada vidjeli, nastavite čitati! Imajte na umu da će nakon što jednom ovo naučite biti super lako u budućnosti, tako da se svakako isplati uložiti vrijeme. Vidimo se u sljedećem odjeljku!

Glavni sadržaj Kliknite ovdje Dio A: Početna postavka Dio B: Osnovna funkcionalnost Dio C: Posljednji koraci u potpunostiOve metode djelomično su korištene u postavljanju renthero.ca