View a markdown version of this page

Gestisci i metodi di autenticazione in AWS SDK - 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à.

Gestisci i metodi di autenticazione in AWS SDK

Gli utenti dei pool di utenti di Amazon Cognito possono accedere con una varietà di opzioni o fattori di accesso iniziali. Per alcuni fattori, gli utenti possono seguire l'autenticazione a più fattori (MFA). Questi primi fattori includono nome utente e password, password monouso, passkey e autenticazione personalizzata. Per ulteriori informazioni, consulta Flusso di autenticazione. Se l'applicazione dispone di componenti dell'interfaccia utente integrati e importa un modulo AWS SDK, è necessario creare una logica applicativa per l'autenticazione. È necessario scegliere uno dei due metodi principali e, tra tale metodo, i meccanismi di autenticazione che si desidera implementare.

È possibile implementare l'autenticazione basata su client laddove l'applicazione o il client dichiari in anticipo il tipo di autenticazione. L'altra opzione è l'autenticazione basata sulla scelta, in cui l'app raccoglie un nome utente e richiede i tipi di autenticazione disponibili per gli utenti. Puoi implementare questi modelli insieme nella stessa applicazione o suddividerli tra i client dell'app, in base alle tue esigenze. Ogni metodo ha caratteristiche uniche, ad esempio l'autenticazione personalizzata in modalità client e l'autenticazione senza password in quella basata sulla scelta.

Nelle applicazioni personalizzate che eseguono l'autenticazione con l'implementazione AWS SDK dell'API dei pool di utenti, è necessario strutturare le richieste API in modo da allinearle alla configurazione del pool di utenti, alla configurazione del client dell'app e alle preferenze lato client. Una InitiateAuth sessione che inizia con un of inizia l'autenticazione basata sulla scelta. AuthFlow USER_AUTH Amazon Cognito risponde alla tua API proponendo un metodo di autenticazione preferito o un elenco di scelte. Una sessione che inizia con AuthFlow o CUSTOM_AUTH passa direttamente all'autenticazione personalizzata con trigger Lambda.

Alcuni metodi di autenticazione sono limitati a uno dei due tipi di flusso e alcuni metodi sono disponibili in entrambi.

Choice-based authentication

L'applicazione può richiedere i seguenti metodi di autenticazione nell'autenticazione basata sulla scelta. Dichiara queste opzioni nel PREFERRED_CHALLENGE parametro di InitiateAutho o AdminInitiateAuthnel parametro di o. ChallengeName RespondToAuthChallengeAdminRespondToAuthChallenge

Importante

Choice-based l'accesso ha due prerequisiti. Il client dell'app deve attivare il flusso di ALLOW_USER_AUTH autenticazione e i metodi senza password e passkey (EMAIL_OTP,SMS_OTP,WEB_AUTHN) richiedono un pool di utenti con il piano di funzionalità Essentials o Plus, poiché non sono disponibili nel livello Lite. PASSWORD(incluso SRP) è disponibile in tutti i piani di funzionalità. Se agli utenti non viene visualizzato un metodo basato sulla scelta, conferma sia il flusso tra app e client che il piano delle funzionalità prima di procedere con la risoluzione dei problemi.

Per esaminare queste opzioni nel loro contesto API, consulta in. ChallengeName RespondToAuthChallenge

Choice-based l'accesso presenta una sfida in risposta alla tua richiesta iniziale. Questa sfida verifica che l'opzione richiesta sia disponibile o fornisce un elenco di scelte disponibili. L'applicazione può mostrare queste scelte agli utenti, che quindi inseriscono le credenziali per il metodo di accesso preferito e procedono con l'autenticazione nelle risposte alla sfida.

