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 le applicazioni da elaborare con le librerie OIDC. Questo capitolo descrive come configurare i pool di utenti e i client delle app per vari flussi di autenticazione in vari ambienti applicativi. Descrive le opzioni per l'uso delle pagine di accesso ospitate di Managed Login e per la creazione di una logica e di un front-end personalizzati 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 incorporano tipi di sfida oltre a password come e-mail e SMS, password monouso e passkey.

Prima di configurare i dettagli, scegli l'approccio di autenticazione adatto alla tua applicazione. Il seguente aiuto decisionale riassume i due punti di ingresso e, all'interno di un'applicazione personalizzata, i due flussi di accesso iniziali. Ogni opzione si collega alla relativa sezione dettagliata.

Vuoi che Amazon Cognito ospiti le pagine di accesso o crei il tuo front-end?

Se desideri il percorso con il minor sforzo possibile, utilizza l'accesso gestito. Amazon Cognito ospita le pagine di accesso, disconnessione e reimpostazione della password e l'applicazione elabora il risultato con una libreria relying-party OpenID Connect (OIDC). L'accesso gestito presenta automaticamente i metodi di autenticazione consentiti dal pool di utenti e dalla configurazione del client dell'app.

Se desideri creare la tua interfaccia utente e controllare la logica di accesso, usa un AWS SDK. La tua applicazione chiama direttamente l'API dei pool di utenti e tu implementi la logica challenge-response.

In un'applicazione personalizzata, raccogli il metodo di accesso dall'utente o lo dichiari in anticipo?

Scegli l'autenticazione basata sulla scelta (il USER_AUTH flusso) quando desideri offrire agli utenti un elenco di metodi di accesso disponibili e consentire loro di selezionarne uno. Questo flusso è l'unico modo per offrire l'accesso senza password e password.

Scegli l'autenticazione basata sul client quando l'applicazione sa già come l'utente accederà e dichiara il flusso in anticipo, ad esempio. USER_SRP_AUTH Client-basedl'autenticazione è l'unico modo per utilizzare l'autenticazione personalizzata e i flussi di token di aggiornamento.

Prerequisiti per l'autenticazione basata sulla scelta

Choice-based l'autenticazione si applica sia all'accesso gestito che agli SDK. AWS Per utilizzarla, aggiungila ALLOW_USER_AUTH ai flussi di autenticazione consentiti del client dell'app. I metodi senza password e passkey richiedono inoltre un dominio di accesso gestito e un piano di funzionalità superiore al livello Lite (Essentials o Plus).

Un esempio di sessione di autenticazione

Il diagramma seguente e la guida dettagliata illustrano uno scenario tipico in cui un utente accede a un'applicazione. L'applicazione di esempio presenta all'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 all'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 chiede loro 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. Invia opzioni di accesso: Amazon Cognito risponde PASSWORD conEMAIL_OTP, e. 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 che consentono 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 delle 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 restituisce una SOFTWARE_TOKEN_MFA sfida.

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

  11. Sfida di risposta: l'utente invia il TOTP.

  12. Rispondi alla sfida: 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 per non inviare ulteriori sfide all'utente corrente.

  14. Emissione di token: Amazon Cognito restituisce ID, accede e aggiorna i 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. Esegui il rendering dei 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. Richiedi 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. Emetti token: Amazon Cognito restituisce un nuovo ID e accede a JWT. La sessione dell'utente viene aggiornata in modo sicuro senza ulteriori richieste di credenziali.

È possibile utilizzare i AWS Lambda trigger per personalizzare il modo in cui gli utenti effettuano l'autenticazione. Questi trigger generano e verificano le proprie richieste come parte del flusso di autenticazione.

Puoi anche utilizzare il flusso di autenticazione amministrativa per server back-end sicuri. Puoi utilizzare il flusso di autenticazione della migrazione degli utenti per rendere possibile la migrazione degli utenti senza richiedere agli utenti di reimpostare le proprie password.