View a markdown version of this page

Autenticazione con pool di utenti Amazon Cognito - Amazon Cognito

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Autenticazione con pool di utenti Amazon Cognito

Amazon Cognito include diversi metodi per autenticare gli utenti. Gli utenti possono accedere con password e WebAuthn passkey. Amazon Cognito può inviare loro una password monouso tramite e-mail o SMS. Puoi implementare funzioni Lambda che orchestrano la tua sequenza di sfide e risposte. Si tratta di flussi di autenticazione. Nei flussi di autenticazione, gli utenti forniscono un segreto e Amazon Cognito lo verifica, quindi emette token web JSON (JWT) per l'elaborazione delle applicazioni con le librerie OIDC. In questo capitolo, parleremo di come configurare i pool di utenti e i client di app per vari flussi di autenticazione in vari ambienti applicativi. Scoprirai le opzioni per l'uso delle pagine di accesso ospitate di Managed Login e per creare la tua logica e il tuo front-end in un AWS SDK.

Tutti i pool di utenti, a prescindere che si disponga di un dominio, possono autenticare gli utenti nell'API dei pool di utenti. Se aggiungi un dominio al pool di utenti, puoi utilizzare gli endpoint del pool di utenti. L'API dei pool di utenti supporta una vasta gamma di modelli di autorizzazione e flussi di richiesta per le richieste API.

Per verificare l'identità degli utenti, Amazon Cognito supporta flussi di autenticazione che includono tipi di sfida oltre a password come password e passkey monouso per e-mail e SMS.

Implementa flussi di autenticazione

Che tu stia implementando l'accesso gestito o un front-end per applicazioni personalizzato con un AWS SDK per l'autenticazione, devi configurare il client dell'app per i tipi di autenticazione che desideri implementare. Le seguenti informazioni descrivono la configurazione dei flussi di autenticazione nei client dell'app e nell'applicazione.

App client supported flows

Puoi configurare i flussi supportati per i tuoi client di app nella console Amazon Cognito o con l'API in un AWS SDK. Dopo aver configurato il client dell'app per supportare questi flussi, puoi distribuirli nella tua applicazione.

La procedura seguente configura i flussi di autenticazione disponibili per un client di app con la console Amazon Cognito.

Per configurare un app client per i flussi di autenticazione (console)
  1. Accedi AWS e accedi alla console dei pool di utenti di Amazon Cognito. Scegli un pool di utenti o creane uno nuovo.

  2. Nella configurazione del pool di utenti, seleziona il menu App client. Scegli un client per l'app o creane uno nuovo.

  3. In Informazioni sul client dell'app, seleziona Modifica.

  4. In Flussi dei client dell'app, scegli i flussi di autenticazione che desideri supportare.

Per configurare un app client per i flussi di autenticazione (API/SDK)

Per configurare i flussi di autenticazione disponibili per un client di app con l'API Amazon Cognito, imposta il valore di ExplicitAuthFlows in una UpdateUserPoolClient richiesta CreateUserPoolClient or. Di seguito è riportato un esempio che fornisce una password remota sicura (SRP) e un'autenticazione basata sulla scelta a un client.

