Is Cognito a web app based on react?

Amazon Cognito: Sikker brugerstyring til dine apps

02/02/2023

Rating: 4.96 (6263 votes)
Indholdsfortegnelse

Amazon Cognito: Revolutionerer Brugerstyring i Dine Applikationer

I den digitale tidsalder er sikker og effektiv brugerstyring afgørende for enhver applikation. Fra registrering og login til kontogendannelse – processerne skal være intuitive for brugeren og robuste for udvikleren. Amazon Cognito User Pools tilbyder en omfattende løsning på disse udfordringer. Denne service fra Amazon Web Services (AWS) fungerer som en komplet brugerdatabase, der håndterer hele livscyklussen for brugeridentiteter i dine apps.

What is Amazon Cognito user pools?
Amazon Cognito Amazon Cognito User Pools is a full-featured user directory service to handle user registration, storage, authentication, and account recovery. Cognito User Pools returns JWT tokens to your app and does not provide temporary AWS credentials for calling authorized AWS Services.

Hvad er Amazon Cognito User Pools?

Amazon Cognito User Pools er en fuldt udstyret brugerdatabase-service. Den giver dig mulighed for at administrere brugerregistrering, lagring af brugeroplysninger, autentificering og kontogendannelse. I stedet for at genopfinde hjulet og bygge din egen brugerstyringslogik fra bunden, kan du overlade dette komplekse arbejde til Cognito. Dette sparer ikke kun tid og ressourcer, men sikrer også en høj grad af sikkerhed og skalerbarhed.

Cognito User Pools udsteder JSON Web Tokens (JWT) til din applikation, når en bruger er autentificeret. Disse tokens indeholder information om brugeren og deres session, og de kan bruges til at autorisere adgang til beskyttede ressourcer. Det er vigtigt at bemærke, at Cognito User Pools ikke leverer midlertidige AWS-legitimationsoplysninger til direkte kald af AWS-tjenester. Til det formål findes Amazon Cognito Federated Identities, som vi vil berøre senere.

Cognito User Pools vs. Federated Identities

For at forstå Cognitos fulde potentiale er det vigtigt at skelne mellem User Pools og Federated Identities:

FunktionAmazon Cognito User PoolsAmazon Cognito Federated Identities
Primært formålBrugerregistrering, login og administration af brugeridentiteterAutorisering af brugere til at tilgå AWS-tjenester
IdentitetsudbydereHåndterer egne brugerkontiIntegrerer med tredjepartsidentitetsudbydere (f.eks. Facebook, Google, OpenID) og Cognito User Pools
OutputJWT-tokens (ID, Access, Refresh)Midlertidige AWS-legitimationsoplysninger (Access Key ID, Secret Access Key, Session Token)
BrugsscenarierBrugerstyring i din applikation, f.eks. til at gemme brugerprofilerAt give brugere adgang til at uploade til S3, kalde API Gateway-endpoints osv.

Når de bruges sammen, fungerer Cognito User Pools som en identitetskilde for Cognito Federated Identities. Din app kan logge brugere ind via User Pools, og derefter bruge de opnåede JWT-tokens til at få midlertidige AWS-legitimationsoplysninger fra Federated Identities. Disse legitimationsoplysninger giver så brugeren specifikke tilladelser til at interagere med andre AWS-tjenester.

Integration med AWS Amplify

AWS Amplify er et sæt værktøjer og biblioteker, der forenkler udviklingen af cloud-forbundne applikationer. For Android-udviklere er det især vigtigt at bemærke, at AWS SDK for Android er gået ind i en vedligeholdelsesfase. AWS anbefaler kraftigt at migrere til AWS Amplify for Android, et moderne og funktionsrigt bibliotek. Amplify udnytter Cognito User Pools til at gemme brugeroplysninger og håndtere autorisation, samtidig med at det bruger Federated Identities til at administrere brugeradgang til AWS-ressourcer.

Amplify CLI (Command Line Interface) gør det nemt at opsætte backend-ressourcer, herunder Cognito User Pools. Ved at køre kommandoer som `npx amplify init` og `npx amplify add auth` kan du hurtigt konfigurere din brugerdatabase og autentifikationsflow. Derefter kan du bruge Amplify-bibliotekerne i din applikationskode til at implementere registrerings-, login- og logud-funktioner.

