Autenticare gli utenti finali con Amazon Cognito

Distribuire applicazioni su AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Creare un login da zero?

  • Una nuova app richiede registrazione e accesso completi
  • Il team inizia a creare l'autenticazione da zero
  • Cognito lo offre già in modo sicuro

Scegliere l'autenticazione gestita di Amazon Cognito invece di creare un login personalizzato

Distribuire applicazioni su AWS

User pool vs identity pool

Cognito User Pool come directory utenti che emette token a sinistra, Identity Pool che scambia un token validato con credenziali AWS temporanee al centro, servizi AWS a destra

  • User pool: directory gestita degli utenti finali
  • Gestisce registrazione, accesso ed emette token
  • Identity pool: scambia un login con credenziali AWS
  • Usali insieme: prima autentica, poi autorizza l'accesso AWS
Distribuire applicazioni su AWS

I tre token di Cognito

  • ID token: chi è l'utente (claim di identità)
  • Access token: cosa può chiamare l'utente
  • Refresh token: ottieni nuovi token senza rifare il login
  • Tutti e tre sono JWT decodificabili e validabili

Tre token JWT di Cognito affiancati: ID token con claim di identità, access token con scope di permessi API, refresh token indicato come di lunga durata per rinnovo silenzioso

Distribuire applicazioni su AWS

Identità federata

  • Federazione: accesso con un identity provider esterno
  • Social: Google, Facebook, Apple
  • Enterprise: provider SAML e OIDC
  • Cognito fa da broker di fiducia ed emette i propri token

Federazione Cognito: l'utente sceglie un provider social (Google, Facebook) o enterprise SAML/OIDC, Cognito valida il login esterno ed emette i propri token standard

Distribuire applicazioni su AWS

Cognito come authorizer di API Gateway

Authorizer Cognito in API Gateway: il client invia l'header Authorization con l'access token, il gateway valida contro lo user pool prima della Lambda, token non validi respinti con 401

  • API Gateway può usare un Cognito authorizer
  • Il client invia il token nell'Authorization header
  • API Gateway valida il token prima che giri il backend
  • Token non validi o scaduti sono respinti al bordo
Distribuire applicazioni su AWS

Un tipico flusso: accesso → chiamata API

  • L'utente accede allo user pool
  • Riceve ID, access e refresh token
  • Il client chiama API Gateway con l'access token
  • L'authorizer Cognito valida, poi il backend gira

Flusso da accesso a chiamata API: l'utente accede allo user pool e riceve i token, il client invia l'access token ad API Gateway, l'authorizer Cognito lo valida, la Lambda backend esegue

Distribuire applicazioni su AWS

Errori comuni con Cognito

  • Inviare l'ID token dove serve un access token
  • Confondere user pool e identity pool
  • Provare ad autorizzare l'accesso AWS solo con lo user pool
  • Memorizzare i token in modo non sicuro sul client

Errori comuni con Cognito: inviare l'ID token a un'API invece dell'access token, confondere user pool e identity pool, e archiviare i token in modo non sicuro sul client

Distribuire applicazioni su AWS

Esercitiamoci!

Distribuire applicazioni su AWS

Preparing Video For Download...