Käyttäjähallinta AWS Cognito -ohjelmalla - (1/3) alkuasetukset

Täydellinen AWS-verkkokattilevy - opetusohjelma 1A

Sisällysluettelo Napsauta tätä. Osa A: Alkuasetukset Osa B: Perustoiminnot Osa C: Viimeiset vaiheet täysimittaiseen käyttöön

Lataa Github täältä.

Johdanto

Käyttäjätodennuksen asettaminen voi viedä iät, mutta se on olennainen kulmakivi kaikille tuotantosovelluksille. Siellä on vaihtoehtoja, kuten AuthO ja PassportJS, mutta niillä on joko vaikeita oppimiskäyriä, he tarvitsevat jatkuvaa ylläpitoa tai ovat alttiita ohjelmoijavirheille, koska ne edellyttävät itse määritystä. Jos vain pilvessä olisi hands-off, mukautettava, turvallinen ja erittäin skaalautuva käyttäjien hallintapalvelu.

Esittelyssä Amazon Cognito ja Federated Identities. Cognito on AWS-ratkaisu käyttäjäprofiilien hallintaan, ja Federated Identities auttaa seuraamaan käyttäjiäsi useiden kirjautumisten yhteydessä. Integroituna AWS-ekosysteemiin AWS Cognito avaa mahdollisuuden kehittyneelle käyttöliittymän kehittämiselle, koska Cognito + IAM -roolit antavat sinulle valikoivan turvallisen pääsyn muihin AWS-palveluihin. Haluatko sallia S3-kauhan pääsyn vain tietyille kirjautuneille käyttäjille? Yhdistä vain Cognito-kirjautuminen IAM-roolilla, jolla on pääsy kauhaan, ja nyt ämpäri on turvallinen! Mikä parasta, ilmainen taso antaa sinulle 50000 aktiivista käyttäjää kuukaudessa, joten sinun ei tarvitse huolehtia enemmän maksamisesta, ennen kuin olet valmis nousemaan.

Tämä kattilalevy on React-Redux -verkkosovellus, joka sisältää valmiiksi integroidut AWS Cognito- ja Federated Identities -ominaisuudet. Käytä tätä kattilaa, jos sinulla on sovellus, jonka haluat kehittää tuotantovalmiilla todennuspalvelulla alusta alkaen. Itse asiassa tämä on tehokas käynnistyslevy seuraavalle upealle idealle.

Aloita siirtymällä AWS-konsolin AWS Cognitoon!

Alkuasetukset - Cognito

Aiomme perustaa AWS Cognito -palvelun, joka on mukautettu sisäänkirjautumisalue (kuten sisäänkirjautuminen sähköpostilla). Cognito EI EI kirjautumistunnus minkään tyyppisille kirjautumisille (kuten Facebook ja Gmail), vain mukautetuille kirjautumisille.

Tehdään ensin käyttäjäpooli napsauttamalla "Hallinnoi käyttäjäpooliasi". Käyttäjäryhmä on ryhmä käyttäjiä, jotka täyttävät saman nimityksen. Jos tekisit Uber-kloonin, tekisit 2 käyttäjäpoolia - yhden kuljettajille ja toisen ratsastajille. Luo nyt vain yksi uusi käyttäjäryhmä nimeltä ”App_Users”. Asennusnäytön tulisi näyttää tältä:

Käymme läpi tämän prosessin vaihe vaiheelta, joten kirjoita altaan nimi ”App_Users” ja napsauta ”Step through settings”. Seuraava vaihe on "Attribuutit", jossa määritämme attribuutit, jotka "App_Users" -mme saavat.

Me nyt haluamme vain sähköpostin, salasanan ja “agentName”. Sähköposti on yksilöllinen tunniste käyttäjälle ja salasana on pakollinen kenttä (minkä vuoksi et näe sitä vakiomääritteiden luettelossa). Haluamme, että käyttäjillä voi olla koodinimi ohi, joten määritetään "agentName" on mukautettu attribuutti. Käytämme vain “agentName” osoittaaksemme, kuinka mukautetut määritteet lisätään. Vieritä alaspäin ja näet vaihtoehdon lisätä mukautettuja määritteitä.

Tämän opetusohjelman kirjoittamispäivästä alkaen et voi palata takaisin muuttamaan mukautettuja määritteitä (vaikka AWS näyttää pystyvän), joten muista saada tämä oikein ensimmäistä kertaa! Jos haluat muuttaa määritteitä, sinun on luotava uusi käyttäjäpooli. Toivottavasti AWS korjaa ongelman pian. Joka tapauksessa, siirtymällä tilikäytäntöihin!