How does Amazon Cognito authentication work?
Amazon Cognito includes several methods to authenticate your users. Users can sign in with passwords and WebAuthn passkeys. Amazon Cognito can send them a one-time password in an email or SMS message. You can implement Lambda functions that orchestrate your own sequence of challenges and responses. These are authentication flows.

Hvordan Fungerer Autentificering med Cognito?

Amazon Cognito understøtter en række forskellige autentificeringsmetoder for at imødekomme forskellige behov:

  • Brugernavn og Kodeord: Den mest almindelige metode, hvor brugere logger ind med deres unikke brugernavn og et sikkert kodeord.
  • WebAuthn Passkeys: En moderne og sikker metode, der bruger kryptografiske nøgler i stedet for traditionelle kodeord.
  • Engangskoder (OTP): Cognito kan sende engangskoder via e-mail eller SMS som en ekstra sikkerhedsforanstaltning (Multi-Factor Authentication - MFA).
  • Lambda Triggers: Avancerede brugere kan implementere brugerdefinerede Lambda-funktioner til at orkestrere komplekse autentificeringsflows med egne udfordringer og svar.

Når en bruger autentificerer sig, verificerer Cognito deres legitimationsoplysninger og udsteder JWT-tokens. Disse tokens indeholder oplysninger om brugerens identitet og autorisationsniveau.

Autentificeringsflows

Cognito understøtter forskellige autentificeringsflows, som du kan konfigurere for dine applikationsklienter:

  • ALLOW_USER_AUTH: Tillader valgfri autentificeringstyper ved login.
  • ALLOW_USER_PASSWORD_AUTH: Tillader login med brugernavn og kodeord.
  • ALLOW_USER_SRP_AUTH: Tillader login med Secure Remote Password (SRP) protokol, som er mere sikker end direkte overførsel af kodeord.
  • ALLOW_REFRESH_TOKEN_AUTH: Tillader at hente nye tokens baseret på et gyldigt refresh token.
  • ALLOW_ADMIN_USER_PASSWORD_AUTH: Tillader server-side login med administrative legitimationsoplysninger.
  • ALLOW_CUSTOM_AUTH: Tillader brugerdefinerede autentificeringsflows via Lambda-triggere.

Disse flows kan konfigureres enten via AWS Management Console eller programmatisk via AWS SDK'er. For webapplikationer med React, som beskrevet i et eksempel, kan man integrere med Amplify UI-komponenter for en hurtig og nem opsætning af login- og registreringsformularer.

Brugeroplevelse og Token Management

AWSMobileClient, som er en del af Amplify, spiller en central rolle i at administrere applikationens sessionsstatus. Den kan forespørge brugerens login-status (f.eks. `isSignedIn` eller mere detaljeret via `currentUserState`) og reagere på ændringer. Du kan registrere lyttere for at blive underrettet om ændringer i brugerens tilstand, hvilket muliggør dynamiske brugergrænseflader. For eksempel kan du vise en login-skærm, hvis brugeren er logget ud, eller en gæstetilstand, hvis de ikke er logget ind.

Når det kommer til tokens, vil AWSMobileClient automatisk forsøge at bruge gyldige JWT-tokens fra cachen. Hvis tokens er udløbet, vil den forsøge at bruge et refresh token til at hente nye tokens. Hvis både access- og refresh-tokens er udløbet, vil klienten udløse en tilstandsnedbrydning, der indikerer, at en gen-login er nødvendig. Applikationen kan derefter håndtere dette ved at præsentere en login-skærm eller udføre brugerdefineret logik.

AWS-legitimationsoplysninger og Offline-drift

AWSMobileClient er optimeret til at håndtere overgange mellem online og offline forbindelser. Den opdaterer AWS-legitimationsoplysninger på passende tidspunkter for at undgå fejl. Det er vigtigt at bemærke, at AWSMobileClient aldrig logger en bruger ud automatisk på grund af manglende forbindelse. En eksplicit `signOut()`-kald er altid nødvendig.

For forespørgsler, der udføres offline, vil AWSMobileClient forsøge at sende dem direkte til serviceklienten, hvis tokens er gyldige. Det er udviklerens ansvar at tjekke netværksforbindelsen. Nogle klienter, som AWS AppSync, understøtter offline-operationer, hvor forespørgsler enures og sendes automatisk, når forbindelsen genoprettes, inklusiv opdatering af legitimationsoplysninger.

