Amazon Cognito on AWS:n tarjoama palvelu turvalliseen ja skaalautuvaan asiakasidentiteetin- ja pääsynhallintaan (Customer Identity and Access Management, eli CIAM). Kehittäjät voivat käyttää Cognitoa helpottamaan autentikaation, auktorisoinnin ja käyttäjähallinnan lisäämistä sovelluksiin, jolloin käyttäjät voivat esimerkiksi kirjautua sovelluksiin sekä suorittaa sallittuja toimintoja. Cogniton tärkeimmät komponentit ovat User Pool ja Identity Pool.
User Pool on on käyttäjähakemisto, eli se pitää sisällään käyttäjien tiedot (profiilit, attribuutit ja ryhmät). Käyttäjät voidaan rekisteröidä suoraan User Pooliin, jolloin User Pool toimii itsenäisenä Identity Providerina (IdP) näille käyttäjille, eli tällöin User Pool säilyttää ja verifioi identiteetit. Toinen vaihtoehto on käyttää federointia, jolloin käyttäjät kirjautuvat sisään sovellukseen kolmannen osapuolen IdP:tä, kuten Amazonin, Facebookin, Googlen, Applen tai muun yhteensopivan (SAML tai OpenID Connect) IdP:n avulla. Tällöin User Pool toimii sovelluksen ja kolmannen osapuolen IdP:n välissä. Käyttäjän onnistuneen sisäänkirjautumisen päätteeksi User Pool palauttaa JSON web tokenit, joita käytetään haluttuun toimintoon, kuten esimerkiksi tietojen hakemiseen backend-palvelusta. Kehittäjien ei tarvitse toteuttaa käyttöliittymiä itse, sillä Cognito myös tarjoaa valmiita toteutuksia, kuten esimerkiksi rekisteröityminen ja sisäänkirjautuminen. User Poolin toiminnallisuutta voi myös mukauttaa Lambda-funktioiden avulla (Lambda triggers). User Poolissa on myös useita erilaisia ominaisuuksia, kuten esimerkiksi monivaiheinen tunnistautuminen (MFA), konfiguroitavat salasanan vaatimukset, CAPTCHA-tuki, kirjautuminen ilman salasanaa sekä tuki AWS WAF -palomuurille.
Identity Pool puolestaan mahdollistaa käyttäjille pääsyn AWS-palveluihin, kuten esimerkiksi pääsyn S3-palveluun. Identity Pool antaa käyttäjälle väliaikaiset AWS-tunnukset, joita käytetään pyyntöjen tekemiseen sallittuihin AWS-palveluihin. Käyttäjän autentikaatio voidaan tehdä käyttämällä User Poolia tai muuta IdP:tä, kuten Amazon, Facebook, Google, Apple tai muuta yhteensopivaa (SAML tai OpenID Connect) IdP:tä. Halutessaan Identity Poolin voi konfiguroida palauttamaan väliaikaiset AWS-tunnukset myös anonyymeille käyttäjille, eli käyttäjille, jotka eivät ole kirjautuneet sisään sovellukseen. Identity Pool tarvitsee IAM-roolin väliaikaisia AWS-tunnuksia varten. IAM-roolin avulla määritellään mitä oikeuksia käyttäjällä on. Autentikoituneille ja anonyymeille käyttäjille voidaan määritellä eri IAM-roolit.
Cognitoa voidaan käyttää myös muiden AWS-palveluiden kanssa, kuten esimerkiksi API Gateway ja AppSync. AppSync-palvelun (GraphQL API) kanssa Cognitoa voidaan käyttää esimerkiksi siten, että käyttäjä kirjautuu sisään sovellukseen käyttäen Cognito User Poolia ja saa sieltä JWT-tokenin. Tätä tokenia käytetään AppSync-pyynnössä, ja AppSync voidaan konfiguroida siten, että tietyt operaatiot ovat sallittuja tietylle käyttäjäryhmälle. Tieto käyttäjän mahdollisista ryhmistä tulee User Poolista ja token sisältää kyseisen tiedon. Käyttäjä saa suorittaa operaation mikäli hän kuuluu sallittuun ryhmään, ja käyttäjälle palautetaan virhe mikäli token ei sisällä vaadittua ryhmää/tietoa.
Jukka Ukkonen
Senior Consultant