Joten näemme täällä, että salasanamme voidaan pakottaa vaatimaan tiettyjä merkkejä. Eri hahmotyyppien yhdistelmän vaatiminen olisi tietysti turvallisempaa, mutta käyttäjät eivät usein pidä siitä. Keskitasoa varten antaa vain vaatia salasanan, joka on vähintään 8 merkkiä pitkä ja sisältää vähintään yhden numeron. Haluamme myös, että käyttäjät voivat rekisteröityä itse. Muut osat eivät ole niin tärkeitä, joten siirrymme seuraavaan vaiheeseen: tarkastuksiin.

Tämä osa on siisti, voimme helposti integroida monivaiheisen todennuksen (MFA). Tämä tarkoittaa, että käyttäjien on rekisteröidyttävä sähköpostilla tai muulla todennustavalla, kuten puhelinnumerolla. PIN-koodi lähetetään kyseiseen puhelinnumeroon, ja käyttäjä käyttää sitä tilinsä vahvistamiseen. Emme käytä MFA: ta tässä opetusohjelmassa, vain sähköpostivahvistus. Aseta MFA-asetukseksi “off” ja tarkista vain ”Email” vahvistusmenetelmänä. Voimme jättää täytetyn "AppUsers-SMS-Role" (IAM-rooli), koska emme käytä sitä, mutta voimme käyttää sitä tulevaisuudessa. Cognito käyttää IAM-roolia valtuutettuna lähettämään MFA: ssa käytettyjä tekstiviestejä. Koska emme käytä MFA: ta, voimme siirtyä seuraavaan kohtaan: Viestien mukauttaminen.