What is Amazon Cognito user pools?
Amazon Cognito Amazon Cognito User Pools is a full-featured user directory service to handle user registration, storage, authentication, and account recovery. Cognito User Pools returns JWT tokens to your app and does not provide temporary AWS credentials for calling authorized AWS Services.

Konfiguration af App Klienter

For at en applikation kan bruge Cognito, skal en app-klient konfigureres inden for en User Pool. Dette gøres typisk i AWS Management Console. Her kan du definere, hvilke autentificeringsflows der skal understøttes for netop denne klient. Du kan også konfigurere indstillinger som sessionens varighed for autentificeringsudfordringer og lockout-adfærd ved for mange mislykkede login-forsøg.

Lockout Adfærd

Cognito har indbygget beskyttelse mod brute-force angreb. Efter fem mislykkede login-forsøg med et kodeord, låses brugeren ude i en kort periode. Denne periode fordobles efter hvert yderligere mislykket forsøg, op til et maksimum på ca. 15 minutter. Forsøg under en lockout-periode påvirker ikke varigheden af efterfølgende lockout-perioder. Brugeren kan enten logge ind succesfuldt efter en lockout-periode eller undlade at forsøge login i 15 minutter for at nulstille lockout-tælleren.

Eksempel på Autentificeringssession

Lad os se på et typisk login-flow:

  1. Login-prompt: Applikationen viser en login-knap.
  2. Anmod om login: Brugeren klikker på knappen. Applikationen henter brugerens brugernavn fra cache eller beder om det.
  3. Anmod om muligheder: Applikationen sender en `InitiateAuth` API-anmodning med `USER_AUTH` flowet for at få de tilgængelige login-metoder for brugeren.
  4. Send muligheder: Cognito svarer med tilgængelige metoder (f.eks. PASSWORD, EMAIL_OTP, WEB_AUTHN) og en sessionsidentifikator.
  5. Indtast legitimationsoplysninger: Brugeren indtaster brugernavn og kodeord.
  6. Start autentificering: Applikationen sender en `RespondToAuthChallenge` API-anmodning med brugerens oplysninger.
  7. Validering: Cognito verificerer legitimationsoplysningerne.
  8. Yderligere udfordring (MFA): Hvis MFA er aktiveret, kan Cognito bede om en engangskode fra brugerens autentificeringsapp.
  9. Besvar udfordring: Brugeren indtaster engangskoden, og applikationen sender den i en ny `RespondToAuthChallenge` anmodning.
  10. Udsted tokens: Cognito verificerer koden og udsteder ID-, Access- og Refresh JWT-tokens.
  11. Gem tokens: Applikationen gemmer tokens i cachen.
  12. Vis indhold: Applikationen viser autoriseret indhold baseret på brugerens identitet.

Når et token udløber, kan applikationen bruge et gemt refresh token til at anmode om nye tokens uden at kræve brugerens interaktion igen.

Konklusion

Amazon Cognito User Pools er en kraftfuld og fleksibel service, der forenkler brugerstyring og autentificering i dine applikationer. Ved at integrere med værktøjer som AWS Amplify kan udviklere hurtigt implementere sikre og skalerbare brugerflader. Uanset om du bygger en simpel webapp med React eller en kompleks mobilapplikation, tilbyder Cognito de nødvendige værktøjer til at håndtere brugeridentiteter effektivt og sikkert.

Nøglefordele ved Amazon Cognito inkluderer:

  • Forenklet udvikling: Reducerer behovet for at bygge brugerstyring fra bunden.
  • Skalerbarhed: Håndterer millioner af brugere uden problemer.
  • Sikkerhed: Understøtter avancerede sikkerhedsfunktioner som MFA og sikker token-håndtering.
  • Fleksibilitet: Tilbyder forskellige autentificeringsflows og integrationsmuligheder.
  • Integration: Fungerer problemfrit med andre AWS-tjenester og udviklingsværktøjer som AWS Amplify.

Ved at udnytte Amazon Cognito kan du fokusere på at bygge kernefunktionaliteten i din applikation, mens du overlader den kritiske opgave med brugerstyring til en pålidelig og robust cloud-tjeneste.

Hvis du vil læse andre artikler, der ligner Amazon Cognito: Sikker brugerstyring til dine apps, kan du besøge kategorien Teknologi.

Go up