"ExplicitAuthFlows": [ "ALLOW_USER_AUTH", "ALLOW_USER_SRP_AUTH ]

Quando configuri i flussi supportati dall'app client, puoi specificare le seguenti opzioni e valori API.

Supporto per il flusso dei client delle app
Flusso di autenticazione Compatibilità Console "Hello, World!"
Choice-basedautenticazione Server-side, lato client Seleziona un tipo di autenticazione al momento dell'accesso ALLOW_USER_AUTH
Sign-in con password permanenti Client-side Accedi con nome utente e password ALLOW_USER_PASSWORD_AUTH
Sign-in con password permanenti e payload sicuro Server-side, lato client Accedi con una password remota sicura (SRP) ALLOW_USER_SRP_AUTH
Aggiorna i token Server-side, lato client Ottieni nuovi token utente da sessioni autenticate esistenti ALLOW_REFRESH_TOKEN_AUTH
Server-side autenticazione Server-side Accedi con credenziali amministrative lato server ALLOW_ADMIN_USER_PASSWORD_AUTH
Autenticazione personalizzata Server-side e applicazioni personalizzate sul lato client. Non compatibile con l'accesso gestito. Accedi con flussi di autenticazione personalizzati dai trigger Lambda ALLOW_CUSTOM_AUTH
Implement flows in your application

L'accesso gestito rende automaticamente disponibili le opzioni di autenticazione configurate nelle tue sign-page. Nelle applicazioni personalizzate, avvia l'autenticazione con una dichiarazione del flusso iniziale.

Quando accedi agli utenti, il corpo della tua AdminInitiateAuth richiesta InitiateAuth o deve includere un AuthFlow parametro.

Choice-based autenticazione:

"AuthFlow": "USER_AUTH"

Client-based autenticazione con SRP:

"AuthFlow": "USER_SRP_AUTH"

Cose da sapere sull'autenticazione con pool di utenti

Considera le seguenti informazioni nella progettazione del tuo modello di autenticazione con i pool di utenti di Amazon Cognito.

Flussi di autenticazione nell'accesso gestito e nell'interfaccia utente ospitata

Accesso gestito dal pool di utentiL'accesso gestito offre più opzioni di autenticazione rispetto alla classica interfaccia utente ospitata. Ad esempio, gli utenti possono eseguire l'autenticazione senza password e con password solo nell'accesso gestito.

Flussi di autenticazione personalizzati disponibili solo nell'autenticazione SDK AWS

Non puoi eseguire flussi di autenticazione personalizzati o autenticazione personalizzata con trigger Lambda, con l'accesso gestito o la classica interfaccia utente ospitata. L'autenticazione personalizzata è disponibile nell'autenticazione con AWS SDK.

Accesso gestito per l'accesso con provider di identità esterno (IdP)

Non puoi far accedere gli utenti tramite terze parti IdPs nell'autenticazione con AWS gli SDK. È necessario implementare l'accesso gestito o la classica interfaccia utente ospitata, reindirizzare IdPs e quindi elaborare l'oggetto di autenticazione risultante con le librerie OIDC nell'applicazione. Per ulteriori informazioni sull'accesso gestito, vedere. Accesso gestito dal pool di utenti

Effetto di autenticazione senza password su altre funzionalità utente

L'attivazione dell'accesso senza password con password o passkey monouso nel pool di utenti e nel client dell'app ha un effetto sulla creazione e sulla migrazione degli utenti. Quando l'accesso senza password è attivo:

  1. Gli amministratori possono creare utenti senza password. Il modello di messaggio di invito predefinito cambia e non include più il segnaposto della {###} password. Per ulteriori informazioni, consulta Creazione di account utente come amministratore.

  2. Per SDK-based SignUp le operazioni, agli utenti non è richiesto di fornire una password al momento della registrazione. L'accesso gestito e l'interfaccia utente ospitata richiedono una password nella pagina di registrazione, anche se è consentita l'autenticazione senza password. Per ulteriori informazioni, consulta Registrazione e conferma degli account utente.

  3. Gli utenti importati da un file CSV possono accedere immediatamente con opzioni senza password, senza reimpostare la password, se i loro attributi includono un indirizzo email o un numero di telefono per un'opzione di accesso senza password disponibile. Per ulteriori informazioni, consulta Importazione di utenti nel bacino d'utenza da un file CSV.

  4. L'autenticazione senza password non richiama il trigger Lambda per la migrazione degli utenti. Trigger Lambda di migrazione utenti

  5. Gli utenti che accedono con un primo fattore OTP (Onetime Password) non possono aggiungere un fattore di autenticazione a più fattori (MFA) alla loro sessione. Le chiavi di accesso con verifica utente possono soddisfare i requisiti MFA se configurate con. MULTI_FACTOR_WITH_USER_VERIFICATION

Gli URL delle passkey relying party non possono essere presenti nell'elenco pubblico dei suffissi

Puoi utilizzare i nomi di dominio di tua proprietà, ad esempiowww.example.com, come ID del relying party (RP) nella configurazione della tua passkey. Questa configurazione è pensata per supportare applicazioni personalizzate eseguite su domini di tua proprietà. L'elenco pubblico dei suffissi, o PSL, contiene domini protetti di alto livello. Amazon Cognito restituisce un errore quando tenti di impostare l'URL RP su un dominio sul PSL.

Durata del flusso della sessione di autenticazione

A seconda delle caratteristiche del tuo pool di utenti, puoi finire per rispondere a diverse sfide RespondToAuthChallenge prima che l'app recuperi i token da Amazon Cognito. InitiateAuth Amazon Cognito include una stringa di sessione nella risposta a ciascuna richiesta. Per combinare le richieste API in un flusso di autenticazione, includere la stringa di sessione della risposta alla richiesta precedente in ogni richiesta successiva. Per impostazione predefinita, gli utenti hanno a disposizione tre minuti per completare ogni verifica prima della scadenza della stringa della sessione. Per modificare questo periodo, modificare il client dell'app Authentication flow session duration (Durata della sessione del flusso di autenticazione). La procedura seguente descrive come modificare questa impostazione nella configurazione del client dell'app.

Nota

Le impostazioni Durata della sessione del flusso di autenticazione si applicano all'autenticazione con l'API dei pool di utenti Amazon Cognito. L'accesso gestito imposta la durata della sessione a 3 minuti per l'autenticazione a più fattori e a 8 minuti per i codici di reimpostazione della password.

Amazon Cognito console
Per configurare il flusso di autenticazione del client dell'app, la durata della sessione (Console di gestione AWS)
  1. Nella scheda App integration (Integrazione app) del pool di utenti, seleziona il nome del client dell'app nel container App clients and analytics (Client di app e analisi dei dati).

  2. Scegli Modifica nel container Informazioni sul client dell'app.

  3. Modifica il valore della durata della sessione del flusso di autenticazione impostando la durata di validità desiderata, in minuti, per i codici MFA SMS ed e-mail. Ciò modifica anche il tempo che ogni utente ha a disposizione per completare qualsiasi richiesta di autenticazione nel client dell'app.

  4. Scegli Save changes (Salva modifiche).

User pools API
Configurare la durata della sessione del flusso di autenticazione del client dell'app (API Amazon Cognito)
  1. Prepara una richiesta UpdateUserPoolClient con le impostazioni di un pool di utenti esistente in base a una richiesta DescribeUserPoolClient. La richiesta UpdateUserPoolClient deve includere tutte le proprietà client dell'app esistenti.

  2. Cambia il valore del parametro AuthSessionValidity impostando la durata di validità desiderata, espressa in minuti, per i codici dell'autenticazione MFA con SMS. Ciò modifica anche il tempo che ogni utente ha a disposizione per completare qualsiasi richiesta di autenticazione nel client dell'app.

Per ulteriori informazioni sui client di app, consulta Impostazioni specifiche dell'applicazione con client di app.

Comportamento di blocco in caso di tentativi di accesso non riusciti

Dopo cinque tentativi di accesso falliti con la password di un utente, indipendentemente dal fatto che siano richiesti con operazioni non autenticate o IAM-authorized tramite API, Amazon Cognito blocca l'utente per un secondo. La durata del blocco quindi raddoppia dopo ogni ulteriore tentativo non riuscito, fino a un massimo di circa 15 minuti.

I tentativi effettuati durante un periodo di blocco generano un'eccezione Password attempts exceeded e non influiscono sulla durata dei periodi di blocco successivi. Per un numero cumulativo di tentativi di accesso non riusciti n, ad esclusione delle eccezioni Password attempts exceeded, Amazon Cognito blocca l'utente per 2^(n-5) secondi. Per ripristinare lo stato iniziale n=0 del blocco, l'utente deve effettuare un accesso riuscito dopo la scadenza del periodo di blocco oppure non deve iniziare alcun tentativo di accesso per 15 minuti consecutivi in qualsiasi momento dopo il blocco. Questo comportamento è soggetto a modifiche. Questo comportamento non si applica alle sfide personalizzate a meno che non eseguano anche l'autenticazione basata su password.

Un esempio di sessione di autenticazione

Il diagramma e la guida dettagliata seguenti illustrano uno scenario tipico in cui un utente accede a un'applicazione. L'applicazione di esempio presenta a un utente diverse opzioni di accesso. Ne selezionano una inserendo le proprie credenziali, forniscono un fattore di autenticazione aggiuntivo e accedono.

Un diagramma di flusso che mostra un'applicazione che richiede un input a un utente e lo accede con un SDK. AWS

Immagina un'applicazione con una pagina di accesso in cui gli utenti possono accedere con nome utente e password, richiedere un codice monouso in un messaggio e-mail o scegliere un'opzione di impronta digitale.

  1. Sign-in prompt: L'applicazione mostra una schermata iniziale con un pulsante di accesso.

  2. Richiedi l'accesso: l'utente seleziona Accedi. Da un cookie o da una cache, l'applicazione recupera il nome utente o richiede di inserirlo.

  3. Opzioni di richiesta: l'applicazione richiede le opzioni di accesso dell'utente con una richiesta InitiateAuth API con il USER_AUTH flusso, richiedendo i metodi di accesso disponibili per l'utente.

  4. Opzioni di accesso all'invio: Amazon Cognito risponde con,, e. PASSWORD EMAIL_OTP WEB_AUTHN La risposta include un identificatore di sessione da riprodurre nella risposta successiva.

  5. Opzioni di visualizzazione: l'applicazione mostra gli elementi dell'interfaccia utente per consentire all'utente di inserire nome utente e password, ottenere un codice monouso o scansionare l'impronta digitale.

  6. Scegli option/Enter le credenziali: l'utente inserisce nome utente e password.

  7. Avvia l'autenticazione: l'applicazione fornisce le informazioni di accesso dell'utente con una richiesta RespondToAuthChallenge API che conferma l'accesso con nome utente e password e fornisce il nome utente e la password.

  8. Convalida le credenziali: Amazon Cognito conferma le credenziali dell'utente.

  9. Sfida aggiuntiva: l'utente dispone di un'autenticazione a più fattori configurata con un'app di autenticazione. Amazon Cognito risponde a una sfida. SOFTWARE_TOKEN_MFA

  10. Richiesta di richiesta: la tua applicazione visualizza un modulo che richiede una password monouso (TOTP) basata sul tempo dall'app di autenticazione dell'utente.

  11. Risposta alla sfida: l'utente invia il TOTP.

  12. Risposta alla contestazione: in un'altra RespondToAuthChallenge richiesta, l'applicazione fornisce il TOTP dell'utente.

  13. Convalida la risposta alla sfida: Amazon Cognito conferma il codice dell'utente e determina che il pool di utenti è configurato in modo da non inviare ulteriori sfide all'utente corrente.

  14. Token di emissione: Amazon Cognito restituisce ID, accesso e aggiornamento dei token web JSON (JWT). L'autenticazione iniziale dell'utente è completa.

  15. Archivia token: l'applicazione memorizza nella cache i token dell'utente in modo che possa fare riferimento ai dati dell'utente, autorizzare l'accesso alle risorse e aggiornare i token quando scadono.

  16. Rendering di contenuti autorizzati: l'applicazione determina l'accesso dell'utente alle risorse in base alla sua identità e ai suoi ruoli e fornisce il contenuto dell'applicazione.

  17. Accesso ai contenuti: l'utente ha effettuato l'accesso e inizia a utilizzare l'applicazione.

  18. Richiesta di contenuti con token scaduto: successivamente, l'utente richiede una risorsa che richiede l'autorizzazione. Il token memorizzato nella cache dell'utente è scaduto.

  19. Token di aggiornamento: l'applicazione effettua una InitiateAuth richiesta con il token di aggiornamento salvato dall'utente.

  20. Token di emissione: Amazon Cognito restituisce un nuovo ID e accede ai JWT. La sessione dell'utente viene aggiornata in modo sicuro senza ulteriori richieste di credenziali.

Puoi utilizzare i AWS Lambda trigger per personalizzare il modo in cui gli utenti si autenticano. Questi trigger generano e verificano le proprie richieste come parte del flusso di autenticazione.

Inoltre puoi utilizzare il flusso di autenticazione amministratore per server back-end protetti. Puoi utilizzare il flusso di autenticazione della migrazione degli utenti per rendere possibile la migrazione degli utenti senza che gli utenti debbano reimpostare le proprie password.