Autentificarea utilizatorilor cu Amazon Cognito

Implementarea aplicațiilor pe AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Construiești propriul login?

  • O aplicație nouă necesită înregistrare și autentificare
  • Echipa începe să construiască auth de la zero
  • Cognito face deja asta în mod sigur

Alegerea autentificării gestionate Amazon Cognito în locul unui login personalizat

Implementarea aplicațiilor pe AWS

User pools vs identity pools

User Pool Cognito ca director de utilizatori care emite tokeni (stânga), Identity Pool care schimbă un token validat pentru credențiale AWS temporare (centru), servicii AWS (dreapta)

  • User pool: director gestionat de utilizatori finali
  • Gestionează înregistrarea, autentificarea și emite tokeni
  • Identity pool: schimbă un login pe credențiale AWS
  • Folosiți-le împreună: autentifică, apoi autorizează accesul AWS
Implementarea aplicațiilor pe AWS

Cei trei tokeni Cognito

  • ID token: identitatea utilizatorului (claims de identitate)
  • Access token: ce poate apela utilizatorul
  • Refresh token: obține tokeni noi fără re-autentificare
  • Toți trei sunt JWT pe care îi poți decoda și valida

Trei tokeni JWT Cognito alăturați: ID token cu claims de identitate, access token cu scopuri de permisiuni API, refresh token marcat ca long-lived pentru reînnoire silențioasă

Implementarea aplicațiilor pe AWS

Identitate federată

  • Federație: autentificare printr-un furnizor extern de identitate
  • Social: Google, Facebook, Apple
  • Enterprise: furnizori SAML și OIDC
  • Cognito gestionează încrederea și emite propriii tokeni

Federație Cognito: utilizatorul alege un furnizor social (Google, Facebook) sau enterprise SAML/OIDC, Cognito validează loginul extern și emite propriii tokeni standard

Implementarea aplicațiilor pe AWS

Cognito ca autorizator API Gateway

Autorizator Cognito pentru API Gateway: clientul trimite header-ul Authorization cu access token, gateway-ul validează față de user pool înainte ca Lambda să ruleze, tokenii invalizi sunt respinși cu 401

  • API Gateway poate folosi un autorizator Cognito
  • Clientul trimite tokenul în header-ul Authorization
  • API Gateway validează tokenul înainte ca backend-ul să ruleze
  • Tokenii invalizi sau expirați sunt respinși la margine
Implementarea aplicațiilor pe AWS

Flux tipic: de la autentificare la apel API

  • Utilizatorul se autentifică în user pool
  • Primește tokeni ID, access și refresh
  • Clientul apelează API Gateway cu access token
  • Autorizatorul Cognito validează, apoi rulează backend-ul

Flux de la autentificare la apel API: utilizatorul se autentifică în user pool și primește tokeni, clientul trimite access token la API Gateway, autorizatorul Cognito îl validează, Lambda rulează

Implementarea aplicațiilor pe AWS

Greșeli frecvente Cognito

  • Trimiterea ID token acolo unde este necesar access token
  • Confundarea user pool cu identity pool
  • Încercarea de a autoriza accesul AWS doar cu user pool
  • Stocarea nesigură a tokenilor pe client

Greșeli frecvente Cognito: trimiterea ID token la un API în loc de access token, confundarea user pool cu identity pool și stocarea nesigură a tokenilor pe client

Implementarea aplicațiilor pe AWS

Hai să exersăm!

Implementarea aplicațiilor pe AWS

Preparing Video For Download...