Nel flusso di autenticazione sono disponibili le seguenti opzioni basate sulla scelta. Tutte le richieste di questo tipo richiedono che l'app raccolga prima un nome utente o lo recuperi da una cache.

  1. Richiedi opzioni USERNAME solo con AuthParameters of. Amazon Cognito restituisce una SELECT_CHALLENGE sfida. Da lì, l'applicazione può richiedere all'utente di selezionare una sfida e restituire questa risposta al tuo pool di utenti.

  2. Richiedi una sfida preferita con AuthParameters of PREFERRED_CHALLENGE e i parametri della tua sfida preferita, se presenti. Ad esempio, se richiedi una PREFERRED_CHALLENGE diPASSWORD_SRP, devi includere ancheSRP_A. Se l'utente, il pool di utenti e il client dell'app sono tutti configurati per la sfida preferita, Amazon Cognito risponde con la fase successiva di tale sfida, ad esempio PASSWORD_VERIFIER nel PASSWORD_SRP flusso o CodeDeliveryDetailsnei flussi and. EMAIL_OTP SMS_OTP Se la sfida preferita non è disponibile, Amazon Cognito risponde con SELECT_CHALLENGE un elenco di sfide disponibili.

  3. Effettua prima l'accesso degli utenti, quindi richiedi le opzioni di autenticazione in base alla loro scelta. Una GetUserAuthFactorsrichiesta con il token di accesso di un utente che ha effettuato l'accesso restituisce i fattori di autenticazione basati sulla scelta disponibili e le relative impostazioni MFA. Con questa opzione, un utente può accedere prima con nome utente e password, quindi attivare una diversa forma di autenticazione. Puoi anche utilizzare questa operazione per verificare le opzioni aggiuntive per un utente che ha effettuato l'accesso con una sfida preferita.

Per configurare il client dell'app per l'autenticazione basata sulla scelta, aggiungilo ALLOW_USER_AUTH ai flussi di autenticazione consentiti. È inoltre necessario scegliere i fattori basati sulla scelta che si desidera consentire nella configurazione del pool di utenti. Il processo seguente illustra come scegliere i fattori di autenticazione basati sulla scelta.

Amazon Cognito console
Per configurare le opzioni di autenticazione basate sulla scelta in un pool di utenti
  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 Sign-inmenu. Individua Opzioni per l'accesso basato sulla scelta e scegli Modifica.

  3. L'opzione Password è sempre disponibile. Ciò include i PASSWORD_SRP flussi PASSWORD e. Seleziona le scelte aggiuntive che desideri aggiungere alle opzioni degli utenti. È possibile aggiungere una Passkey perWEB_AUTHN, una password monouso per un messaggio di posta elettronica e una password monouso per EMAIL_OTP un messaggio SMS. SMS_OTP

  4. Scegli Save changes (Salva modifiche).

API/SDK

Il seguente corpo parziale CreateUserPoolo di UpdateUserPoolrichiesta configura tutte le opzioni disponibili per l'autenticazione basata sulla scelta.

"Policies": { "SignInPolicy": { "AllowedFirstAuthFactors": [ "PASSWORD", "WEB_AUTHN", "EMAIL_OTP", "SMS_OTP" ] } },

Client-based authentication

Client-based l'autenticazione supporta i seguenti flussi di autenticazione. Dichiara queste opzioni nel AuthFlow parametro InitiateAutho AdminInitiateAuth.

  1. USER_PASSWORD_AUTH e ADMIN_USER_PASSWORD_AUTH

    Sign-in con password persistenti

    MFA dopo l'accesso

    Questo flusso di autenticazione è equivalente PASSWORD all'autenticazione basata sulla scelta.

  2. USER_SRP_AUTH

    Sign-in con password persistenti e payload sicuro

    MFA dopo l'accesso

    Questo flusso di autenticazione è equivalente all'PASSWORD_SRPautenticazione basata sulla scelta.

  3. REFRESH_TOKEN_AUTH

    Aggiorna i token

    Questo flusso di autenticazione è disponibile solo nell'autenticazione basata sul client.

  4. CUSTOM_AUTH

    Autenticazione personalizzata

    Questo flusso di autenticazione è disponibile solo nell'autenticazione basata su client.

Con l'autenticazione basata su client, Amazon Cognito presuppone che tu abbia determinato in che modo l'utente desidera autenticarsi prima di iniziare i flussi di autenticazione. La logica di determinazione del fattore di accesso che un utente desidera fornire deve essere determinata con impostazioni predefinite o istruzioni personalizzate, quindi dichiarata nella prima richiesta al tuo pool di utenti. La InitiateAuth richiesta dichiara un accesso AuthFlow che corrisponde direttamente a una delle opzioni elencate, ad esempio. USER_SRP_AUTH Con questa dichiarazione, la richiesta include anche i parametri per iniziare l'autenticazione, ad esempio USERNAMESECRET_HASH, e. SRP_A Amazon Cognito potrebbe dare seguito a questa richiesta con ulteriori sfide, come l'SRP o PASSWORD_VERIFIER l'accesso tramite password con SOFTWARE_TOKEN_MFA TOTP MFA.

Per configurare il client dell'app per l'autenticazione basata su client, aggiungi qualsiasi flusso di autenticazione diverso ALLOW_USER_AUTH dai flussi di autenticazione consentiti. Alcuni esempi sono ALLOW_USER_PASSWORD_AUTHALLOW_CUSTOM_AUTH,ALLOW_REFRESH_TOKEN_AUTH. Per consentire i flussi di autenticazione basati sul client, non è richiesta alcuna configurazione aggiuntiva del pool di utenti.