Kun käyttäjät saavat tilivahvistussähköpostinsa, voimme määrittää, mitä kyseiseen sähköpostiin tulee. Täällä olemme tehneet mukautetun sähköpostin ja ohjelmallisesti sijoitettu vahvistus-PIN-koodiin, jota edustaa {####}. Valitettavasti emme voi lähettää muita muuttujia, kuten vahvistuslinkkiä. Tämän saavuttamiseksi meidän olisi käytettävä AWS Lambda- ja AWS SES -yhdistelmiä.

Selaa sivua alaspäin Viestien mukauttaminen -vaiheessa ja voimme lisätä omat oletusarvoiset FROM- ja REPLY-TO-osoitteemme. Tätä varten meidän on vahvistettava sähköposti AWS SES: ssä, joka on helppo ja erittäin nopea asentaa. Siirry uudessa välilehdessä AWS-konsolin kotisivulle napsauttamalla oranssia kuutiota vasemmassa yläkulmassa. Etsi konsolin kotisivulta SES (Simple Email Service). Napsauta siirtyäksesi SES-sivulle ja napsauta sitten Sähköpostiosoitteet-linkkiä vasemmassa valikossa.

Napsauta sitten "Vahvista uusi osoite" ja kirjoita vahvistettava sähköpostiosoite.

Kirjaudu nyt sähköpostiisi ja avaa sähköposti AWS: ltä. Napsauta sähköpostin sisällä olevaa linkkiä vahvistaaksesi, ja sinut ohjataan uudelleen AWS SES -sivulle. Olet vahvistanut sähköpostin onnistuneesti! Se oli helppoa.

Nyt se on valmis, palataan takaisin AWS Cognitoon ja siirrytään kohtaan Tunnisteet.

Tunnisteiden lisääminen käyttäjäpooliin ei ole pakollista, mutta se on ehdottomasti hyödyllinen monien AWS-palvelujen hallinnassa. Lisätään vain tunniste AppName-sovellukseen ja asetetaan sen arvoksi MyApp. Voimme nyt siirtyä kohtaan: Laitteet.

Voimme halutessamme muistaa käyttäjän laitteemme. Valitsen yleensä "Aina", koska käyttäjän laitteiden muistaminen on sekä ilmaista että vaatii koodausta. Tiedot ovat myös hyödyllisiä, joten miksi ei? Seuraava vaihe: Sovellukset.

Haluamme, että tietyillä sovelluksilla on pääsy käyttäjäalueeseemme. Näitä sovelluksia ei ole missään muualla AWS-ekosysteemissä, mikä tarkoittaa, että kun luot sovelluksen, se on vain Cognito-tunniste. Sovellukset ovat hyödyllisiä, koska meillä voi olla useita sovelluksia pääsemässä samaan käyttäjäalueeseen (kuvittele Uber-kloonisovellus ja ilmainen ajotestisovellus). Asetamme päivitystunnuksen 30 päiväksi, mikä tarkoittaa, että jokainen sisäänkirjautumisyritys palauttaa päivitystunnuksen, jota voimme käyttää todennukseen sen sijaan, että kirjautuisimme joka kerta. Poistamme "Luo asiakassalaisuus" -valinnan, koska aiomme kirjautua käyttäjäalueeseemme käyttöliittymästä käyttöliittymästä takapään sijaan (ergo, emme voi pitää salaisuuksia käyttöliittymässä, koska se on epävarmaa). Napsauta "Luo sovellus" ja sitten "Seuraava vaihe" siirtyäksesi kohtaan: Triggers.

Voimme laukaista erilaisia ​​toimintoja käyttäjän todennuksessa ja määritysvirrassa. Muistatko, kuinka sanoimme, että voimme luoda monimutkaisempia tilinvahvistusviestejä AWS Lambda- ja AWS SES -palveluilla? Tässä me asettaisimme sen. Tämän opetusohjelman laajuudessa emme käytä AWS Lambda -liipaisimia. Siirrytään viimeiseen vaiheeseen: tarkistus.

Tässä tarkastelemme kaikkia tekemiäsi määrityksiä. Jos olet varma näistä tiedoista, napsauta "Luo uima-allas" ja Cognito-käyttäjäpoolimme luodaan!

Ota huomioon uima-altaan tunnus us-east-1_6i5p2FwaoAltaan tiedot -välilehdessä.

Ja 5jr0qvudipsikhk2n1ltcq684bSovellukset-välilehden Sovelluksen asiakastunnus . Tarvitsemme molemmat näistä asiakaspuolen sovelluksessamme.

Nyt kun Cognito on määritetty, voimme määrittää Federated Identities useille kirjautumistarjoajille. Tässä opetusohjelmassa emme käsittele FB-kirjautumisen yksityiskohtia, koska se ei kuulu tämän opetusohjelman sarjaan. FB Loginin integrointi on kuitenkin erittäin helppoa, ja näytämme, miten se tehdään, alla olevassa osiossa.

Alkuasetukset - Federated Identities

Seuraavaksi haluamme määrittää "Federated Identities". Jos meillä on sovellus, joka sallii useiden sisäänkirjautumispalvelujen tarjoajien (Amazon Cognito, Facebook, Gmail jne.) Samalle käyttäjälle, keskitämme kaikki nämä kirjautumistiedot Federated Identities -sovelluksella. Tässä opetusohjelmassa käytämme sekä Amazon Cognito -kirjautumistunnustamme että potentiaalista Facebook-kirjautumistunnustamme. Siirry kohtaan Federated Identities ja aloita uuden identiteettipoolin luominen. Anna sille sopiva nimi.

Laajenna nyt Todennustarjoajat-osio ja näet alla olevan ruudun. Lisäämme Cognito-kohtaan juuri luomamme Cognito-käyttäjäpoolin. Kopioi ja liitä User Pool ID ja App Client ID, jotka olemme tehneet muistiin aiemmin.

Ja jos halusimme Facebook-kirjautumisen samalle käyttäjäidentiteettipoolille, voimme mennä Facebook-välilehteen ja syöttää yksinkertaisesti Facebook-sovellustunnuksemme. Siinä kaikki siinä AWS-konsolissa!

Tallenna identiteettivarasto ja sinut ohjataan alla olevaan näyttöön, jossa IAM-roolit luodaan edustamaan yhdistettyä identiteettipoolia. Todentamaton IAM-rooli on kirjautumattomille käyttäjille ja todennettu versio kirjautuneille käyttäjille. Voimme myöntää näille IAM-rooleille luvan käyttää muita AWS-resursseja, kuten S3-ämpärejä ja vastaavia. Näin saavutamme paremman turvallisuuden integroimalla sovelluksemme AWS-ekosysteemiin. Jatka tämän identiteettipoolin luomisen loppuun.

Sinun pitäisi nyt nähdä alla oleva näyttö, kun olet luonut identiteettipoolin. Sinun tarvitsee nyt merkitä muistiin vain yksi asia, joka on Identity Pool ID (eli. us-east-1:65bd1e7d-546c-4f8c-b1bc-9e3e571cfaa7), Jota käytämme myöhemmin koodissamme. Loistava!

Poistu kaikesta ja palaa AWS Cognito -päänäyttöön. Jos astumme Cognito- tai Federated Identities -osioon, näemme, että meillä on 2 tarvittavaa allasta. AWS Cognito ja AWS Federated Identities ovat valmiita!

Siinä kaikki asennuksessa! Näillä kahdella altaalla voimme integroida loput koodistamme Amazonin täydelliseen todennuspalveluun ja saavuttaa huipputason käyttäjien hallinnan. Se oli paljon helpompaa kuin mukautettu OAuth + Passport.js! Jos pidät siitä, mitä olet tähän mennessä nähnyt, jatka lukemista! Muista, että kun olet oppinut tämän kerran, se on erittäin helppoa tulevaisuudessa, joten se on ehdottomasti aikainvestoinnin arvoinen. Nähdään seuraavassa osiossa!

Sisällysluettelo Napsauta tätä Osa A: Alkuasetukset Osa B: Perustoiminnot Osa C: Viimeiset vaiheet täydelliseen käyttöön Näitä menetelmiä käytettiin osittain vuokhero.ca: n käyttöönotossa