

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
<a name="authentication"></a>

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 (JWTs) per le applicazioni da elaborare con le librerie OIDC. In questo capitolo, parleremo di come configurare i pool di utenti e i client delle 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](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html). 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.

**Topics**
+ [Implementa flussi di autenticazione](#authentication-implement)
+ [Cose da sapere sull'autenticazione con pool di utenti](#authentication-flow-things-to-know)
+ [Un esempio di sessione di autenticazione](#amazon-cognito-user-pools-authentication-flow)
+ [Configura i metodi di autenticazione per l'accesso gestito](authentication-flows-selection-managedlogin.md)
+ [Gestisci i metodi di autenticazione in AWS SDKs](authentication-flows-selection-sdk.md)
+ [Flusso di autenticazione](amazon-cognito-user-pools-authentication-flow-methods.md)
+ [Modelli di autorizzazione per l'autenticazione tramite API e SDK](authentication-flows-public-server-side.md)

## Implementa flussi di autenticazione
<a name="authentication-implement"></a>

Che tu stia implementando l'[accesso gestito](authentication-flows-selection-managedlogin.md) o un [front-end applicativo personalizzato](authentication-flows-selection-sdk.md) 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](user-pool-settings-client-apps.md) e nell'applicazione.

------
#### [ App client supported flows ]

Puoi configurare i flussi supportati per i client delle tue 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 nell'applicazione.

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

**Per configurare un client di app per i flussi di autenticazione (console)**

1. Accedi AWS e accedi alla console dei [pool di utenti di Amazon Cognito](https://console.aws.amazon.com/cognito/v2/idp). Scegli un pool di utenti o creane uno nuovo.

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

1. In **Informazioni sul client dell'app**, seleziona **Modifica**.

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

**Per configurare un client di app 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 a [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-ExplicitAuthFlows)or [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html#CognitoUserPools-UpdateUserPoolClient-request-ExplicitAuthFlows)request. Di seguito è riportato un esempio che fornisce una password remota sicura (SRP) e l'autenticazione basata sulla scelta a un client.

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

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


**Supporto per il flusso dei client dell'app**  

| Flusso di autenticazione | Compatibilità | Console | "Hello, World\$1"  | 
| --- | --- | --- | --- | 
| [Autenticazione basata sulla scelta](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) | Lato server, lato client | Seleziona un tipo di autenticazione al momento dell'accesso | ALLOW\$1USER\$1AUTH | 
| [Accedi con password persistenti](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) | Lato client | Accedi con nome utente e password | ALLOW\$1USER\$1PASSWORD\$1AUTH | 
| [Accedi con password persistenti e payload sicuro](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp) | Lato server, lato client | Accedi con una password remota sicura (SRP) | ALLOW\$1USER\$1SRP\$1AUTH | 
| [Aggiorna i token](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh) | Lato server, lato client | Ottieni nuovi token utente dalle sessioni autenticate esistenti | ALLOW\$1REFRESH\$1TOKEN\$1AUTH | 
| [Autenticazione lato server](authentication-flows-public-server-side.md#amazon-cognito-user-pools-server-side-authentication-flow) | Lato server | Accedi con credenziali amministrative lato server | ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH | 
| [Autenticazione personalizzata](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom) | Applicazioni personalizzate lato server e lato client. Non compatibile con l'accesso gestito. | Accedi con flussi di autenticazione personalizzati dai trigger Lambda | ALLOW\$1CUSTOM\$1AUTH | 

------
#### [ Implement flows in your application ]

L'accesso gestito rende automaticamente disponibili le opzioni di autenticazione configurate nelle pagine di segnalazione. Nelle applicazioni personalizzate, avvia l'autenticazione con una dichiarazione del flusso iniziale.
+ Per scegliere da un elenco di opzioni di flusso per un utente, dichiara l'[autenticazione basata sulla scelta](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) con il flusso. `USER_AUTH` [[Questo flusso dispone di metodi di autenticazione che non sono disponibili nei flussi di autenticazione basati su client, ad esempio l'autenticazione con chiave di accesso e l'autenticazione senza password.](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey)
+ Per scegliere in anticipo il flusso di autenticazione, dichiara l'[autenticazione basata sul client](authentication-flows-selection-sdk.md#authentication-flows-selection-client) con qualsiasi altro flusso disponibile nel client dell'app.

Quando effettui l'accesso degli utenti, il corpo della richiesta [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)o della [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)richiesta deve includere un `AuthFlow` parametro.

Autenticazione basata sulla scelta:

```
"AuthFlow": "USER_AUTH"
```

Autenticazione basata su client con SRP:

```
"AuthFlow": "USER_SRP_AUTH"
```

------

## Cose da sapere sull'autenticazione con pool di utenti
<a name="authentication-flow-things-to-know"></a>

Prendi in considerazione 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**  
L'[accesso gestito](cognito-user-pools-managed-login.md) offre più opzioni di autenticazione rispetto alla classica interfaccia utente ospitata. Ad esempio, gli utenti possono eseguire l'autenticazione senza password e con chiave di accesso solo nell'accesso gestito.

**I flussi di autenticazione personalizzati sono disponibili solo nell'autenticazione SDK AWS **  
Non puoi eseguire *flussi di autenticazione personalizzati* o [autenticazioni personalizzate con trigger Lambda](user-pool-lambda-challenge.md), con l'accesso gestito o la classica interfaccia utente ospitata. L'autenticazione personalizzata è disponibile nell'[autenticazione](authentication-flows-selection-sdk.md) con. AWS SDKs

**Accesso gestito per l'accesso con provider di identità esterno (IdP)**  
Non puoi far accedere gli utenti tramite l'[autenticazione](authentication-flows-selection-sdk.md) [di terze parti IdPs](cognito-user-pools-identity-federation.md) con. AWS SDKs È 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](cognito-user-pools-managed-login.md)

**Effetto dell'autenticazione senza password su altre funzionalità utente**  
L'attivazione dell'accesso senza password con [password o [passkey](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) monouso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) 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 viene modificato e non include più il segnaposto per la `{###}` password. Per ulteriori informazioni, consulta [Creazione di account utente come amministratore](how-to-create-user-accounts.md).

1. Per [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)le operazioni basate su SDK, gli utenti non sono tenuti a 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](signing-up-users-in-your-app.md).

1. 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 e-mail 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](cognito-user-pools-using-import-tool.md).

1. L'autenticazione senza password non richiama il trigger [Lambda per la migrazione degli utenti](user-pool-lambda-migrate-user.md).

1. Gli utenti che accedono con una password monouso (OTP) non possono aggiungere un fattore di [autenticazione a più fattori (MFA)](user-pool-settings-mfa.md) alla loro sessione. Le passkey con verifica utente possono soddisfare i requisiti MFA se configurate con. `MULTI_FACTOR_WITH_USER_VERIFICATION`

**La parte che si basa su Passkey non URLs può essere inclusa nell'elenco pubblico dei suffissi**  
Puoi usare nomi di dominio di tua proprietà, ad esempio`www.example.com`, come ID relying party (RP) nella configurazione della tua passkey. Questa configurazione è pensata per supportare applicazioni personalizzate che vengono eseguite su domini di tua proprietà. L'[elenco dei suffissi pubblici](https://publicsuffix.org/), o PSL, contiene domini di alto livello protetti. Amazon Cognito restituisce un errore quando tenti di impostare l'URL RP su un dominio su PSL.

**Topics**
+ [Durata del flusso della sessione di autenticazione](#authentication-flow-session-duration)
+ [Comportamento di blocco in caso di tentativi di accesso non riusciti](#authentication-flow-lockout-behavior)

### Durata del flusso della sessione di autenticazione
<a name="authentication-flow-session-duration"></a>

A seconda delle funzionalità del tuo pool di utenti, puoi finire per rispondere a diverse sfide `RespondToAuthChallenge` prima `InitiateAuth` e prima che l'app recuperi i token da Amazon Cognito. 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 ]

**Configurare la durata della sessione del flusso di autenticazione dell'app client (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).

1. Scegli **Modifica** nel container **Informazioni sul client dell'app**.

1. Modifica il valore della **durata della sessione del flusso di autenticazione** sulla 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.

1. 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.

1. 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](user-pool-settings-client-apps.md).

### Comportamento di blocco in caso di tentativi di accesso non riusciti
<a name="authentication-flow-lockout-behavior"></a>

Dopo cinque tentativi di accesso falliti con la password di un utente, indipendentemente dal fatto che vengano richiesti con operazioni API non autenticate o autorizzate da IAM, 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
<a name="amazon-cognito-user-pools-authentication-flow"></a>

Il diagramma e la step-by-step guida 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 all'utente e lo accede con un SDK. AWS\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/authentication-api-userauth.png)


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. **Richiesta di accesso***: l'applicazione mostra una schermata iniziale con un pulsante di accesso.*

1. **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.

1. **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.

1. **Invia opzioni di accesso**: Amazon Cognito risponde `PASSWORD` con`EMAIL_OTP`, e. `WEB_AUTHN` La risposta include un identificatore di sessione da riprodurre nella risposta successiva.

1. **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.

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

1. **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.

1. **Convalida delle credenziali**: Amazon Cognito conferma le credenziali dell'utente.

1. **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.

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

1. **Sfida di risposta:** l'utente invia il TOTP.

1. **Rispondi alla sfida**: in un'altra `RespondToAuthChallenge` richiesta, l'applicazione fornisce il TOTP dell'utente.

1. **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.

1. **Emissione di token**: Amazon Cognito restituisce ID, accede e aggiorna i token web JSON (). JWTs L'autenticazione iniziale dell'utente è completa.

1. **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.

1. 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.

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

1. **Richiedi contenuti con token scaduto**: Successivamente, l'utente richiede una risorsa che richiede l'autorizzazione. Il token memorizzato nella cache dell'utente è scaduto.

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

1. **Emissione di token**: Amazon Cognito restituisce un nuovo ID e un nuovo accesso. JWTs La sessione dell'utente viene aggiornata in modo sicuro senza ulteriori richieste di credenziali.

È possibile utilizzare i [AWS Lambda trigger](cognito-user-pools-working-with-lambda-triggers.md) 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.

Inoltre puoi utilizzare il flusso di autenticazione amministratore per server back-end protetti. Puoi utilizzare il [flusso di autenticazione della migrazione degli utenti](cognito-user-pools-using-import-tool.md) per rendere possibile la migrazione degli utenti senza richiedere agli utenti di reimpostare le proprie password.

# Configura i metodi di autenticazione per l'accesso gestito
<a name="authentication-flows-selection-managedlogin"></a>

È possibile richiamare [pagine di accesso gestite](cognito-user-pools-managed-login.md), un front-end web per l'autenticazione del pool di utenti, quando si desidera che gli utenti accedano, si disconnettano o reimpostino la password. In questo modello, l'applicazione importa le librerie OIDC per elaborare i tentativi di autenticazione basati su browser con pagine di accesso gestite da pool di utenti. Le forme di autenticazione disponibili per gli utenti dipendono dalla configurazione del pool di utenti e del client dell'app. Implementa il `ALLOW_USER_AUTH` flusso nel client dell'app e Amazon Cognito richiede agli utenti di selezionare un metodo di accesso tra le opzioni disponibili. Implementa `ALLOW_USER_PASSWORD_AUTH` e assegna un provider SAML e le tue pagine di accesso richiedono agli utenti la possibilità di inserire nome utente e password o di connettersi con il proprio IdP.

La console dei pool di utenti di Amazon Cognito può aiutarti a configurare l'autenticazione di accesso gestita per la tua applicazione. Quando crei un nuovo pool di utenti, specifica la piattaforma per cui stai sviluppando e la console ti fornisce esempi di implementazione di OIDC e OAuth librerie con codice iniziale per implementare i flussi di accesso e disconnessione. Puoi creare un accesso gestito con molte implementazioni di relying-party OIDC. Ti consigliamo di utilizzare librerie relying party [OIDC certificate](https://openid.net/developers/certified-openid-connect-implementations/), ove possibile. Per ulteriori informazioni, consulta [Nozioni di base sui bacini d'utenza](getting-started-user-pools.md).

In genere, le librerie relying party OIDC controllano periodicamente l'endpoint del pool di utenti per determinare l'emittente, ad esempio l'`.well-known/openid-configuration`endpoint del token e l'endpoint di autorizzazione. URLs Come best practice, implementate questo comportamento di rilevamento automatico laddove sia possibile farlo. La configurazione manuale degli endpoint dell'emittente presenta un potenziale di errore. Ad esempio, è possibile modificare il dominio del pool di utenti. Il percorso verso `openid-configuration` non è collegato al dominio del pool di utenti, quindi le applicazioni che utilizzano gli endpoint del servizio di individuazione automatica rileveranno automaticamente la modifica del dominio.

## Impostazioni del pool di utenti per l'accesso gestito
<a name="authentication-flows-selection-managedlogin-settings"></a>

Potresti voler consentire l'accesso con più provider per la tua applicazione oppure potresti voler utilizzare Amazon Cognito come directory utente indipendente. Potresti anche voler raccogliere gli attributi utente, configurare e richiedere l'MFA o richiedere gli indirizzi e-mail come nomi utente. Non puoi modificare direttamente i campi nell'accesso gestito e nell'interfaccia utente ospitata. Al contrario, la configurazione del pool di utenti imposta automaticamente la gestione dei flussi di autenticazione di accesso gestito.

I seguenti elementi di configurazione del pool di utenti determinano i metodi di autenticazione che Amazon Cognito presenta agli utenti nell'accesso gestito e nell'interfaccia utente ospitata.

------
#### [ User pool options (Sign-in menu) ]

Le seguenti opzioni si trovano nel menu di **accesso** di un pool di utenti nella console Amazon Cognito.

**Opzioni di accesso al pool di utenti Cognito**  
Ha opzioni per i nomi utente. L'accesso gestito e le pagine dell'interfaccia utente ospitate accettano solo nomi utente nei formati selezionati. Quando, ad esempio, configuri un pool di utenti con **Email** come unica opzione di accesso, le pagine di accesso gestite accettano solo nomi utente in formato e-mail.

**Attributi obbligatori**  
Quando imposti un attributo come obbligatorio nel tuo pool di utenti, l'accesso gestito richiede agli utenti un valore per quell'attributo al momento della registrazione.

**Opzioni per l’accesso basato sulla scelta**  
Dispone di impostazioni per i metodi di autenticazione in. [Autenticazione basata sulla scelta](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) Qui puoi attivare o disattivare metodi di autenticazione come [passkey e [passwordless](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey). **Questi metodi sono disponibili solo per i pool di utenti con [domini di accesso gestiti](managed-login-branding.md) e [piani di funzionalità](cognito-sign-in-feature-plans.md) superiori al livello Lite.**

**Autenticazione a più fattori**  
L'accesso gestito e l'interfaccia utente ospitata gestiscono le operazioni di registrazione e autenticazione per l'[MFA](user-pool-settings-mfa.md). Quando l'MFA è richiesta nel tuo pool di utenti, le pagine di accesso richiedono automaticamente agli utenti di impostare il proprio fattore aggiuntivo. Richiedono inoltre agli utenti che dispongono di una configurazione MFA di completare l'autenticazione con un codice MFA. Quando la MFA è disattivata o facoltativa nel tuo pool di utenti, nelle pagine di accesso non viene richiesto di configurare la MFA.

**Ripristino dell'account utente**  
L'impostazione di [ripristino dell'account]() in modalità self-service del pool di utenti determina se le pagine di accesso visualizzano un link in cui gli utenti possono reimpostare la password.

------
#### [ User pool options (Domain menu) ]

Le seguenti opzioni si trovano nel menu **Dominio** di un pool di utenti nella console Amazon Cognito.

**Dominio**  
La scelta del dominio del pool di utenti imposta il percorso del collegamento che gli utenti aprono quando richiami i loro browser per l'autenticazione.

**Versione di branding**  
La scelta di una versione di branding determina se nel dominio del pool di utenti viene visualizzato l'accesso gestito o l'interfaccia utente ospitata.

------
#### [ User pool options (Social and external providers menu) ]

L'opzione seguente si trova nel menu **Social e provider esterni** di un pool di utenti nella console Amazon Cognito.

**Provider**  
I provider di identità (IdPs) che aggiungi al tuo pool di utenti possono essere lasciati attivi o inattivi per ogni client di app nel pool di utenti.

------
#### [ App client options ]

Le seguenti opzioni si trovano nel menu **App client** di un pool di utenti nella console Amazon Cognito. Per esaminare queste opzioni, seleziona un client dell'app dall'elenco.

**Guida rapida alla configurazione**  
La guida rapida all'installazione contiene esempi di codice per una varietà di ambienti di sviluppo. Contengono le librerie necessarie per integrare l'autenticazione di accesso gestito con l'applicazione.

**Informazioni sul client dell'app**  
Modifica questa configurazione in modo che sia assegnata IdPs all'applicazione rappresentata dal client dell'app corrente. Nelle pagine di accesso gestito, Amazon Cognito mostra le scelte per gli utenti. Queste scelte sono determinate dai metodi e dall'IdP assegnati. Ad esempio, se assegni un IdP SAML 2.0 denominato `MySAML` e un accesso al pool di utenti locali, le pagine di accesso gestite visualizzano le istruzioni del metodo di autenticazione e un pulsante per. `MySAML`

**Impostazioni di autenticazione**  
Modifica questa configurazione per impostare i metodi di autenticazione per l'applicazione. Nelle pagine di accesso gestito, Amazon Cognito mostra le scelte per gli utenti. Queste scelte sono determinate dalla disponibilità del pool di utenti come IdP e dai metodi assegnati. Ad esempio, se assegni l'`ALLOW_USER_AUTH`autenticazione basata sulla scelta, le pagine di accesso gestite mostrano le opzioni disponibili come l'immissione di un indirizzo e-mail e l'accesso con una passkey. Le pagine di accesso gestite visualizzano anche i pulsanti relativi alle impostazioni assegnate. IdPs

**Pagine di accesso**  
Imposta l'effetto visivo delle pagine interattive con l'utente di accesso gestito o dell'interfaccia utente ospitata con le opzioni disponibili in questa scheda. Per ulteriori informazioni, consulta [Applica il marchio alle pagine di accesso gestite](managed-login-branding.md).

------

# Gestisci i metodi di autenticazione in AWS SDKs
<a name="authentication-flows-selection-sdk"></a>

*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](amazon-cognito-user-pools-authentication-flow-methods.md). 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.

**Topics**
+ [Autenticazione basata sulla scelta](#authentication-flows-selection-choice)
+ [Autenticazione basata sul client](#authentication-flows-selection-client)

## Autenticazione basata sulla scelta
<a name="authentication-flows-selection-choice"></a>

L'applicazione può richiedere i seguenti metodi di autenticazione nell'autenticazione basata sulla scelta. Dichiara queste opzioni nel `PREFERRED_CHALLENGE` parametro di [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters)o o [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthParameters)nel parametro di o. `ChallengeName` [RespondToAuthChallenge[AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html#CognitoUserPools-AdminRespondToAuthChallenge-request-ChallengeName)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName)

1. `EMAIL_OTP` e `SMS_OTP`

   [Accesso senza password con codici monouso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)

1. `WEB_AUTHN`

   [Accesso senza password con password WebAuthn](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey)

1. `PASSWORD`

   [Accedi con password persistenti](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [Accedi con password persistenti e payload sicuro](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)

   [MFA dopo l'accesso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

Per esaminare queste opzioni nel loro contesto API, consulta `ChallengeName` in [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName).

L'accesso basato sulla scelta 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.

1. 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` di`PASSWORD_SRP`, devi includere anche`SRP_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 [CodeDeliveryDetails](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CodeDeliveryDetailsType.html)nei flussi and. `EMAIL_OTP` `SMS_OTP` Se la sfida preferita non è disponibile, Amazon Cognito risponde con `SELECT_CHALLENGE` un elenco di sfide disponibili.

1. Effettua prima l'accesso degli utenti, quindi richiedi le opzioni di autenticazione in base alla loro scelta. Una [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html)richiesta 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](authentication.md#authentication-implement) 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](https://console.aws.amazon.com/cognito/v2/idp). Scegli un pool di utenti o creane uno nuovo.

1. Nella configurazione del pool di utenti, seleziona il menu di **accesso**. **Individua **le opzioni per l'accesso basato sulla scelta e scegli Modifica**.**

1. 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** per`WEB_AUTHN`, una password **monouso per un messaggio di posta elettronica e una password** monouso per `EMAIL_OTP` **un messaggio SMS**. `SMS_OTP`

1. Scegli **Save changes** (Salva modifiche).

------
#### [ API/SDK ]

Il seguente corpo parziale [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)o di [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)richiesta configura tutte le opzioni disponibili per l'autenticazione basata sulla scelta.

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

------

## Autenticazione basata sul client
<a name="authentication-flows-selection-client"></a>

L'autenticazione basata su client supporta i seguenti flussi di autenticazione. Dichiara queste opzioni nel `AuthFlow` parametro o. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)

1. `USER_PASSWORD_AUTH` e `ADMIN_USER_PASSWORD_AUTH`

   [Accedi con password persistenti](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [MFA dopo l'accesso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

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

1. `USER_SRP_AUTH`

   [Accedi con password persistenti e payload sicuro](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)

   [MFA dopo l'accesso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

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

1. `REFRESH_TOKEN_AUTH`

   [Aggiorna i token](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh)

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

1. `CUSTOM_AUTH`

   [Autenticazione personalizzata](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom)

   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 `USERNAME``SECRET_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](authentication.md#authentication-implement), aggiungi qualsiasi flusso di autenticazione diverso `ALLOW_USER_AUTH` dai flussi di autenticazione consentiti. Alcuni esempi sono `ALLOW_USER_PASSWORD_AUTH``ALLOW_CUSTOM_AUTH`,`ALLOW_REFRESH_TOKEN_AUTH`. Per consentire i flussi di autenticazione basati sul client, non è richiesta alcuna configurazione aggiuntiva del pool di utenti.

# Flusso di autenticazione
<a name="amazon-cognito-user-pools-authentication-flow-methods"></a>

Il processo di autenticazione con i pool di utenti di Amazon Cognito può essere meglio descritto come un *flusso* in cui gli utenti effettuano una scelta iniziale, inviano credenziali e rispondono a sfide aggiuntive. Quando implementi l'autenticazione di accesso gestito nella tua applicazione, Amazon Cognito gestisce il flusso di queste richieste e sfide. Quando implementi flussi con un AWS SDK nel backend dell'applicazione, devi costruire la logica delle richieste, richiedere input agli utenti e rispondere alle sfide.

In qualità di amministratore dell'applicazione, le caratteristiche utente, i requisiti di sicurezza e il modello di autorizzazione aiutano a determinare come consentire agli utenti di accedere. Ponetevi le seguenti domande.
+ Voglio consentire agli utenti di accedere con le credenziali di [altri provider di identità (IdPs)](#amazon-cognito-user-pools-authentication-flow-methods-federated)?
+ Un [nome utente e una password](#amazon-cognito-user-pools-authentication-flow-methods-password) sono una prova di identità sufficiente?
+ Le mie richieste di autenticazione per l'autenticazione nome utente e password potrebbero essere intercettate? Voglio che la mia applicazione trasmetta password o [negozii](#amazon-cognito-user-pools-authentication-flow-methods-srp) l'autenticazione utilizzando hash e sali?
+ Voglio consentire agli utenti di ignorare l'immissione della password e di [ricevere una password monouso](#amazon-cognito-user-pools-authentication-flow-methods-passwordless) per l'accesso?
+ Voglio consentire agli utenti di accedere con un'[impronta digitale, un volto o una chiave di sicurezza](#amazon-cognito-user-pools-authentication-flow-methods-passkey) hardware?
+ Quando voglio richiedere [l'autenticazione a più fattori (MFA](#amazon-cognito-user-pools-authentication-flow-methods-mfa)), se possibile?
+ Voglio rendere [persistenti le sessioni utente senza richiedere nuovamente](#amazon-cognito-user-pools-authentication-flow-methods-refresh) le credenziali?
+ Voglio [estendere il mio modello di autorizzazione](#amazon-cognito-user-pools-authentication-flow-methods-custom) oltre le funzionalità integrate di Amazon Cognito?

Quando avrai le risposte a queste domande, potrai imparare come attivare le funzionalità pertinenti e implementarle nelle richieste di autenticazione effettuate dalla tua applicazione.

Dopo aver configurato i flussi di accesso per un utente, puoi verificarne lo stato attuale per l'MFA [e](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) i fattori di autenticazione basati sulla scelta con le richieste all'operazione API. [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html) Questa operazione richiede l'autorizzazione con il token di accesso di un utente che ha effettuato l'accesso. Restituisce i fattori di autenticazione utente e le impostazioni MFA.

**Topics**
+ [Accedi con terze parti IdPs](#amazon-cognito-user-pools-authentication-flow-methods-federated)
+ [Accedi con password persistenti](#amazon-cognito-user-pools-authentication-flow-methods-password)
+ [Accedi con password persistenti e payload sicuro](#amazon-cognito-user-pools-authentication-flow-methods-srp)
+ [Accesso senza password con codici monouso](#amazon-cognito-user-pools-authentication-flow-methods-passwordless)
+ [Accesso senza password con password WebAuthn](#amazon-cognito-user-pools-authentication-flow-methods-passkey)
+ [MFA dopo l'accesso](#amazon-cognito-user-pools-authentication-flow-methods-mfa)
+ [Aggiorna i token](#amazon-cognito-user-pools-authentication-flow-methods-refresh)
+ [Autenticazione personalizzata](#amazon-cognito-user-pools-authentication-flow-methods-custom)
+ [Flusso di autenticazione per la migrazione degli utenti](#amazon-cognito-user-pools-user-migration-authentication-flow)

## Accedi con terze parti IdPs
<a name="amazon-cognito-user-pools-authentication-flow-methods-federated"></a>

I pool di utenti di Amazon Cognito fungono da broker intermedio di sessioni di autenticazione tra servizi IdPs come Sign in with Apple, Login with Amazon e OpenID Connect (OIDC). *Questo processo è anche chiamato accesso federato o autenticazione *federata*.* L'autenticazione federata non utilizza nessuno dei flussi di autenticazione che puoi integrare nel client dell'app. Al contrario, assegni il pool di utenti configurato IdPs al client dell'app. L'accesso federato avviene quando gli utenti selezionano il proprio IdP nell'accesso gestito o l'applicazione richiama una sessione con un reindirizzamento alla pagina di accesso dell'IdP.

Con l'accesso federato, deleghi i fattori di autenticazione primari e MFA all'IdP dell'utente. Amazon Cognito non aggiunge gli altri flussi avanzati di questa sezione a un utente federato a meno che non [li colleghi a un](cognito-user-pools-identity-federation-consolidate-users.md) utente locale. Gli utenti federati non collegati hanno nomi utente, ma sono un archivio di dati di attributi mappati che in genere non vengono utilizzati per l'accesso indipendentemente dal flusso basato sul browser.

**Risorse per l'implementazione**
+ [Accesso al pool di utenti con provider di identità di terze parti](cognito-user-pools-identity-federation.md)

## Accedi con password persistenti
<a name="amazon-cognito-user-pools-authentication-flow-methods-password"></a>

Nei pool di utenti di Amazon Cognito, ogni utente ha un nome utente. Potrebbe trattarsi di un numero di telefono, un indirizzo e-mail o un identificatore scelto o fornito dall'amministratore. Gli utenti di questo tipo possono accedere con il proprio nome utente e password e, facoltativamente, fornire l'autenticazione a più fattori. I pool di utenti possono eseguire l'accesso con nome utente e password con operazioni API pubbliche o autorizzate da IAM e metodi SDK. L'applicazione può inviare direttamente la password al pool di utenti per l'autenticazione. Il tuo pool di utenti risponde con ulteriori sfide o con i token web JSON (JWTs) che sono il risultato di un'autenticazione riuscita.

------
#### [ Activate password sign-in ]

Per attivare [l'autenticazione basata sul client](authentication-flows-selection-sdk.md#authentication-flows-selection-client) con nome utente e password, configura il client dell'app in modo da consentirla. Nella console Amazon Cognito, accedi al menu **App client** in **Applicazioni nella configurazione** del pool di utenti. **Per consentire l'accesso tramite password semplice per un'app mobile o nativa sul lato client, modifica un client dell'app e scegli **Accedi con nome utente e password: ALLOW\$1USER\$1PASSWORD\$1AUTH in Flussi** di autenticazione.** **Per consentire l'accesso con password semplice per un'app lato server, modifica un client dell'app e scegli Accedi con credenziali amministrative lato server: ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH.**

Per [attivare l'autenticazione basata sulla scelta con nome utente e password](authentication-flows-selection-sdk.md#authentication-flows-selection-choice), configura il client dell'app in modo da consentirla. Modifica il client dell'app e scegli l'accesso basato sulla **scelta: ALLOW\$1USER\$1AUTH**.

![\[Uno screenshot della console Amazon Cognito che illustra la scelta di semplici flussi di autenticazione tramite password per un client di app. Le opzioni ALLOW_USER_PASSWORD_AUTH, ALLOW_ADMIN_USER_PASSWORD_AUTH e ALLOW_USER_AUTH sono state selezionate.\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/screenshot-choose-password-admin-password-and-user-auth.png)


****Per verificare che l'autenticazione tramite password sia disponibile nei flussi di autenticazione basati sulla scelta, accedi al menu di accesso e consulta la sezione in Opzioni per l'accesso basato sulla scelta.**** ****Puoi accedere con l'autenticazione tramite password semplice se la password è visibile in Scelte disponibili.**** L'opzione **Password** include le varianti di autenticazione nome utente-password semplice e SRP.

![\[Uno screenshot della console Amazon Cognito che illustra la scelta dell'autenticazione tramite password nella configurazione di accesso basata sulla scelta USER_AUTH per un pool di utenti. L'opzione Password viene visualizzata come attiva.\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Configura `ExplicitAuthFlows` con le tue opzioni di username-and-password autenticazione preferite in una [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)richiesta [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)o.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_PASSWORD_AUTH",
   "ALLOW_ADMIN_USER_PASSWORD_AUTH",
   "ALLOW_USER_AUTH"
]
```

In una [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)richiesta [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)o, esegui la configurazione `Policies` con i flussi di autenticazione basati sulla scelta che desideri supportare. Il `PASSWORD` valore in `AllowedFirstAuthFactors` include sia le opzioni del flusso di autenticazione con password semplice che quelle del flusso di autenticazione SRP.

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

------
#### [ Choice-based sign-in with a password ]

Per far accedere un utente a un'applicazione con l'autenticazione nome utente e password, configura il corpo della richiesta o della richiesta come segue. [AdminInitiateAuth[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Questa richiesta di accesso ha esito positivo o prosegue fino alla sfida successiva se l'utente corrente è idoneo all'autenticazione con nome utente e password. In caso contrario, risponde con un elenco di problemi di autenticazione con fattori primari disponibili. Questo set di parametri è il minimo richiesto per l'accesso. Sono disponibili parametri aggiuntivi.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Puoi anche omettere il `PREFERRED_CHALLENGE` valore e ricevere una risposta che contiene un elenco di fattori di accesso idonei per l'utente.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Se non hai inviato una sfida preferita o l'utente inviato non è idoneo per la sua sfida preferita, Amazon Cognito restituisce un elenco di opzioni in. `AvailableChallenges` Se `AvailableChallenges` include una `ChallengeName` di`PASSWORD`, puoi continuare l'autenticazione con una risposta [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)o una risposta alla [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)sfida nel formato seguente. È necessario passare un `Session` parametro che associ la risposta alla sfida alla risposta dell'API alla richiesta di accesso iniziale. Questo set di parametri è il minimo richiesto per l'accesso. Sono disponibili parametri aggiuntivi.

```
{
   "ChallengeName": "PASSWORD",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's Password]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

Amazon Cognito risponde alle richieste e alle risposte alle sfide preferite idonee e riuscite con token o con un'ulteriore `PASSWORD` sfida obbligatoria come l'autenticazione a più fattori (MFA).

------
#### [ Client-based sign-in with a password ]

Per far accedere un utente a un'app lato client con autenticazione nome utente e password, configura il corpo della richiesta come segue. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Questo set di parametri è il minimo richiesto per l'accesso. Sono disponibili parametri aggiuntivi.

```
{
   "AuthFlow": "USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Per far accedere un utente a un'app lato server con autenticazione nome utente e password, configura il corpo della richiesta come segue. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) L'applicazione deve firmare questa richiesta con credenziali. AWS Questo set di parametri è il minimo richiesto per l'accesso. Sono disponibili parametri aggiuntivi.

```
{
   "AuthFlow": "ADMIN_USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito risponde alle richieste riuscite con token o con un'ulteriore sfida obbligatoria come l'autenticazione a più fattori (MFA).

------

## Accedi con password persistenti e payload sicuro
<a name="amazon-cognito-user-pools-authentication-flow-methods-srp"></a>

Un'altra forma di metodo di accesso con nome utente e password nei pool di utenti è il protocollo Secure Remote Password (SRP). Questa opzione invia una prova di conoscenza di una password, un hash e un codice salt, che il gruppo di utenti può verificare. Senza informazioni segrete leggibili nella richiesta ad Amazon Cognito, l'applicazione è l'unica entità che elabora le password inserite dagli utenti. L'autenticazione SRP prevede calcoli matematici che è preferibile eseguire utilizzando un componente esistente che puoi importare nel tuo SDK. L'SRP è in genere implementato in applicazioni lato client come le app mobili. Per ulteriori informazioni sul protocollo, consulta la home page di [Stanford SRP](http://srp.stanford.edu/). [Wikipedia](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol) contiene anche risorse ed esempi. Sono disponibili [diverse biblioteche pubbliche](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Implementations) per eseguire i calcoli SRP per i flussi di autenticazione.

La initiate-challenge-respond sequenza di autenticazione di Amazon Cognito convalida gli utenti e le relative password con SRP. Devi configurare il pool di utenti e il client dell'app per supportare l'autenticazione SRP, quindi implementare la logica delle richieste di accesso e delle risposte alle sfide nell'applicazione. Le vostre librerie SRP possono generare numeri casuali e valori calcolati che dimostrano al vostro pool di utenti che siete in possesso della password di un utente. L'applicazione inserisce questi valori calcolati in formato JSON e nei campi nei pool di utenti di Amazon Cognito, nelle operazioni API `AuthParameters` e `ChallengeParameters` nei metodi SDK per l'autenticazione.

------
#### [ Activate SRP sign-in ]

Per attivare l'[autenticazione basata su client](authentication-flows-selection-sdk.md#authentication-flows-selection-client) con nome utente e SRP, configura il client dell'app in modo da consentirla. Nella console Amazon Cognito, accedi al menu **App client** in **Applicazioni nella configurazione** del pool di utenti. **Per consentire l'accesso SRP a un'app mobile o nativa sul lato client, modifica un client dell'app e scegli **Accedi con password remota sicura (SRP): ALLOW\$1USER\$1SRP\$1AUTH in** Flussi di autenticazione.**

**Per attivare l'autenticazione basata sulla [scelta con nome utente e SRP, modifica il client dell'app e scegli l'accesso basato sulla scelta: ALLOW\$1USER\$1AUTH](authentication-flows-selection-sdk.md#authentication-flows-selection-choice).**

![\[Uno screenshot della console Amazon Cognito che illustra la scelta di flussi di autenticazione remota con password sicuri per un client di app. Le opzioni ALLOW_USER_SRP_AUTH e ALLOW_USER_AUTH sono state selezionate.\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/screenshot-choose-SRP-and-user-auth.png)


****Per verificare che l'autenticazione SRP sia disponibile nei flussi di autenticazione basata sulla scelta, accedi al menu di accesso e consulta la sezione in Opzioni per l'accesso basato sulla scelta.**** ****Puoi accedere con l'autenticazione SRP se la password è visibile in Scelte disponibili.**** L'opzione **Password** include le varianti di autenticazione nome utente-password in chiaro e SRP.

![\[Uno screenshot della console Amazon Cognito che illustra la scelta dell'autenticazione tramite password nella configurazione di accesso basata sulla scelta USER_AUTH per un pool di utenti. L'opzione Password viene visualizzata come attiva.\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Configura `ExplicitAuthFlows` con le tue opzioni di username-and-password autenticazione preferite in una richiesta [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)or [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html).

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

In una [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)richiesta [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)o, esegui la configurazione `Policies` con i flussi di autenticazione basati sulla scelta che desideri supportare. Il `PASSWORD` valore in `AllowedFirstAuthFactors` include sia le opzioni del flusso di autenticazione plaintext-password che quelle del flusso di autenticazione SRP.

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

------
#### [ Choice-based sign-in with SRP ]

Per far accedere un utente a un'applicazione con autenticazione nome utente-password con SRP, configura il corpo della richiesta o della richiesta come segue. [AdminInitiateAuth[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Questa richiesta di accesso ha esito positivo o prosegue fino alla sfida successiva se l'utente corrente è idoneo all'autenticazione nome utente-password. In caso contrario, risponde con un elenco di problemi di autenticazione con fattori primari disponibili. Questo set di parametri è il minimo richiesto per l'accesso. Sono disponibili parametri aggiuntivi.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD_SRP",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

Puoi anche omettere il `PREFERRED_CHALLENGE` valore e ricevere una risposta che contiene un elenco di fattori di accesso idonei per l'utente.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Se non hai inviato una sfida preferita o l'utente inviato non è idoneo per la sua sfida preferita, Amazon Cognito restituisce un elenco di opzioni in. `AvailableChallenges` Se `AvailableChallenges` include una `ChallengeName` di`PASSWORD_SRP`, puoi continuare l'autenticazione con una risposta [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)o una risposta alla [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)sfida nel formato seguente. È necessario passare un `Session` parametro che associ la risposta alla sfida alla risposta dell'API alla richiesta di accesso iniziale. Questo set di parametri è il minimo richiesto per l'accesso. Sono disponibili parametri aggiuntivi.

```
{
   "ChallengeName": "PASSWORD_SRP",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

Amazon Cognito risponde alle richieste di sfide preferite idonee e `PASSWORD_SRP` alle risposte alle sfide con una sfida. `PASSWORD_VERIFIER` Il tuo cliente deve completare i calcoli SRP e rispondere alla sfida in una richiesta OR. [RespondToAuthChallenge[AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "string",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "string",
      "TIMESTAMP" : "string"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

In caso di risposta riuscita alla `PASSWORD_VERIFIER` sfida, Amazon Cognito emette token o un'altra sfida obbligatoria come l'autenticazione a più fattori (MFA).

------
#### [ Client-based sign-in with SRP ]

L'autenticazione SRP è più comune all'autenticazione lato client che a quella lato server. Tuttavia, è possibile utilizzare l'autenticazione SRP con e. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Per far accedere un utente a un'applicazione, configura il corpo della tua `InitiateAuth` `AdminInitiateAuth` richiesta come segue. Questo set di parametri è il minimo richiesto per l'accesso. Sono disponibili parametri aggiuntivi.

Il client genera `SRP_A` da un generatore il modulo N *g* elevato alla potenza di *un* intero casuale segreto a.

```
{
   "AuthFlow": "USER_SRP_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito risponde con una richiesta `PASSWORD_VERIFIER`. Il tuo cliente deve completare i calcoli SRP e rispondere alla sfida in una richiesta [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)o [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html).

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "string",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "string",
      "TIMESTAMP" : "string"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

In caso di risposta riuscita alla `PASSWORD_VERIFIER` sfida, Amazon Cognito emette token o un'altra sfida obbligatoria come l'autenticazione a più fattori (MFA).

------

## Accesso senza password con codici monouso
<a name="amazon-cognito-user-pools-authentication-flow-methods-passwordless"></a>

Le password possono essere perse o rubate. Potresti voler verificare solo che i tuoi utenti abbiano accesso a un indirizzo email, a un numero di telefono o a un'app di autenticazione verificati. La soluzione a questo problema è l'*accesso senza password*. L'applicazione può richiedere agli utenti di inserire il proprio nome utente, indirizzo e-mail o numero di telefono. Amazon Cognito genera quindi una password monouso (OTP), un codice che devono confermare. Un codice corretto completa l'autenticazione.

I flussi di autenticazione monouso (OTP) non sono compatibili con l'autenticazione a più fattori (MFA) richiesta nel tuo pool di utenti. L'autenticazione con chiave di accesso con verifica utente può soddisfare i requisiti MFA se `FactorConfiguration` impostata su. `MULTI_FACTOR_WITH_USER_VERIFICATION` Se la MFA è facoltativa nel tuo pool di utenti, gli utenti che hanno attivato l'MFA non possono accedere con un primo fattore OTP. Gli utenti che non dispongono di una preferenza MFA in un pool di utenti opzionale MFA possono accedere con fattori senza password. Per ulteriori informazioni, consulta [Cose da sapere sull'MFA per pool di utenti](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

Quando un utente inserisce correttamente un codice ricevuto in un SMS o in un messaggio e-mail come parte dell'autenticazione senza password, oltre ad autenticare l'utente, il pool di utenti contrassegna l'indirizzo e-mail o l'attributo del numero di telefono non verificato dell'utente come verificato. Lo stato dell'utente è cambiato anche da `UNCONFIRMED` a`CONFIRMED`, indipendentemente dal fatto che il pool di utenti sia stato configurato per [verificare automaticamente gli indirizzi e-mail o i numeri](signing-up-users-in-your-app.md) di telefono.

**Nuove opzioni con accesso senza password**  
Quando attivi l'autenticazione senza password nel tuo pool di utenti, cambia il funzionamento di alcuni flussi di utenti.

1. Gli utenti possono registrarsi senza password e scegliere un fattore senza password al momento dell'accesso. Puoi anche creare utenti senza password come amministratore.

1. Gli utenti [importati con un file CSV](cognito-user-pools-using-import-tool.md) possono accedere immediatamente senza password. Non sono tenuti a impostare una password prima di accedere.

1. Gli utenti che non dispongono di una password possono inviare richieste [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html)API senza il `PreviousPassword` parametro.

**Accesso automatico con OTPs**  
Gli utenti che si registrano e confermano i propri account utente tramite e-mail o SMS OTPs possono accedere automaticamente con il fattore senza password corrispondente al messaggio di conferma. Nell'interfaccia utente di accesso gestito, gli utenti che confermano i propri account e sono idonei all'accesso OTP con il metodo di invio del codice di conferma procedono automaticamente al primo accesso dopo aver fornito il codice di conferma. Nella tua applicazione personalizzata con un AWS SDK, passa i seguenti parametri a un'operazione or. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)
+ Il `Session` parametro della risposta dell'[ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)API come parametro di richiesta. `Session`
+ Un [AuthFlow](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)di`USER_AUTH`.

Puoi passare un [PREFERRED\$1CHALLENGE](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters) di `EMAIL_OTP` o`SMS_OTP`, ma non è obbligatorio. Il `Session` parametro fornisce una prova di autenticazione e Amazon Cognito ignora `AuthParameters` quando trasmetti un codice di sessione valido.

L'operazione di accesso restituisce la risposta che indica l'avvenuta autenticazione [AuthenticationResult](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AuthenticationResultType.html), senza ulteriori problemi se sono soddisfatte le seguenti condizioni.
+ Il `Session` codice è valido e non è scaduto.
+ L'utente è idoneo per il metodo di autenticazione OTP.

------
#### [ Activate passwordless sign-in ]

**Console**  
Per attivare l'accesso senza password, configura il tuo pool di utenti in modo da consentire l'accesso principale con uno o più tipi di accesso senza password, quindi configura il client dell'app per consentire il flusso. `USER_AUTH` Nella console Amazon Cognito, vai al menu di **accesso** sotto **Autenticazione** nella configurazione del tuo pool di utenti. **Modifica **le opzioni per l'accesso basato sulla scelta e scegli la password** monouso per il messaggio di **posta elettronica o la password monouso per il messaggio SMS**.** Puoi attivare entrambe le opzioni. Salvare le modifiche.

Vai al menu **App clients** e scegli un app client o creane uno nuovo. Seleziona **Modifica** e scegli **Seleziona un tipo di autenticazione al momento dell'accesso: ALLOW\$1USER\$1AUTH**.

**API/SDK**  
Nell'API dei pool di utenti, configura `SignInPolicy` con le opzioni senza password appropriate in una richiesta or. [CreateUserPool[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "EMAIL_OTP",
        "SMS_OTP"
    ]
}
```

Configura il client dell'app `ExplicitAuthFlows` con l'opzione richiesta in una richiesta [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)or [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html).

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Sign in with passwordless ]

L'accesso senza password non dispone di un [client `AuthFlow` che puoi specificare](authentication-flows-selection-sdk.md#authentication-flows-selection-client) in e. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) L'autenticazione OTP è disponibile solo nella versione [basata sulla scelta](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) `AuthFlow` di`USER_AUTH`, in cui è possibile richiedere un'opzione di accesso preferita o scegliere l'opzione senza password tra quelle di un utente. [AvailableChallenges](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-response-AvailableChallenges) Per far accedere un utente a un'applicazione, configura il corpo della tua richiesta come segue. `InitiateAuth` `AdminInitiateAuth` Questo set di parametri è il minimo richiesto per l'accesso. Sono disponibili parametri aggiuntivi.

In questo esempio, non sappiamo in che modo l'utente desidera accedere. Se aggiungiamo un `PREFERRED_CHALLENGE` parametro e la sfida preferita è disponibile per l'utente, Amazon Cognito risponde con quella sfida.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Puoi invece aggiungere `"PREFERRED_CHALLENGE": "EMAIL_OTP"` o `"PREFERRED_CHALLENGE": "SMS_OTP"` a `AuthParameters` in questo esempio. Se l'utente è idoneo per il metodo preferito, il pool di utenti invia immediatamente un codice all'indirizzo e-mail o al numero di telefono dell'utente e restituisce `"ChallengeName": "EMAIL_OTP"` o`"ChallengeName": "SMS_OTP"`.

Se non specifichi una sfida preferita, Amazon Cognito risponde con un parametro. `AvailableChallenges`

```
{
   "AvailableChallenges": [ 
      "EMAIL_OTP", 
      "SMS_OTP",
      "PASSWORD"
    ],
   "Session": "[Session ID]"
}
```

Questo utente è idoneo all'accesso senza password con messaggio di posta elettronica OTP, messaggio SMS OTP e nome-password. L'applicazione può richiedere all'utente di effettuare la selezione o effettuare una selezione in base alla logica interna. Quindi procede con una [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)richiesta [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)or che seleziona la sfida. Supponiamo che l'utente desideri completare l'autenticazione senza password con un messaggio di posta elettronica OTP.

```
{
   "ChallengeName": "SELECT_CHALLENGE",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "ANSWER" : "EMAIL_OTP" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Amazon Cognito risponde con una `EMAIL_OTP` sfida e invia un codice all'indirizzo e-mail verificato dell'utente. La tua applicazione deve quindi rispondere nuovamente a questa sfida.

Questa sarebbe anche la prossima risposta alla sfida se lo richiedessi `EMAIL_OTP` come`PREFERRED_CHALLENGE`.

```
{
   "ChallengeName": "EMAIL_OTP",
   "ChallengeResponses": {
      "USERNAME" : "testuser", 
      "EMAIL_OTP_CODE" : "123456" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

------

## Accesso senza password con password WebAuthn
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey"></a>

Le passkey sono sicure e richiedono un livello di impegno relativamente basso agli utenti. L'accesso tramite passkey utilizza *autenticatori, dispositivi esterni con cui gli utenti possono autenticarsi*. Le password normali espongono gli utenti a vulnerabilità come il phishing, l'indovinazione delle password e il furto di credenziali. Con le passkey, l'applicazione può trarre vantaggio da misure di sicurezza avanzate su telefoni cellulari e altri dispositivi collegati o integrati nei sistemi di informazione. Un flusso di lavoro comune per l'accesso tramite passkey inizia con una chiamata al dispositivo che richiama il gestore della password o delle *credenziali*, ad esempio il portachiavi iOS o il gestore di password di Google Chrome. Il gestore delle credenziali sul dispositivo richiede loro di selezionare una passkey e di autorizzarla con una credenziale esistente o un meccanismo di sblocco del dispositivo. **I telefoni moderni sono dotati di scanner facciali, scanner di impronte digitali, schemi di sblocco e altri meccanismi, alcuni dei quali soddisfano contemporaneamente i principi dell'autenticazione avanzata.** *Nel caso dell'autenticazione biometrica tramite passkey, le passkey rappresentano qualcosa che sei.*

Potresti voler sostituire le password con l'autenticazione tramite impronta digitale, facciale o chiave di sicurezza. *Si tratta di una chiave di accesso o di autenticazione. *WebAuthn** È normale che gli sviluppatori di applicazioni consentano agli utenti di registrare un dispositivo biometrico dopo il primo accesso con una password. Con i pool di utenti di Amazon Cognito, l'applicazione può configurare questa opzione di accesso per gli utenti. L'autenticazione con chiave di accesso può soddisfare i requisiti di autenticazione a più fattori (MFA) se il pool di utenti è impostato su. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` In questa configurazione, l'autenticazione con chiave di accesso con verifica dell'utente viene considerata come autenticazione a più fattori.

I flussi di autenticazione monouso (OTP) non sono compatibili con l'autenticazione a più fattori (MFA) richiesta nel tuo pool di utenti. L'autenticazione con chiave di accesso con verifica utente può soddisfare i requisiti MFA se `FactorConfiguration` impostata su. `MULTI_FACTOR_WITH_USER_VERIFICATION` Se la MFA è facoltativa nel tuo pool di utenti, gli utenti che hanno attivato l'MFA non possono accedere con un primo fattore OTP. Gli utenti che non dispongono di una preferenza MFA in un pool di utenti opzionale MFA possono accedere con fattori senza password. Per ulteriori informazioni, consulta [Cose da sapere sull'MFA per pool di utenti](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

### Cosa sono le passkey?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-what-are"></a>

Le passkey semplificano l'esperienza utente eliminando la necessità di ricordare password complesse o di inserirle. OTPs Le password si basano sugli WebAuthn CTAP2 standard redatti dal [World Wide Web Consortium](https://www.w3.org/TR/webauthn-3/) (W3C) e dalla FIDO (Fast Identity Online) Alliance. *I browser e le piattaforme implementano questi standard, prevedono applicazioni web o mobili APIs per avviare un processo di registrazione o autenticazione delle passkey e anche un'interfaccia utente che consente all'utente di selezionare e interagire con un autenticatore di passkey.*

Quando un utente registra un autenticatore su un sito Web o un'app, l'autenticatore crea una coppia di chiavi pubblica-privata. WebAuthn i browser e le piattaforme inviano la chiave pubblica al backend dell'applicazione del sito Web o dell'app. L'autenticatore conserva la chiave privata, la chiave e i metadati relativi all'utente e all'applicazione. IDs Quando l'utente desidera autenticarsi nell'applicazione registrata con il proprio autenticatore registrato, l'applicazione genera una sfida casuale. La risposta a questa sfida è la firma digitale della sfida generata con la chiave privata dell'autenticatore per l'applicazione e l'utente e i metadati pertinenti. Il browser o la piattaforma applicativa riceve la firma digitale e la trasmette al backend dell'applicazione. L'applicazione convalida quindi la firma con la chiave pubblica memorizzata.

**Nota**  
L'applicazione non riceve alcun segreto di autenticazione fornito dagli utenti al proprio autenticatore, né riceve informazioni sulla chiave privata.

Di seguito sono riportati alcuni esempi e funzionalità degli autenticatori attualmente sul mercato. Un autenticatore può soddisfare una o tutte queste categorie.
+ Alcuni autenticatori eseguono la *verifica dell'utente* con fattori come un PIN, un input biometrico con un volto o un'impronta digitale o un codice di accesso prima di concedere l'accesso, garantendo che solo l'utente legittimo possa autorizzare le azioni. Altri autenticatori non dispongono di funzionalità di verifica degli utenti e alcuni possono ignorare la verifica dell'utente quando un'applicazione non la richiede.
+ Alcuni autenticatori, ad esempio i token YubiKey hardware, sono portatili. Comunicano con i dispositivi tramite connessioni USB, Bluetooth o NFC. Alcuni autenticatori sono locali e associati a una piattaforma, ad esempio Windows Hello su un PC o Face ID su un iPhone. Un autenticatore legato al dispositivo può essere utilizzato dall'utente se sufficientemente piccolo, come un dispositivo mobile. A volte gli utenti possono connettere il proprio autenticatore hardware a molte piattaforme diverse con comunicazione wireless. Ad esempio, gli utenti dei browser desktop possono utilizzare il proprio smartphone come autenticatore di password quando scansionano un codice QR.
+ Alcune passkey legate alla piattaforma si sincronizzano con il cloud in modo da poter essere utilizzate da più postazioni. Ad esempio, le passkey Face ID sugli iPhone sincronizzano i metadati delle passkey con gli account Apple degli utenti nel portachiavi iCloud. Queste passkey garantiscono un'autenticazione senza interruzioni su tutti i dispositivi Apple, anziché richiedere che gli utenti registrino ciascun dispositivo in modo indipendente. Le app di autenticazione basate su software come 1Password, Dashlane e Bitwarden sincronizzano le passkey su tutte le piattaforme su cui l'utente ha installato l'app.

*In WebAuthn termini terminologici, i siti Web e le app sono parti affidabili.* Ogni passkey è associata a un ID relying party specifico, un identificatore unificato che rappresenta i siti Web o le app che accettano l'autenticazione tramite passkey. Gli sviluppatori devono selezionare attentamente l'ID del relying party per disporre del giusto ambito di autenticazione. Un tipico Relying Party ID è il nome di dominio principale di un server web. Una passkey con questa specifica relativa all'ID del relying party può autenticarsi per quel dominio e i sottodomini. I browser e le piattaforme negano l'autenticazione con chiave di accesso quando l'URL del sito Web a cui un utente desidera accedere non corrisponde all'ID del relying party. Analogamente, per le app mobili, una passkey può essere utilizzata solo se il percorso dell'app è presente nei file di `.well-known` associazione che l'applicazione rende disponibili nel percorso indicato dall'ID del relying party.

*Le passkey sono individuabili.* Possono essere riconosciuti e utilizzati automaticamente da un browser o da una piattaforma senza richiedere all'utente di inserire un nome utente. Quando un utente visita un sito Web o un'app che supporta l'autenticazione con password, può selezionare da un elenco di passkey che il browser o la piattaforma già conoscono oppure può scansionare un codice QR.

### In che modo Amazon Cognito implementa l'autenticazione con chiave di accesso?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-cognito"></a>

**Le passkey sono una funzionalità opzionale disponibile in tutti i [piani](cognito-sign-in-feature-plans.md) di funzionalità ad eccezione di Lite.** È disponibile solo nel flusso di autenticazione basato sulla [scelta](authentication-flows-selection-sdk.md#authentication-flows-selection-choice). Con l'[accesso gestito](authentication-flows-selection-managedlogin.md), Amazon Cognito gestisce la logica dell'autenticazione tramite passkey. Puoi anche utilizzare l'[API dei pool di utenti di Amazon Cognito AWS SDKs](#amazon-cognito-user-pools-authentication-flow-methods) per eseguire l'autenticazione tramite passkey nel backend dell'applicazione.

Amazon Cognito riconosce le passkey create utilizzando uno dei due algoritmi crittografici asimmetrici, (-7) e (-257). ES256 RS256 La maggior parte degli autenticatori supporta entrambi gli algoritmi. Per impostazione predefinita, gli utenti possono configurare qualsiasi tipo di autenticatore, ad esempio token hardware, smartphone mobili e app di autenticazione software. Amazon Cognito attualmente non supporta l'applicazione degli [attestati](https://csrc.nist.gov/glossary/term/attestation).

Nel tuo pool di utenti, puoi configurare la verifica degli utenti in modo che sia preferita o obbligatoria. L'impostazione predefinita è preferita nelle richieste API che non forniscono un valore e preferenziale è selezionata per impostazione predefinita nella console Amazon Cognito. Quando imposti la verifica utente su Preferenziale, gli utenti possono configurare autenticatori che non dispongono della funzionalità di verifica dell'utente e le operazioni di registrazione e autenticazione possono avere esito positivo senza la verifica dell'utente. Per imporre la verifica dell'utente nella registrazione e nell'autenticazione delle passkey, modifica questa impostazione in obbligatoria.

L'ID relying party (RP) impostato nella configurazione della passkey è una decisione importante. [Se non specifichi diversamente e la [versione con marchio del dominio](managed-login-branding.md) è Managed Login, per impostazione predefinita il pool di utenti prevede il nome del dominio personalizzato come ID RP.](cognito-user-pools-add-custom-domain.md) [Se non disponi di un dominio personalizzato e non specifichi diversamente, il tuo pool di utenti utilizza per impostazione predefinita un ID RP del tuo dominio con prefisso.](cognito-user-pools-assign-domain-prefix.md) Puoi anche configurare il tuo ID RP in modo che sia qualsiasi nome di dominio non presente nell'elenco dei suffissi pubblici (PSL). L'immissione dell'ID RP si applica alla registrazione e all'autenticazione della passkey nell'accesso gestito e nell'autenticazione SDK. Passkey funziona solo nelle applicazioni mobili con Amazon Cognito in grado di individuare `.well-known` un file di associazione con il tuo ID RP come dominio. Come best practice, determina e imposta il valore dell'ID del relying party prima che il sito Web o l'app siano disponibili al pubblico. Se modifichi il tuo ID RP, gli utenti devono registrarsi nuovamente con il nuovo ID RP.

Ogni utente può registrare fino a 20 passkey. Possono registrare una passkey solo dopo aver effettuato l'accesso al tuo pool di utenti almeno una volta. L'accesso gestito elimina uno sforzo significativo dalla registrazione delle passkey. Quando abiliti l'autenticazione con passkey per un pool di utenti e un client di app, il pool di utenti con un dominio di accesso gestito ricorda agli utenti finali di registrare una passkey dopo aver registrato un nuovo account utente. Puoi anche richiamare i browser degli utenti in qualsiasi momento per indirizzarli a una pagina di accesso gestita per la registrazione della passkey. Gli utenti devono fornire un nome utente prima che Amazon Cognito possa avviare l'autenticazione tramite passkey. L'accesso gestito lo gestisce automaticamente. La pagina di accesso richiede un nome utente, verifica che l'utente abbia almeno una passkey registrata e quindi richiede l'accesso tramite passkey. Analogamente, le applicazioni basate su SDK devono richiedere un nome utente e fornirlo nella richiesta di autenticazione.

Quando si configura l'autenticazione del pool di utenti con passkey e si dispone di un dominio personalizzato e di un dominio con prefisso, l'ID RP utilizza per impostazione predefinita il nome di dominio completo (FQDN) del dominio personalizzato. **Per impostare un dominio con prefisso come ID RP nella console Amazon Cognito, elimina il dominio personalizzato o inserisci il nome di dominio completo del prefisso come dominio di terze parti.**

------
#### [ Activate passkey sign-in ]

**Console**  
Per attivare l'accesso con passkey, configura il tuo pool di utenti in modo da consentire l'accesso principale con uno o più tipi senza password, quindi configura il client dell'app per consentire il flusso. `USER_AUTH` Nella console Amazon Cognito, vai al menu di **accesso** sotto **Autenticazione** nella configurazione del tuo pool di utenti. **Modifica **le opzioni per l'accesso basato sulla scelta** e aggiungi **Passkey** all'elenco delle scelte disponibili.**

**Vai al menu **Metodi di autenticazione e modifica** Passkey.**
+ La **verifica utente** è l'impostazione che consente di stabilire se il pool di utenti richiede dispositivi con chiave di accesso che eseguono controlli aggiuntivi per verificare che l'utente corrente sia autorizzato a utilizzare una passkey. **Per incoraggiare gli utenti a configurare un dispositivo con la verifica utente, ma non richiederla, seleziona Preferito.** Per supportare solo i dispositivi con verifica utente, seleziona **Obbligatorio**. Per ulteriori informazioni, consulta [Verifica utente](https://www.w3.org/TR/webauthn-2/#user-verification) su w3.org.
+ Il **Domain for relying party ID** è l'identificatore che l'applicazione trasmetterà nelle richieste di registrazione delle passkey degli utenti. Imposta l'obiettivo della relazione di fiducia con l'emittente delle passkey degli utenti. L'ID del relying party può essere: il dominio del pool di utenti se   
**Dominio Cognito**  
Il [dominio del prefisso Amazon Cognito del tuo pool](cognito-user-pools-assign-domain-prefix.md) di utenti.  
**Dominio personalizzato**  
Il [dominio personalizzato](cognito-user-pools-add-custom-domain.md) del tuo pool di utenti.  
**Dominio di terze parti**  
Il dominio per le applicazioni che non utilizzano le pagine di accesso gestite dai pool di utenti. Questa impostazione è in genere associata a pool di utenti che non dispongono di un [dominio](cognito-user-pools-assign-domain.md) ed eseguono l'autenticazione con un AWS SDK e l'API dei pool di utenti nel backend.

Vai al menu **App clients** e scegli un app client o creane uno nuovo. Seleziona **Modifica** e in **Flussi di autenticazione**, scegli **Seleziona un tipo di autenticazione al momento dell'accesso: ALLOW\$1USER\$1AUTH**.

**API/SDK**  
Nell'API dei pool di utenti, configura `SignInPolicy` con le opzioni di passkey appropriate in una richiesta or. [CreateUserPool[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) L'`WEB_AUTHN`opzione per l'autenticazione tramite passkey deve essere accompagnata da almeno un'altra opzione. La registrazione della passkey richiede una sessione di autenticazione esistente.

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "PASSWORD",
        "WEB_AUTHN"
    ]
}
```

Configura la preferenza di verifica dell'utente e l'ID RP nel `WebAuthnConfiguration` parametro di una richiesta. [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html#CognitoUserPools-SetUserPoolMfaConfig-request-WebAuthnConfiguration) L'`RelyingPartyId`obiettivo previsto dell'autenticazione tramite passkey può essere il prefisso del pool di utenti o il dominio personalizzato oppure un dominio di tua scelta.

```
"WebAuthnConfiguration": { 
   "RelyingPartyId": "example.auth.us-east-1.amazoncognito.com",
   "UserVerification": "preferred",
   "FactorConfiguration": "SINGLE_FACTOR"
}
```

Configura il client dell'app `ExplicitAuthFlows` con l'opzione richiesta in una [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)richiesta or. [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Register a passkey (managed login) ]

L'accesso gestito gestisce la registrazione delle passkey da parte degli utenti. Quando l'autenticazione con chiave di accesso è attiva nel tuo pool di utenti, Amazon Cognito richiede agli utenti di configurare una passkey al momento della registrazione di un nuovo account utente.

Amazon Cognito non richiede agli utenti di configurare una passkey se si sono già registrati e non hanno configurato una passkey o se hai creato il loro account come amministratore. Gli utenti in questo stato devono accedere con un altro fattore, come una password o una password OTP senza password, prima di poter registrare una passkey.

**Per registrare una passkey**

1. Indirizza l'utente alla tua pagina di [accesso](authorization-endpoint.md).

   ```
   https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https%3A%2F%2Fwww.example.com
   ```

1. Elabora il risultato dell'autenticazione dell'utente. In questo esempio, Amazon Cognito li reindirizza `www.example.com` con un codice di autorizzazione che l'applicazione scambia con token.

1. Indirizza l'utente alla tua pagina register-passkey. L'utente disporrà di un cookie del browser che mantiene la sessione di accesso. L'URL della passkey richiede e parametri. `client_id` `redirect_uri` Amazon Cognito consente solo agli utenti autenticati di accedere a questa pagina. Accedi al tuo utente con una password, un'e-mail OTP o un SMS OTP, quindi richiama un URL che corrisponda allo schema seguente.

   Puoi anche aggiungere altri [Endpoint Authorize](authorization-endpoint.md) parametri a questa richiesta, come e. `response_type` `scope`

   ```
   https://auth.example.com/passkeys/add?client_id=1example23456789&redirect_uri=https%3A%2F%2Fwww.example.com
   ```

------
#### [ Register a passkey (SDK) ]

Le credenziali della passkey vengono registrate con i metadati in un oggetto. [PublicKeyCreationOptions](https://www.w3.org/TR/webauthn-3/#dictdef-publickeycredentialcreationoptions) È possibile generare questo oggetto con le credenziali di un utente connesso e presentarle in una richiesta API all'emittente della passkey. [L'emittente restituirà un oggetto JSON che conferma la registrazione della passkeyRegistrationResponse.](https://www.w3.org/TR/webauthn-3/#dictdef-registrationresponsejson)

Per avviare il processo di registrazione della passkey, accedi a un utente con un'opzione di accesso esistente. Autorizza la richiesta [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html)API [autorizzata dal token](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth-token-auth) con il token di accesso dell'utente corrente. Di seguito è riportato il corpo di una richiesta di esempio. `GetWebAuthnRegistrationOptions`

```
{
   "AccessToken": "eyJra456defEXAMPLE"
}
```

La risposta del pool di utenti contiene l'`PublicKeyCreationOptions`oggetto. Presenta questo oggetto in una richiesta API all'emittente dell'utente. Fornisce informazioni come la chiave pubblica e l'ID del relying party. L'emittente risponderà con un `RegistrationResponseJSON` oggetto.

Presenta la risposta di registrazione in una richiesta [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html)API, nuovamente autorizzata con il token di accesso dell'utente. Quando il pool di utenti risponde con una risposta HTTP 200 con un corpo vuoto, la passkey dell'utente viene registrata.

------
#### [ Sign in with a passkey ]

Per l'accesso senza password non è possibile specificare nulla `AuthFlow` in e. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Devi invece dichiarare un no `USER_AUTH` e richiedere un'opzione `AuthFlow` di accesso o scegliere l'opzione senza password dalla risposta del tuo pool di utenti. Per far accedere un utente a un'applicazione, configura il corpo della tua `InitiateAuth` richiesta come segue. `AdminInitiateAuth` Questo set di parametri è il minimo richiesto per l'accesso. Sono disponibili parametri aggiuntivi.

In questo esempio, sappiamo che l'utente desidera accedere con una passkey e aggiungiamo un `PREFERRED_CHALLENGE` parametro.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "WEB_AUTHN"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito risponde con una richiesta `WEB_AUTHN`. L'applicazione deve rispondere a questa sfida. Avvia una richiesta di accesso con il fornitore di passkey dell'utente. [Restituirà un AuthenticationResponse oggetto JSON.](https://www.w3.org/TR/webauthn-3/#dictdef-authenticationresponsejson)

```
{
   "ChallengeName": "WEB_AUTHN",
   "ChallengeResponses": {
      "USERNAME" : "testuser", 
      "CREDENTIAL" : "{AuthenticationResponseJSON}" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

------

## MFA dopo l'accesso
<a name="amazon-cognito-user-pools-authentication-flow-methods-mfa"></a>

È possibile configurare gli utenti che completano l'accesso con un flusso nome utente-password in modo che vengano richieste ulteriori verifiche con una password monouso da un messaggio di posta elettronica, un messaggio SMS o un'applicazione per la generazione di codice. L'autenticazione a più fattori è distinta dall'accesso senza password con password monouso. Tuttavia, le passkey con verifica utente possono soddisfare i requisiti MFA quando si `FactorConfiguration` configura `MULTI_FACTOR_WITH_USER_VERIFICATION` come nel pool di utenti. `WebAuthnConfiguration` Per i flussi basati su password, l'MFA nei pool di utenti è un modello di risposta alla sfida in cui un utente dimostra innanzitutto di conoscere la password, quindi dimostra di avere accesso al proprio dispositivo registrato a secondo fattore.

**Risorse per l'implementazione**
+ [Aggiunta dell'autenticazione MFA a un bacino d'utenza](user-pool-settings-mfa.md)

## Aggiorna i token
<a name="amazon-cognito-user-pools-authentication-flow-methods-refresh"></a>

Se desideri mantenere gli utenti connessi senza reinserire le loro credenziali, i *token di aggiornamento* sono lo strumento di cui dispone l'applicazione per rendere persistente la sessione di un utente. Le applicazioni possono presentare token di aggiornamento al pool di utenti e scambiarli con nuovi ID e token di accesso. Con l'aggiornamento dei token, puoi assicurarti che un utente connesso sia ancora attivo, ottenere informazioni aggiornate sugli attributi e aggiornare i diritti di controllo degli accessi senza l'intervento dell'utente.

**Risorse per l'implementazione**
+ [Aggiorna i token](amazon-cognito-user-pools-using-the-refresh-token.md)

## Autenticazione personalizzata
<a name="amazon-cognito-user-pools-authentication-flow-methods-custom"></a>

Potresti voler configurare un metodo di autenticazione per i tuoi utenti che non è elencato qui. Puoi farlo con *l'autenticazione personalizzata* con trigger Lambda. In una sequenza di funzioni Lambda, Amazon Cognito lancia una sfida, pone una domanda a cui gli utenti devono rispondere, verifica l'accuratezza della risposta, quindi determina se deve essere lanciata un'altra sfida. Le domande e le risposte possono includere domande di sicurezza, richieste a un servizio CAPTCHA, richieste a un'API di servizio MFA esterna o tutte queste in sequenza.

**Risorse per l'implementazione**
+ [Trigger Lambda di richieste di autenticazione personalizzate](user-pool-lambda-challenge.md)

### Flusso di autenticazione personalizzato
<a name="amazon-cognito-user-pools-custom-authentication-flow"></a>

I bacini d'utenza di Amazon Cognito abilitano anche i flussi di autenticazione personalizzati, che consentono di creare un modello di autenticazione basato su richiesta/risposta utilizzando i trigger AWS Lambda .

Il flusso di autenticazione personalizzato permette cicli personalizzati di richieste e risposte per soddisfare diversi requisiti. Il flusso comincia con una chiamata all'operazione API `InitiateAuth` che indica il tipo di autenticazione da utilizzare e fornisce qualsiasi parametro di autenticazione iniziale. Amazon Cognito risponde alla chiamata `InitiateAuth` con uno dei seguenti tipi di informazione: 
+ Una sfida all'utente, insieme a una sessione e parametri.
+ Un errore se l'utente non si autentica correttamente.
+ Token ID, di accesso e di aggiornamento, se i parametri forniti nella chiamata `InitiateAuth` sono sufficienti per l'accesso dell'utente. (In genere l'utente o l'app devono prima rispondere a una sfida, ma è il tuo codice personalizzato a decidere se è il caso.)

 Se Amazon Cognito risponde alla chiamata `InitiateAuth` con una sfida, l'app raccoglierà più input e chiamerà l'operazione `RespondToAuthChallenge`. Questa chiamata fornisce le risposte alla sfida e restituisce la sessione. Amazon Cognito risponde alla chiamata `RespondToAuthChallenge` in modo simile alla chiamata `InitiateAuth`. Se l'utente ha effettuato l'accesso, Amazon Cognito fornisce i token, se non ha effettuato l'accesso, Amazon Cognito restituisce un'altra sfida o un errore. Se Amazon Cognito restituisce un'altra sfida, la sequenza si ripete: l'app chiama `RespondToAuthChallenge` fino a quando l'utente non riesce a effettuare l'accesso o non viene restituito un errore. Per ulteriori dettagli sulle operazioni `InitiateAuth` e API `RespondToAuthChallenge`, consulta la [documentazione API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html). 

### Flusso di autenticazione personalizzato e sfide
<a name="Custom-authentication-flow-and-challenges"></a>

Un'app è in grado di avviare un flusso di autenticazione chiamando `InitiateAuth` con `CUSTOM_AUTH` come `Authflow`. Nel caso di un flusso di autenticazione personalizzato, tre trigger Lambda controllano le sfide e la verifica delle risposte.
+ Il trigger Lambda `DefineAuthChallenge` usa come input una matrice di sessioni di sfide e risposte precedenti. Quindi genera il nome della sfida successiva e i booleani che indicano se l'utente è autenticato e deve ricevere i token o meno. Questo trigger Lambda è una macchina a stati che controlla il percorso dell'utente attraverso le richieste.
+ Il trigger Lambda `CreateAuthChallenge` utilizza il nome di una sfida come input e genera la sfida e i parametri per valutare la risposta. Quando `DefineAuthChallenge` restituisce `CUSTOM_CHALLENGE` come sfida sucessiva, il flusso di autenticazione chiama `CreateAuthChallenge`. Il trigger Lambda `CreateAuthChallenge` passa il tipo di sfida successiva nel parametro di metadati della richiesta.
+ La funzione Lambda `VerifyAuthChallengeResponse` valuta la risposta e restituisce un valore booleano per indicare se la risposta era valida.

Un flusso di autenticazione personalizzato può anche utilizzare una combinazione di sfide incorporate, come la verifica della password SRP e MFA tramite SMS. Può utilizzare sfide personalizzate come CAPTCHA o domande segrete.

### Utilizzare la verifica della password SRP nel flusso di autenticazione personalizzato
<a name="Using-SRP-password-verification-in-custom-authentication-flow"></a>

Se intendi includere la verifica SRP in un flusso di autenticazione personalizzato, è necessario partire da essa.
+ Per avviare la verifica della password SRP in un flusso personalizzato, l'app chiama `InitiateAuth` con `CUSTOM_AUTH` come `Authflow`. Nella mappa `AuthParameters`, la richiesta dalla tua app include `SRP_A:` (il valore SRP A) e `CHALLENGE_NAME: SRP_A`.
+ Il flusso `CUSTOM_AUTH` richiama il trigger Lambda `DefineAuthChallenge` con una sessione iniziale di `challengeName: SRP_A` e `challengeResult: true`. La tua funzione Lambda risponde con `challengeName: PASSWORD_VERIFIER`, `issueTokens: false` e `failAuthentication: false`.
+  L'app deve quindi chiamare `RespondToAuthChallenge` con `challengeName: PASSWORD_VERIFIER` e gli altri parametri necessari per SRP nella mappa `challengeResponses`. 
+ Se Amazon Cognito verifica la password, `RespondToAuthChallenge` richiama il trigger Lambda `DefineAuthChallenge` con una seconda sessione di `challengeName: PASSWORD_VERIFIER` e `challengeResult: true`. A quel punto, il trigger `DefineAuthChallenge` Lambda risponde con `challengeName: CUSTOM_CHALLENGE` per avviare la richiesta personalizzata.
+ Se MFA è abilitato per un utente, dopo che Amazon Cognito verifica la password, all'utente viene richiesto di configurare o accedere con MFA.

**Nota**  
La pagina Web di accesso ospitata di Amazon Cognito non può attivare i [Trigger Lambda di richieste di autenticazione personalizzate](user-pool-lambda-challenge.md).

Per ulteriori informazioni sui trigger lambda, compreso il codice di esempio, consulta [Personalizzazione di flussi di lavoro di bacini d'utenza con trigger Lambda](cognito-user-pools-working-with-lambda-triggers.md).

## Flusso di autenticazione per la migrazione degli utenti
<a name="amazon-cognito-user-pools-user-migration-authentication-flow"></a>

Il trigger Lambda per la migrazione degli utenti aiuta a migrare gli utenti da un sistema legacy di gestione degli utenti al bacino d'utenza. Se scegli il flusso di autenticazione `USER_PASSWORD_AUTH`, gli utenti non dovranno reimpostare le password durante la migrazione. Questo flusso invia le password degli utenti al servizio tramite una connessione SSL crittografata durante l'autenticazione.

Una volta completata la migrazione di tutti gli utenti, passa i flussi al flusso SRP più sicuro. Il flusso SRP non invia le password sulla rete.

Per ulteriori informazioni sui trigger Lambda, consulta [Personalizzazione di flussi di lavoro di bacini d'utenza con trigger Lambda](cognito-user-pools-working-with-lambda-triggers.md).

Per ulteriori informazioni sulla migrazione degli utenti con un trigger Lambda, consulta [Importazione di utenti con un trigger Lambda per la migrazione di utenti](cognito-user-pools-import-using-lambda.md).

# Modelli di autorizzazione per l'autenticazione tramite API e SDK
<a name="authentication-flows-public-server-side"></a>

Quando inizi lo sviluppo della tua applicazione con l'autenticazione dei pool di utenti, devi scegliere il modello di autorizzazione API più adatto al tipo di applicazione. Un modello di autorizzazione è un sistema per fornire l'autorizzazione a effettuare richieste con i componenti di autenticazione nei pool di utenti di Amazon Cognito, nelle integrazioni API e SDK. Amazon Cognito offre tre modelli di autorizzazione: IAM-Authorized, public e token-authorized.

Con le richieste autorizzate da IAM, l'autorizzazione deriva da una firma mediante un set di credenziali AWS IAM nell'intestazione di una richiesta. `Authorization` Per le applicazioni lato server, questa pratica protegge le operazioni di autenticazione con l'autorizzazione IAM. Con le richieste di autenticazione pubbliche (non autenticate), non è richiesta alcuna autorizzazione. È adatto per le applicazioni lato client distribuite agli utenti. Nelle operazioni autorizzate da token, in genere implementate in combinazione con operazioni pubbliche, l'autorizzazione proviene da un token di sessione o da un token di accesso incluso nell'`Authorization`intestazione della richiesta. L'autenticazione di Amazon Cognito richiede in genere l'implementazione di due o più operazioni API in ordine e le operazioni API utilizzate dipendono dalle caratteristiche dell'applicazione. I client pubblici, in cui l'applicazione viene distribuita agli utenti, utilizzano operazioni pubbliche, in cui le richieste di accesso non richiedono l'autorizzazione. Le operazioni autorizzate dai token continuano la sessione degli utenti nelle applicazioni pubbliche. I client lato server, in cui la logica dell'applicazione è ospitata su un sistema remoto, proteggono le operazioni di autenticazione con l'autorizzazione IAM per le richieste di accesso. Le coppie di operazioni API che seguono e i metodi SDK corrispondenti vengono mappate ai modelli di autorizzazione disponibili.

Ogni operazione di autenticazione pubblica ha una qualche forma di equivalente lato server, ad esempio e. [UpdateUserAttributes[AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) Sebbene le operazioni lato client siano avviate dall'utente e richiedano una conferma, le operazioni lato server presuppongono che la modifica sia stata apportata da un amministratore del pool di utenti e che le modifiche abbiano effetto immediato. In questo esempio, Amazon Cognito invia un messaggio con un codice di conferma all'utente e il token di accesso dell'utente autorizza una [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)richiesta che invia il codice. L'applicazione lato server può impostare immediatamente il valore di qualsiasi attributo, sebbene [valgano considerazioni speciali](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html#CognitoUserPools-AdminUpdateUserAttributes-request-UserAttributes) per la modifica del valore degli indirizzi e-mail e dei numeri di telefono quando vengono utilizzati per l'accesso.

Per confrontare l'autenticazione API e visualizzare un elenco completo delle operazioni API e dei relativi modelli di autorizzazione, consulta. [Comprendere l'API, l'OIDC e l'autenticazione delle pagine di accesso gestite](#user-pools-API-operations)

------
#### [ Client-side (public) authentication ]

Di seguito è riportata una tipica sequenza di richieste in un'applicazione lato client

1. L'[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)operazione pubblica invia credenziali primarie come nome utente e password.

1. L'[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)operazione autorizzata dal token invia un token di *sessione* dalla `InitiateAuth` risposta e dalla risposta a una sfida, ad esempio MFA. L'autorizzazione tramite token di sessione indica le richieste che fanno parte dei cicli di autenticazione. not-yet-complete

1. L'[ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html)operazione autorizzata dal token invia un token di *accesso* ed esegue l'operazione di scrittura di aggiunta di un dispositivo ricordato al profilo dell'utente. L'autorizzazione tramite token di accesso indica le richieste relative alle operazioni self-service degli utenti dopo che hanno completato l'autenticazione.

Per ulteriori informazioni, consultare [Opzioni di autenticazione lato client](#amazon-cognito-user-pools-client-side-authentication-flow) e [Comprendere l'API, l'OIDC e l'autenticazione delle pagine di accesso gestite](#user-pools-API-operations).

------
#### [ Server-side authentication ]

Di seguito è riportata una sequenza tipica di richieste provenienti da un'operazione lato server. Ogni richiesta ha un'intestazione di autorizzazione [AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) firmata con le credenziali della macchina IAM che sono state emesse al server delle applicazioni.

1. L'[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)operazione invia credenziali primarie come nome utente e password.

1. [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)l'operazione presenta la risposta a una sfida, ad esempio l'MFA.

1. L'[AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html)operazione imposta la chiave del dispositivo in base alla `AdminInitiateAuth` [risposta memorizzata](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#API_AdminInitiateAuth_ResponseSyntax).

Per ulteriori informazioni, consultare [Opzioni di autenticazione lato server](#amazon-cognito-user-pools-server-side-authentication-flow) e [Comprendere l'API, l'OIDC e l'autenticazione delle pagine di accesso gestite](#user-pools-API-operations).

------

L'autenticazione di un utente viene effettuata rispondendo a richieste successive fino a che l'autenticazione non riesce o Amazon Cognito emette token per l'utente. Puoi ripetere questi passaggi con Amazon Cognito, in un processo che include richieste di autenticazione di tipo diverso, per supportare qualsiasi flusso di autenticazione personalizzato.

**Topics**
+ [Opzioni di autenticazione lato server](#amazon-cognito-user-pools-server-side-authentication-flow)
+ [Opzioni di autenticazione lato client](#amazon-cognito-user-pools-client-side-authentication-flow)
+ [Comprendere l'API, l'OIDC e l'autenticazione delle pagine di accesso gestite](#user-pools-API-operations)
+ [Elenco delle operazioni API raggruppate per modello di autorizzazione](#user-pool-apis-auth-unauth)

## Opzioni di autenticazione lato server
<a name="amazon-cognito-user-pools-server-side-authentication-flow"></a>

Le applicazioni Web e altre applicazioni *lato server* implementano l'autenticazione su un server remoto che un client carica in un'applicazione di visualizzazione remota come un browser o una sessione SSH. Le applicazioni lato server hanno in genere le seguenti caratteristiche.
+ Sono integrate in un'applicazione installata su un server in linguaggi come Java, Ruby o Node.js.
+ Si connettono a [client di app](user-pool-settings-client-apps.md) con pool di utenti che potrebbero avere un client segreto, chiamato client *riservati*.
+ Hanno accesso alle AWS credenziali.
+ Richiamano l'[accesso gestito](cognito-user-pools-managed-login.md) per l'autenticazione o utilizzano operazioni autorizzate da IAM nell'API dei pool di utenti con un SDK. AWS 
+ Servono clienti interni e potrebbero servire clienti pubblici.

Le operazioni lato server con l'API dei pool di utenti possono utilizzare password, password monouso o passkey come fattore di accesso principale. Per le app lato server, l'autenticazione dei bacini d'utenza è analoga a quella per le app lato client, con le seguenti eccezioni:
+ L'app lato server effettua una richiesta API. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Questa operazione richiede AWS credenziali con autorizzazioni che includono e. `cognito-idp:AdminInitiateAuth` `cognito-idp:AdminRespondToAuthChallenge` L'operazione restituisce il risultato della sfida o dell'autenticazione richiesto.
+ Quando l'applicazione riceve una sfida, effettua una richiesta [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)API. Il funzionamento dell'`AdminRespondToAuthChallenge`API richiede anche AWS credenziali.

*Per ulteriori informazioni sulla firma delle richieste API di Amazon Cognito con AWS credenziali, consulta il [processo di firma Signature versione 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) nella AWS Guida generale.*

Nella risposta di `AdminInitiateAuth` `ChallengeParameters`, l'attributo `USER_ID_FOR_SRP`, se presente, contiene il nome utente reale dell'utente e non un alias (come l'indirizzo e-mail o il numero di telefono). Nella chiamata a `AdminRespondToAuthChallenge`, in `ChallengeResponses`, è necessario passare questo nome utente nel parametro `USERNAME`. 

**Nota**  
Poiché le implementazioni degli amministratori di backend utilizzano il flusso di autenticazione dell'amministratore, il flusso non supporta i dispositivi ricordati. Quando abiliti il tracciamento dei dispositivi, l'autenticazione di amministrazione avviene correttamente, ma le chiamate per aggiornare i token di accesso non andranno a buon fine.

## Opzioni di autenticazione lato client
<a name="amazon-cognito-user-pools-client-side-authentication-flow"></a>

Le app mobili e altri tipi di applicazioni *lato client* vengono installate sui dispositivi degli utenti ed eseguono la logica di autenticazione e l'interfaccia utente localmente. In genere presentano le seguenti caratteristiche.
+ Sono costruiti in linguaggi come React native, Flutter e Swift e vengono distribuiti sui dispositivi degli utenti.
+ *Si connettono a [client di app](user-pool-settings-client-apps.md) con pool di utenti che non dispongono di un client segreto, chiamati client pubblici.*
+ Non hanno accesso alle AWS credenziali che autorizzerebbero le richieste API autorizzate dall'IAM.
+ Richiamano l'[accesso gestito](cognito-user-pools-managed-login.md) per l'autenticazione o utilizzano operazioni pubbliche e autorizzate da token nell'API dei pool di utenti con un SDK. AWS 
+ Servono clienti pubblici e consentono a chiunque di registrarsi e accedere.

Le operazioni lato client con l'API dei pool di utenti possono utilizzare password, password monouso o passkey come fattore di accesso principale. Il processo seguente funziona per le app utente lato client create con o con. [AWS Amplify[AWS SDKs](https://aws.amazon.com/developer/tools/)](https://docs.amplify.aws/javascript/start/getting-started/)

1. L'utente inserisce il nome utente e la password nell'app.

1. L'app chiama l'operazione `InitiateAuth` con il nome utente e i dettagli SRP (Secure Remote Password) dell'utente.

   Questa operazione API restituisce i parametri di autenticazione.
**Nota**  
L'app genera dettagli SRP con le funzionalità SRP di Amazon Cognito integrate. AWS SDKs

1. L'app chiama l'operazione `RespondToAuthChallenge`. Se la chiamata va a buon fine, Amazon Cognito restituisce i token dell'utente e il flusso di autenticazione è completo.

   Se Amazon Cognito richiede un ulteriore fattore di autenticazione, la chiamata a `RespondToAuthChallenge` non restituisce token. Invece, la chiamata restituisce una sessione.

1. Se `RespondToAuthChallenge` restituisce una sessione, l'app chiama di nuovo `RespondToAuthChallenge`, questa volta con la sessione e la risposta alla richiesta di identificazione (ad esempio, il codice MFA).

## Comprendere l'API, l'OIDC e l'autenticazione delle pagine di accesso gestite
<a name="user-pools-API-operations"></a>

I pool di utenti di Amazon Cognito sono una combinazione di diverse tecnologie di autenticazione. Si affidano a provider di identità esterni ()IdPs. Si tratta IdPs di applicazioni che implementano l'autenticazione con OpenID Connect (OIDC). SDKs Forniscono l'autenticazione come emittenti di token web JSON (JWTs) in modo simile all'autenticazione OIDC, ma con metodi API che fanno parte di. AWS SDKs Possono anche essere punti di accesso sicuri alle tue applicazioni.

Quando desideri eseguire la registrazione, l'accesso e la gestione di utenti nel pool di utenti, puoi utilizzare due opzioni. 

1. Le tue *pagine di accesso gestito* e la classica *interfaccia utente ospitata* includono gli [endpoint interattivi con accesso gestito e gli endpoint](managed-login-endpoints.md) [federativi che gestiscono i ruoli IdP](federation-endpoints.md) e relying-party. Costituiscono un pacchetto di pagine web pubbliche che vengono attivate da Amazon Cognito quando [scegli un dominio](cognito-user-pools-assign-domain.md) per il pool di utenti. Per iniziare rapidamente a utilizzare le funzionalità di autenticazione e autorizzazione dei pool di utenti di Amazon Cognito, comprese le pagine per la registrazione, l'accesso, la gestione delle password e l'autenticazione a più fattori (MFA), utilizza l'interfaccia utente integrata dell'accesso gestito.

   Gli altri endpoint del pool di utenti facilitano l'autenticazione con provider di identità di terze parti (). IdPs I servizi che vengono eseguiti includono quanto segue.

   1. Endpoint di callback del fornitore di servizi per reclami autenticati provenienti da te, come e. IdPs `saml2/idpresponse` `oauth2/idpresponse` Quando Amazon Cognito è un provider di servizi (SP) intermedio tra l'app e l'IdP, gli endpoint di callback rappresentano il servizio.

   1. Endpoint che forniscono informazioni sull'ambiente, ad esempio `oauth2/userInfo` e `/.well-known/jwks.json`. La tua app utilizza questi endpoint quando verifica i token o recupera i dati del profilo utente con le librerie per sviluppatori OIDC o 2.0. OAuth 

1. L'[API dei pool di utenti di Amazon Cognito](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) è un set di strumenti per la tua app web o mobile per autenticare gli utenti dopo aver raccolto le informazioni di accesso nel tuo front-end personalizzato. L'autenticazione API dei pool di utenti produce i seguenti token web JSON.

   1. Un token di identità con richieste di attributi verificabili da parte dell'utente.

   1. Un token di accesso che autorizza l'utente a creare richieste API autorizzate da token a un [endpoint di servizio AWS](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html).
**Nota**  
Per impostazione predefinita, i token di accesso dell'autenticazione API dei pool di utenti contengono solo l'ambito `aws.cognito.signin.user.admin`. Se desideri generare un token di accesso con altri ambiti, ad esempio per autorizzare una richiesta a un'API di terze parti, richiedi gli ambiti durante l'autenticazione tramite gli endpoint del pool di utenti o aggiungi ambiti personalizzati in un [Trigger Lambda di pre-generazione del token](user-pool-lambda-pre-token-generation.md). La personalizzazione dei token di accesso aggiunge costi alla bolletta. AWS 

   1. Un token di aggiornamento che autorizza le richieste di nuovi ID e token di accesso e aggiorna l'identità dell'utente e le proprietà di controllo degli accessi.

Puoi collegare un utente federato, che normalmente accede tramite gli endpoint dei pool di utenti, con un utente il cui profilo è *locale* al pool di utenti. Un utente locale esiste esclusivamente nella directory del pool di utenti senza federazione tramite un IdP esterno. Se colleghi la loro identità federata a un utente locale in una richiesta [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html)API, possono accedere con l'API dei pool di utenti. Per ulteriori informazioni, consulta [Collegamento di utenti federati a un profilo utente esistente](cognito-user-pools-identity-federation-consolidate-users.md).

L'API dei pool di utenti di Amazon Cognito ha un doppio scopo.

1. Consente di creare e configurare le risorse dei pool di utenti di Amazon Cognito. Ad esempio, puoi creare pool di utenti, aggiungere AWS Lambda trigger e configurare il dominio del pool di utenti che ospita le tue pagine di accesso gestite.

1. Esegue la registrazione, l'accesso e altre operazioni utente per utenti locali e collegati.

**Scenario di esempio con l'API dei pool di utenti di Amazon Cognito**

1. L'utente seleziona il pulsante "Crea un account" creato nell'app. Inserisce un indirizzo e-mail e una password.

1. La tua app invia una richiesta [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API e crea un nuovo utente nel tuo pool di utenti.

1. L'app richiede all'utente un codice di conferma e-mail. Gli utenti inseriscono il codice ricevuto in un messaggio di posta elettronica.

1. L'app invia una richiesta [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)API con il codice di conferma dell'utente.

1. L'app richiede all'utente il nome utente e password. Le relative informazioni vengono inserite.

1. L'app invia una richiesta [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API e memorizza un token ID, un token di accesso e un token di aggiornamento. L'app chiama le librerie OIDC per gestire i token di un utente e mantenere persistente la sessione dell'utente.

Nell'API dei pool di utenti di Amazon Cognito, non è possibile consentire l'accesso agli utenti che eseguono la federazione tramite un IdP. Questi utenti devono essere autenticati tramite gli endpoint del pool di utenti. Per ulteriori informazioni sugli endpoint del pool di utenti che includono l'accesso gestito, consulta. [Endpoint del pool di utenti e riferimento all'accesso gestito](cognito-userpools-server-contract-reference.md)

I tuoi utenti federati possono iniziare dall'accesso gestito e selezionare il loro IdP, oppure puoi saltare l'accesso gestito e inviare gli utenti direttamente al tuo IdP per l'accesso. Quando la richiesta API a [Endpoint Authorize](authorization-endpoint.md) include un parametro IdP, Amazon Cognito reindirizza automaticamente l'utente alla pagina di accesso IdP.

**Scenario di esempio con pagine di accesso gestite**

1. L'utente seleziona il pulsante "Crea un account" creato nell'app.

1. L'accesso gestito presenta all'utente un elenco dei provider di identità social a cui sono state registrate le credenziali di sviluppatore. L'utente sceglie Apple.

1. L'app avvia una richiesta a [Endpoint Authorize](authorization-endpoint.md) con il nome di provider `SignInWithApple`.

1. Il browser dell'utente apre la pagina di autenticazione Apple. L'utente accede e sceglie di autorizzare Amazon Cognito a leggere le informazioni del proprio profilo.

1. Amazon Cognito conferma il token di accesso Apple ed esegue una query sul profilo Apple dell'utente.

1. L'utente presenta un codice di autorizzazione Amazon Cognito all'app.

1. La libreria OIDC dell'applicazione scambia il codice di autorizzazione con [Endpoint Token](token-endpoint.md) e memorizza un token ID, un token di accesso e un token di aggiornamento emessi dal pool di utenti. L'app utilizza le librerie OIDC per gestire i token dell'utente e mantenere una sessione persistente per quell'utente.

L'API dei pool di utenti e le pagine di accesso gestito supportano una varietà di scenari, descritti in questa guida. Nelle sezioni seguenti viene illustrato in che modo l'API dei pool di utenti si divide ulteriormente in classi che supportano i requisiti di registrazione, accesso e gestione delle risorse.

## Elenco delle operazioni API raggruppate per modello di autorizzazione
<a name="user-pool-apis-auth-unauth"></a>

L'API dei pool di utenti di Amazon Cognito, un'interfaccia di gestione delle risorse e un'interfaccia di autenticazione e autorizzazione lato utente, combina i modelli di autorizzazione che seguono le relative operazioni. A seconda dell'operazione API, potrebbe essere necessario fornire l'autorizzazione con credenziali IAM, un token di accesso, un token di sessione, un segreto del client o una combinazione di questi. Per molte operazioni di autenticazione e autorizzazione utente, è possibile scegliere tra versioni autenticate e non autenticate della richiesta. Le operazioni non autenticate sono best practice di sicurezza per le app distribuite agli utenti, come app per dispositivi mobili; non è necessario includere alcun segreto nel codice.

È possibile assegnare autorizzazioni solo nelle policy IAM per [Operazioni di gestione autorizzate da IAM](#user-pool-apis-auth-unauth-sigv4-management) e [Operazioni utente autorizzate IAM](#user-pool-apis-auth-unauth-sigv4-user).

### Operazioni di gestione autorizzate da IAM
<a name="user-pool-apis-auth-unauth-sigv4-management"></a>

Le operazioni di gestione autorizzate da IAM modificano e visualizzano la configurazione del pool di utenti e del client dell'app, come faresti in. Console di gestione AWS

Ad esempio, per modificare il pool di utenti in una richiesta [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API, è necessario presentare AWS le credenziali e le autorizzazioni IAM per aggiornare la risorsa.

Per autorizzare queste richieste in AWS Command Line Interface (AWS CLI) o in un AWS SDK, configura il tuo ambiente con variabili di ambiente o una configurazione client che aggiunga credenziali IAM alla tua richiesta. Per ulteriori informazioni, consulta [Accesso AWS tramite AWS credenziali](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) in. *Riferimenti generali di AWS* Puoi anche inviare richieste direttamente agli [endpoint del servizio](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) per l'API dei pool di utenti Amazon Cognito. È necessario autorizzare o *firmare* queste richieste con AWS credenziali da incorporare nell'intestazione della richiesta. [Per ulteriori informazioni, consulta Firmare le richieste API. AWS](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)


| Operazioni di gestione autorizzate da IAM | 
| --- |
| [AddCustomAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AddCustomAttributes.html) | 
| [CreateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateGroup.html) | 
| [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html) | 
| [CreateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateResourceServer.html) | 
| [CreateUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserImportJob.html) | 
| [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) | 
| [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) | 
| [CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html) | 
| [DeleteGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteGroup.html) | 
| [DeleteIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html) | 
| [DeleteResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteResourceServer.html) | 
| [DeleteUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPool.html) | 
| [DeleteUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolClient.html) | 
| [DeleteUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolDomain.html) | 
| [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html) | 
| [DescribeResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeResourceServer.html) | 
| [DescribeRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeRiskConfiguration.html) | 
| [DescribeUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserImportJob.html) | 
| [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html) | 
| [DescribeUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolClient.html) | 
| [DescribeUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolDomain.html) | 
| [Ottieni CSVHeader](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetCSVHeader.html) | 
| [GetGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetGroup.html) | 
| [GetIdentityProviderByIdentifier](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetIdentityProviderByIdentifier.html) | 
| [GetSigningCertificate](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetSigningCertificate.html) | 
| [Ottenere UICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUICustomization.html) | 
| [GetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserPoolMfaConfig.html) | 
| [ListGroups](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListGroups.html) | 
| [ListIdentityProviders](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html) | 
| [ListResourceServers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListResourceServers.html) | 
| [ListTagsForResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListTagsForResource.html) | 
| [ListUserImportJobs](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserImportJobs.html) | 
| [ListUserPoolClients](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPoolClients.html) | 
| [ListUserPools](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPools.html) | 
| [ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) | 
| [ListUsersInGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsersInGroup.html) | 
| [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html) | 
| [Impostare UICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUICustomization.html) | 
| [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html) | 
| [StartUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartUserImportJob.html) | 
| [StopUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StopUserImportJob.html) | 
| [TagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_TagResource.html) | 
| [UntagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UntagResource.html) | 
| [UpdateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateGroup.html) | 
| [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) | 
| [UpdateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateResourceServer.html) | 
| [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) | 
| [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) | 
| [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html) | 

### Operazioni utente autorizzate IAM
<a name="user-pool-apis-auth-unauth-sigv4-user"></a>

Operazioni utente autorizzate da IAM: registrazione, accesso, gestione delle credenziali, modifica e visualizzazione degli utenti. 

Ad esempio, un livello applicazione lato server potrebbe eseguire il backup di un front-end Web. La tua app lato server è un client OAuth riservato di cui ti fidi con accesso privilegiato alle tue risorse Amazon Cognito. Per registrare un utente nell'app, il server può includere AWS credenziali in una richiesta API. [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) Per ulteriori informazioni sui tipi di OAuth client, vedere Tipi di [client](https://www.rfc-editor.org/rfc/rfc6749#section-2.1) in *The OAuth 2.0 Authorization Framework*.

Per autorizzare queste richieste nell'SDK AWS CLI o in un AWS SDK, configura l'ambiente dell'app lato server con variabili di ambiente o una configurazione client che aggiunga credenziali IAM alla richiesta. Per ulteriori informazioni, consulta [Accesso AWS tramite](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) credenziali in. AWS *Riferimenti generali di AWS* Puoi anche inviare richieste direttamente agli [endpoint del servizio](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) per l'API dei pool di utenti Amazon Cognito. È necessario autorizzare o *firmare* queste richieste con AWS credenziali da incorporare nell'intestazione della richiesta. [Per ulteriori informazioni, consulta Firmare le richieste API. AWS](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)

Se il client dell'app dispone di un segreto del client, devi fornire le tue credenziali IAM e, a seconda dell'operazione, il parametro `SecretHash` o il valore `SECRET_HASH` in `AuthParameters`. Per ulteriori informazioni, consulta [Calcolo dei valori SecretHash](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash).


| Operazioni utente autorizzate da IAM | 
| --- |
| [AdminAddUserToGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminAddUserToGroup.html) | 
| [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html) | 
| [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) | 
| [AdminDeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUser.html) | 
| [AdminDeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUserAttributes.html) | 
| [AdminDisableProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableProviderForUser.html) | 
| [AdminDisableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableUser.html) | 
| [AdminEnableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminEnableUser.html) | 
| [AdminForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminForgetDevice.html) | 
| [AdminGetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetDevice.html) | 
| [AdminGetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetUser.html) | 
| [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) | 
| [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html) | 
| [AdminListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListDevices.html) | 
| [AdminListGroupsForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListGroupsForUser.html) | 
| [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html) | 
| [AdminRemoveUserFromGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRemoveUserFromGroup.html) | 
| [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html) | 
| [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) | 
| [AdminSetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserMFAPreference.html) | 
| [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) | 
| [AdminSetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserSettings.html) | 
| [AdminUpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateAuthEventFeedback.html) | 
| [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html) | 
| [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html) | 
| [AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html) | 

### Operazioni utente non autenticate
<a name="user-pool-apis-auth-unauth-unauth"></a>

Operazioni utente non autenticate: registrazione, accesso e avvio del ripristino delle password per gli utenti. Utilizza operazioni API non autenticate, o *pubbliche*, per consentire a chiunque su Internet di eseguire la registrazione e l'accesso all'app.

Ad esempio, per registrare un utente nella tua app, puoi distribuire un client OAuth pubblico che non fornisce alcun accesso privilegiato ai segreti. Puoi registrare questo utente con l'operazione API non autenticata. [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

Per inviare queste richieste in un client pubblico sviluppato con un AWS SDK, non è necessario configurare alcuna credenziale. Puoi anche inviare richieste direttamente agli [endpoint del servizio](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) per l'API dei pool di utenti Amazon Cognito senza autorizzazione aggiuntiva.

Se il client dell'app dispone di un segreto del client, devi fornire, a seconda dell'operazione, il parametro `SecretHash` o il valore `SECRET_HASH` in `AuthParameters`. Per ulteriori informazioni, consulta [Calcolo dei valori SecretHash](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash).


| Operazioni utente non autenticate | 
| --- |
| [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) | 
| [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) | 
| [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html) | 
| [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html) | 
| [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html) | 
| [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) | 

### Operazioni utente autorizzate tramite token
<a name="user-pool-apis-auth-unauth-token-auth"></a>

Le operazioni utente autorizzate tramite token consentono di disconnettersi, gestire le credenziali, modificare e visualizzare gli utenti dopo che hanno effettuato l'accesso o iniziato il processo di accesso. Utilizza le operazioni API autorizzate tramite token quando non desideri distribuire segreti nella tua app e desideri autorizzare le richieste con le credenziali dell'utente. Se l'utente ha completato l'accesso, devi autorizzare la richiesta API autorizzata tramite token con un token di accesso. Se l'utente sta eseguendo un processo di accesso, devi autorizzare la relativa richiesta API autorizzata tramite token con un token di sessione restituito da Amazon Cognito nella risposta alla richiesta precedente.

Ad esempio, in un client pubblico, potrebbe essere necessario aggiornare il profilo di un utente in modo da limitare l'accesso in scrittura solo al profilo dell'utente. Per effettuare questo aggiornamento, il client può includere il token di accesso dell'utente in una richiesta [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)API.

Per inviare queste richieste in un client pubblico sviluppato con un AWS SDK, non è necessario configurare alcuna credenziale. Includi un parametro `AccessToken` o `Session` nella richiesta. Puoi anche inviare richieste direttamente agli [endpoint del servizio](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) per l'API dei pool di utenti Amazon Cognito. Per autorizzare una richiesta a un endpoint del servizio, includi il token di accesso o sessione nel corpo POST della richiesta.

Per firmare una richiesta API per un'operazione autorizzata tramite token, includi il token di accesso come un'intestazione `Authorization` nella richiesta, nel formato `Bearer <Base64-encoded access token>`.


| Operazioni utente autorizzate tramite token | AccessToken | Sessione | 
| --- |--- |--- |
| [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) |  | ✓ | 
| [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html) | ✓ |  | 
| [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) | ✓ |  | 
| [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html) | ✓ |  | 
| [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html) | ✓ |  | 
| [DeleteWebAuthnCredential](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteWebAuthnCredential.html) | ✓ |  | 
| [ListWebAuthnCredentials](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListWebAuthnCredentials.html) | ✓ |  | 
| [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) | ✓ |  | 
| [DeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserAttributes.html) | ✓ |  | 
| [DeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUser.html) | ✓ |  | 
| [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html) | ✓ |  | 
| [ForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgetDevice.html) | ✓ |  | 
| [GetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetDevice.html) | ✓ |  | 
| [ListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html) | ✓ |  | 
| [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html) | ✓ |  | 
| [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html) | ✓ |  | 
| [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html) | ✓ |  | 
| [SetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserSettings.html) | ✓ |  | 
| [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html) | ✓ |  | 
| [GlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html) | ✓ |  | 
| [UpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateAuthEventFeedback.html) |  | ✓ | 
| [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html) | ✓ | ✓ | 
| [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html) | ✓ | ✓ | 
| [RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)¹ |  |  | 
| [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)¹ |  |  | 

¹ `RevokeToken` e `GetTokensFromRefreshToken` prendi i token di aggiornamento come parametro di autorizzazione. Il token di aggiornamento funge da token di autorizzazione e come risorsa di destinazione.