Step-up autenticazione con il flusso USER_AUTH

Richiedete l'autenticazione avanzata nel USER_AUTH flusso esistente con le operazioni and. InitiateAuthRespondToAuthChallenge Non ci sono nuove operazioni API. Le operazioni lato server corrispondenti supportano gli stessi parametri AdminInitiateAuthe comportamenti di step-up e AdminInitiateAuth possono anche AdminRespondToAuthChallenge, facoltativamente, utilizzare un token di accesso. Questo flusso funziona sia quando un utente dispone di un token ID esistente sia quando un utente si autentica verso un livello target per la prima volta. Per ulteriori informazioni sul flusso, consulta. Un esempio di sessione di autenticazione

Per ulteriori informazioni sui livelli ACR e sui valori AMR, vedere. Livelli di autenticazione con attestazioni ACR e AMR

Nota

Step-up l'autenticazione richiede il piano di funzionalità Essentials o Plus.

Passate i parametri step-up nella AuthParameters mappa della vostra InitiateAuth (oAdminInitiateAuth) richiesta: la nuova TARGET_ACR_VALUES eMAX_AGE, insieme a quella esistenteUSERNAME, ACCESS_TOKEN e. PREFERRED_CHALLENGE Per la definizione e i vincoli di ogni parametro, consulta InitiateAuthe AdminInitiateAuthnell'API Reference dei pool di utenti di Amazon Cognito.

La tabella seguente descrive come Amazon Cognito risponde alle combinazioni di questi parametri.

Comportamento di autenticazione avanzato USER_AUTH
Parameters Comportamento
TARGET_ACR_VALUESeACCESS_TOKEN, con MAX_AGE soddisfazione Amazon Cognito consente all'utente di passare dai fattori correnti del token al livello di priorità soddisfacibile con la massima priorità.
TARGET_ACR_VALUESeACCESS_TOKEN, con «non soddisfatto» MAX_AGE Amazon Cognito autentica l'utente da zero verso il livello target.
TARGET_ACR_VALUESsenza ACCESS_TOKEN Amazon Cognito autentica l'utente da zero verso il livello target.
Nessuno dei due parametri Il USER_AUTH flusso si comporta come se non fosse necessaria l'autenticazione avanzata.

Tieni presente il seguente comportamento quando progetti un flusso di autenticazione graduale.

  • Step-up l'autenticazione è tutto o niente. Se il raggiungimento del livello obiettivo richiede più sfide, ad esempio una password e un TOTP per il livello 4, e l'utente fallisce qualsiasi sfida, il tentativo di avanzamento fallisce completamente. Amazon Cognito non emette token intermedi.

  • Se il token presentato soddisfa o supera già il livello richiesto, Amazon Cognito restituisce un errore invece di emettere un nuovo token. Ciò impedisce alle applicazioni di utilizzare l'autenticazione step-up come meccanismo di aggiornamento dei token.

  • L'utente deve già disporre dei fattori per soddisfare il livello richiesto. Se l'utente non ha configurato alcun fattore per soddisfare il livello obiettivo richiesto, Amazon Cognito restituisce un errore. Step-upl'autenticazione non richiede all'utente di impostare nuovi fattori.

  • L'MFA è un pavimento. Se le impostazioni MFA dell'utente o del pool di utenti richiedono l'autenticazione MFA, l'accesso iniziale applica e richiede la verifica MFA anche quando il livello di destinazione è inferiore e altrimenti non richiederebbe l'MFA. L'MFA richiesta dalla protezione dalle minacce (funzionalità di sicurezza avanzate) viene applicata anche all'accesso iniziale, anche quando il livello ACR di destinazione richiesto non richiederebbe altrimenti l'MFA. TARGET_ACR_VALUESnon può sopprimere un prompt MFA richiesto. Al massimo, l'obiettivo può influenzare quale dei diversi fattori MFA abilitati richiede Amazon Cognito. Se una richiesta step-up si rivolge a un livello inferiore, ad esempio il livello 1, per un utente che deve utilizzare l'MFA, Amazon Cognito applica silenziosamente l'MFA richiesta. Migliora l'utente e non restituisce alcun errore.

La richiesta di autenticazione avanzata TARGET_ACR_VALUES richiede il piano di funzionalità Essentials o Plus. Per ulteriori informazioni, consulta Requisiti del piano di funzionalità.