

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

# Registrazione e conferma degli account utente
<a name="signing-up-users-in-your-app"></a>

Gli account utente vengono aggiunti al bacino d'utenza in uno dei seguenti modi:
+ L'utente effettua la registrazione nell'app client del tuo bacino d'utenza. Può trattarsi di un'app per dispositivi mobili o Web.
+ Puoi importare l'account utente nel tuo bacino d'utenza. Per ulteriori informazioni, consulta [Importazione di utenti nel bacino d'utenza da un file CSV](cognito-user-pools-using-import-tool.md).
+ Puoi creare l'account utente all'interno del bacino d'utenza e invitare l'utente a effettuare l'accesso. Per ulteriori informazioni, consulta [Creazione di account utente come amministratore](how-to-create-user-accounts.md).

Gli utenti che effettuano la registrazione devono essere confermati prima di poter eseguire l'accesso. Gli utenti importati e creati sono già confermati, ma devono creare la propria password quando effettuano l'accesso per la prima volta. Le sezioni seguenti spiegano il processo di conferma e la verifica tramite e-mail o telefono.

**Password al momento dell'iscrizione**  
Amazon Cognito richiede le password di tutti gli utenti al momento della registrazione, ad eccezione delle seguenti condizioni. Se *tutte* queste condizioni sono soddisfatte, puoi omettere le password nelle operazioni di registrazione.

1. L'[accesso senza password](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) è attivo nel pool di utenti e nel client dell'app.

1. La tua applicazione è personalizzata con moduli di autenticazione in un SDK. AWS L'accesso gestito e l'interfaccia utente ospitata richiedono sempre delle password.

1. Gli utenti forniscono valori di attributo per i metodi di accesso senza password, ad esempio e-mail o SMS, password monouso (), consentiti dall'utente. OTPs Ad esempio, se consenti l'accesso tramite e-mail e telefono OTP, gli utenti possono fornire un numero di telefono o un indirizzo e-mail, ma se consenti solo l'accesso tramite e-mail, devono fornire un indirizzo e-mail.

1. Il pool di utenti [verifica automaticamente](#allowing-users-to-sign-up-and-confirm-themselves) gli attributi che gli utenti possono utilizzare con l'accesso senza password.

1. [Per ogni [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)richiesta specifica, l'utente non fornisce un valore per il parametro Password.](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-Password)

## Panoramica sulla conferma dell'account utente
<a name="signup-confirmation-verification-overview"></a>

Il seguente diagramma illustra il processo di conferma:

![\[Quando gli utenti inseriscono il codice di conferma, verificano automaticamente l'e-mail o il telefono.\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/amazon-cognito-sign-in-confirm-user.png)


Un account utente può avere differenti stati:

**Registrato (non confermato)**  
L'utente si è registrato correttamente, ma non può effettuare l'accesso fino a quando l'account utente non viene confermato. In questo stato l'utente è abilitato ma non confermato.  
I nuovi utenti che effettuano la registrazione iniziano da questo stato.

**Confermato**  
L'account utente viene confermato e l'utente può effettuare l'accesso. Quando un utente inserisce un codice o segue un link e-mail per confermare il proprio account utente, tale e-mail o numero di telefono viene verificato automaticamente. Il codice o il link è valido 24 ore.  
Se l'account utente è stato confermato dall'amministratore o da un trigger Lambda di pre-registrazione, potrebbe non esserci un'e-mail verificata o un numero di telefono associato all'account.

**Reimpostazione della password obbligatoria**  
L'account utente viene confermato, ma l'utente deve richiedere un codice e reimpostare la password prima di poter effettuare l'accesso.  
Gli account utente importati da un amministratore o uno sviluppatore iniziano da questo stato.

**Modifica forzata della password**  
L'account utente viene verificato e l'utente può accedere utilizzando una password temporanea che dovrà modificare al primo accesso con un nuovo valore prima di fare qualsiasi altra operazione.  
Gli account utente creati da un amministratore o uno sviluppatore iniziano da questo stato.

**Disabilitato**  
Prima di poter eliminare un account utente, è necessario disabilitare l'accesso per quest'ultimo.

**Altre risorse**
+ [Rilevamento e correzione degli account utente inattivi con Amazon Cognito](https://aws.amazon.com/blogs/security/detecting-and-remediating-inactive-user-accounts-with-amazon-cognito/)

## Verifica delle informazioni di contatto al momento della registrazione
<a name="allowing-users-to-sign-up-and-confirm-themselves"></a>

Quando nuovi utenti effettuano la registrazione nella tua app, è probabile che tu voglia che forniscano almeno un metodo di contatto. Ad esempio, con le informazioni di contatto degli utenti, puoi:
+ Inviare una password temporanea quando un utente sceglie di reimpostare la propria password.
+ Avvisare gli utenti quando le loro informazioni personali o finanziarie vengono aggiornate.
+ Inviare messaggi promozionali, ad esempio offerte speciali o sconti.
+ Inviare riepiloghi sugli account o promemoria di fatturazione.

Per i casi d'uso come questi, è importante inviare messaggi a una destinazione verificata. Diversamente potresti inviare i tuoi messaggi a indirizzi e-mail o numeri di telefono non validi non digitati correttamente. Ancora peggio, potresti inviare informazioni riservate a destinatari scaltri che fingono di essere tuoi utenti.

Per essere certo di inviare i messaggi solo alle persone corrette, configura il tuo bacino d'utenza Amazon Cognito in modo che gli utenti debbano fornire le informazioni seguenti al momento della registrazione:

1. Un indirizzo e-mail o numero di telefono.

1. Un codice di verifica che Amazon Cognito invia all'indirizzo e-mail o al numero di telefono. Se sono trascorse 24 ore e il codice o il link dell'utente non è più valido, chiama l'operatore dell'[ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)API per generare e inviare un nuovo codice o collegamento.

Fornendo il codice di verifica, un utente dimostra di avere accesso alla mailbox o al telefono che ha ricevuto il codice. Dopo che l'utente ha fornito il codice, Amazon Cognito aggiorna le informazioni relative all'utente nel bacino d'utenza nel seguente modo:
+ Impostando lo stato dell'utente su `CONFIRMED`.
+ Aggiornando gli attributi dell'utente per indicare che l'indirizzo e-mail o il numero di telefono sono verificati.

Per visualizzare queste informazioni, puoi utilizzare la console Amazon Cognito. In alternativa, puoi utilizzare l'operazione `AdminGetUser` API AWS CLI, il `admin-get-user` comando con o un'azione corrispondente in uno dei AWS SDKs.

Se un utente dispone di un metodo di contatto verificato, Amazon Cognito gli invia automaticamente un messaggio quando richiede un ripristino della password.

### Altre azioni che confermano e verificano gli attributi dell'utente
<a name="allowing-users-to-sign-up-and-confirm-themselves-other-actions"></a>

La seguente attività dell'utente verifica gli attributi dell'utente. Non è necessario impostare questi attributi per la verifica automatica: le azioni elencate li contrassegnano come verificati in tutti i casi.

**Indirizzo e-mail**  

1. Completamento con successo dell'[autenticazione senza password](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) con una password monouso (OTP) via e-mail.

1. Completamento con successo [dell'autenticazione a più fattori (MFA](user-pool-settings-mfa.md)) con un'e-mail OTP.

**Numero di telefono**  

1. Completamento con successo dell'[autenticazione senza password](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) con un SMS OTP.

1. Completamento con successo della [MFA](user-pool-settings-mfa.md) con un SMS OTP.

### Per configurare il bacino d'utenza per richiedere la verifica di e-mail o telefono
<a name="verification-configure"></a>

Quando verifichi gli indirizzi e-mail e i numeri di telefono degli utenti, assicurati di poter contattare questi ultimi. Completa i seguenti passaggi Console di gestione AWS per configurare il tuo pool di utenti in modo che gli utenti confermino i loro indirizzi e-mail o numeri di telefono.

**Nota**  
Se non disponi ancora di un pool di utenti nel tuo account, consulta [Nozioni di base sui bacini d'utenza](getting-started-user-pools.md).

**Per configurare il bacino d'utenza**

1. Passa alla [console di Amazon Cognito](https://console.aws.amazon.com/cognito/home). Se richiesto, inserisci le tue AWS credenziali.

1. Dal riquadro di navigazione, scegli **User Pools (Bacini d'utenza)**. Scegli un bacino d'utenza esistente dall'elenco o [creane uno nuovo](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Scegli il menu di **registrazione** e individua la **verifica degli attributi e la conferma dell'account utente**. Scegli **Modifica**.

1. In **Verifica e conferma assistita da Cognito**, se desideri, scegli **Consenti a Cognito di inviare automaticamente messaggi per la verifica e la conferma**. Con questa impostazione abilitata, Amazon Cognito invia messaggi agli attributi di contatto utente selezionati quando un utente si iscrive o quando crei un profilo utente. Per verificare gli attributi e confermare i profili utente per l'accesso, Amazon Cognito invia un codice o un link nei messaggi agli utenti. Gli utenti devono quindi inserire il codice nell'interfaccia utente in modo che l'app possa confermarli in una richiesta API `ConfirmSignUp` o `AdminConfirmSignUp`.
**Nota**  
Puoi anche disabilitare la **verifica e conferma assistita da Cognito** e utilizzare azioni API autenticate o trigger Lambda per verificare gli attributi e confermare gli utenti.  
Scegliendo questa opzione, Amazon Cognito non invia alcun codice di verifica quando gli utenti effettuano la registrazione. Scegli questa opzione se utilizzi un flusso di autenticazione personalizzato che verifica almeno un metodo di contatto senza usare i codici di verifica di Amazon Cognito. Ad esempio, è possibile utilizzare un trigger Lambda di pre-registrazione che verifica automaticamente gli indirizzi e-mail che appartengono a un determinato dominio.  
Se non vengono verificate le informazioni di contatto degli utenti, in alcuni casi essi potrebbero non essere in grado di utilizzare l'app. Si noti che tutti gli utenti necessitano di informazioni di contatto verificate per:  
**Reimpostare la password utente** — Quando un utente effettua un'operazione nell'app che chiama l'operazione API `ForgotPassword`, Amazon Cognito invia una password temporanea all'indirizzo e-mail o al numero di telefono dell'utente. Amazon Cognito invia questa password solo se l'utente ha almeno un metodo di contatto verificato.
**Accesso tramite indirizzo e-mail o numero di telefono come alias** — Configurando il bacino d'utenza per consentire questi alias, un utente sarà in grado di accedere con un alias solo se è verificato. Per ulteriori informazioni, consulta [Personalizzazione degli attributi di accesso](user-pool-settings-attributes.md#user-pool-settings-aliases).

1. Scegli gli **attributi da verificare**:  
**Invia un messaggio SMS, verifica il numero di telefono**  
Amazon Cognito invia un codice di verifica tramite messaggio SMS all'accesso dell'utente. Scegli questa opzione se in genere comunichi con gli utenti tramite SMS. Ad esempio, si vorranno utilizzare numeri di telefono verificati se si inviano notifiche di consegna, conferme di appuntamenti o avvisi. I numeri di telefono dell'utente saranno l'attributo verificato al momento della conferma degli account; è necessario intraprendere ulteriori azioni per verificare e comunicare con gli indirizzi e-mail dell'utente.  
**Invia messaggio e-mail, verifica l'indirizzo email**  
Amazon Cognito invia un codice di verifica tramite messaggio SMS all'accesso dell'utente. Scegliere questa opzione se in genere si comunica con gli utenti tramite e-mail. Ad esempio, si vorranno utilizzare indirizzi e-mail verificati se si inviano estratti conto, riepiloghi di ordini o offerte speciali. Gli indirizzi e-mail dell'utente saranno l'attributo verificato al momento della conferma degli account; è necessario intraprendere ulteriori azioni per verificare e comunicare con gli indirizzi e-mail dell'utente.  
**Invia messaggio SMS se il numero di telefono è disponibile, altrimenti invia un messaggio e-mail**  
Scegliere questa opzione se non si necessita che tutti gli utenti dispongano del medesimo metodo di contatto verificato. In questo caso, la pagina di registrazione nell'app potrebbe richiedere agli utenti di verificare solo il metodo di contatto preferito. Quando Amazon Cognito un codice di verifica, lo invia al metodo di contatto fornito nella richiesta `SignUp` dall'app. Se un utente fornisce sia un indirizzo e-mail che un numero di telefono e l'app offre entrambi i metodi di contatto nella richiesta `SignUp`, Amazon Cognito invierà il codice di verifica solo al numero di telefono.  
Se occorre che gli utenti verifichino sia un indirizzo e-mail che un numero di telefono, scegliere questa opzione. Amazon Cognito verifica un metodo di contatto quando l'utente effettua la registrazione e l'app deve verificare l'altro metodo di contatto dopo che l'utente ha effettuato l'accesso. Per ulteriori informazioni, consulta [Se si richiede agli utenti di confermare sia gli indirizzi e-mail che i numeri di telefono](#verification-email-plus-phone).

1. Scegli **Salva modifiche**.

### Flusso di autenticazione con verifica di e-mail o telefono
<a name="verification-flow"></a>

Se il bacino d'utenza richiede agli utenti di verificare le proprie informazioni di contatto, l'app deve facilitare il seguente flusso quando un utente effettua la registrazione:

1. Un utente si iscrive alla tua app inserendo un nome utente, un numero di telefono, un indirizzo and/or email e possibilmente altri attributi.

1. Il servizio Amazon Cognito riceve la richiesta di registrazione dall'app. Dopo aver verificato che la richiesta contenga tutti gli attributi necessari per la registrazione, il servizio completa il processo di registrazione e invia un codice di conferma al telefono (tramite SMS) o all'indirizzo e-mail dell'utente. Il codice è valido per 24 ore.

1. Il servizio informa l'app che la registrazione è stata completata e che l'account utente è in attesa di conferma. La risposta contiene informazioni su dove è stato inviato il codice di conferma. A questo punto l'account utente è in stato non confermato e l'indirizzo e-mail e il numero di telefono dell'utente non sono verificati.

1. L'app è ora in grado di richiedere all'utente di inserire il codice di conferma. Non è necessario che l'utente inserisca il codice immediatamente. Tuttavia, l'utente non sarà in grado di effettuare l'accesso fino a quando non avrà inserito il codice di conferma.

1. L'utente inserisce il codice di conferma nell'app.

1. L'app chiama [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) per inviare il codice al servizio Amazon Cognito, il quale verifica il codice e, se è corretto, imposta l'account utente sullo stato confermato. Dopo aver confermato correttamente l'account utente, il servizio Amazon Cognito contrassegna automaticamente l'attributo utilizzato per la conferma (indirizzo e-mail o numero di telefono) come verificato. A meno che il valore di questo attributo non venga modificato, l'utente non dovrà verificarlo nuovamente.

1. A questo punto l'account utente è in stato confermato e l'utente può effettuare l'accesso.

### Se si richiede agli utenti di confermare sia gli indirizzi e-mail che i numeri di telefono
<a name="verification-email-plus-phone"></a>

Amazon Cognito verifica solo uno dei metodi di contatto quando un utente effettua la registrazione. Nei casi in cui Amazon Cognito deve scegliere tra la verifica di un indirizzo e-mail o di un numero di telefono, sceglie di verificare il numero di telefono inviando un codice di verifica tramite SMS. Ad esempio, se configuri il tuo bacino d'utenza per consentire agli utenti di verificare gli indirizzi e-mail o i numeri di telefono e se la tua app fornisce entrambi questi attributi al momento della registrazione, Amazon Cognito verifica solo il numero di telefono. Dopo che un utente ha verificato il proprio numero di telefono, Amazon Cognito imposta lo stato dell'utente su `CONFIRMED` e all'utente sarà consentito accedere all'app.

Dopo che l'utente ha effettuato l'accesso, la tua app può fornire l'opzione di verifica del metodo di contatto che non è stato verificato durante la registrazione. Per verificare il secondo metodo, la tua app chiama l'operazione API `VerifyUserAttribute`. Tieni presente che questa operazione richiede un parametro `AccessToken` e che Amazon Cognito fornisce solo i token di accesso agli utenti autenticati. Pertanto, puoi verificare il secondo metodo di contatto solo dopo che l'utente ha effettuato l'accesso.

Se hai bisogno che i tuoi utenti verifichino sia gli indirizzi e-mail che i numeri di telefono, effettua quanto segue:

1. Configurare il bacino d'utenza per consentire agli utenti di verificare l'indirizzo e-mail o il numero di telefono.

1. Nel flusso di registrazione dell'app, richiedere agli utenti di fornire un indirizzo e-mail e un numero di telefono. Chiamare l'operazione API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) e fornire l'indirizzo e-mail e il numero di telefono per il parametro `UserAttributes`. A questo punto, Amazon Cognito invia un codice di verifica al telefono dell'utente.

1. Nell'interfaccia dell'app, presentare una pagina di conferma in cui l'utente possa immettere il codice di verifica. Confermare l'utente chiamando l'operazione API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html). A questo punto, lo stato dell'utente è `CONFIRMED` e il suo numero di telefono verificato, ma non lo è l'indirizzo e-mail.

1. Presentare la pagina di accesso e autenticare l'utente chiamando l'operazione API [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_InitiateAuth.html). Dopo che l'utente è stato autenticato, Amazon Cognito restituisce un token di accesso all'app.

1. Chiama l'operazione API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html). Specificare i seguenti parametri nella richiesta.
   + `AccessToken`: il token di accesso restituito da Amazon Cognito quando l'utente ha effettuato l'accesso.
   + `AttributeName`: specifica `"email"` come valore dell'attributo.

   Amazon Cognito invia un codice di verifica all'indirizzo e-mail dell'utente.

1. Presentare una pagina di conferma in cui l'utente possa immettere il codice di verifica. Quando l'utente invia il codice, chiamare l'operazione API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html). Specificare i seguenti parametri nella richiesta.
   + `AccessToken`: il token di accesso restituito da Amazon Cognito quando l'utente ha effettuato l'accesso.
   + `AttributeName`: specifica `"email"` come valore dell'attributo.
   + `Code`: il codice di verifica fornito dall'utente.

   A questo punto, l'indirizzo e-mail è verificato.

## Permettere agli utenti di registrarsi ma confermarli come un amministratore del pool di utenti
<a name="signing-up-users-in-your-app-and-confirming-them-as-admin"></a>

Potrebbe essere necessario impedire al pool di utenti di inviare automaticamente messaggi di verifica nel pool di utenti, ma consentire comunque a chiunque di registrarsi per un account. Questo modello lascia spazio, ad esempio, alla revisione umana delle nuove richieste di registrazione e alla convalida ed elaborazione batch delle registrazioni. Puoi confermare nuovi account utente nella console Amazon Cognito o con l'operazione API autenticata tramite IAM. [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html) Puoi confermare gli account utente come un amministratore a prescindere che il pool di utenti invii o meno messaggi di verifica.

Con questa tecnica, puoi solo confermare l'iscrizione self-service di un utente. Per confermare un utente creato come amministratore, crea una richiesta [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html)API con set to. `Permanent` `True`

1. Un utente si iscrive alla tua app inserendo un nome utente, un numero di telefono, un indirizzo and/or email e possibilmente altri attributi.

1. Il servizio Amazon Cognito riceve la richiesta di registrazione dall'app. Dopo aver verificato che la richiesta contenga tutti gli attributi necessari per la registrazione, il servizio completa il processo di registrazione e indica all'app che la registrazione è stata completata ed è in attesa di conferma. A questo punto l'account utente è in stato non confermato. L'utente non può effettuare l'accesso fino a quando l'account non è confermato.

1. Conferma l'account dell'utente. È necessario accedere Console di gestione AWS o firmare la richiesta API con AWS le credenziali per confermare l'account. 

   1. **Per confermare un utente nella console Amazon Cognito, accedi al menu **Utenti**, scegli l'utente che desideri confermare e dal menu **Azioni** seleziona Conferma.**

   1. Per confermare un utente nell' AWS API o nella CLI, crea una richiesta [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html)API o [admin-confirm-sign-up](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-confirm-sign-up.html)in. AWS CLI

1. A questo punto l'account utente è in stato confermato e l'utente può effettuare l'accesso.

## Calcolo dei valori SecretHash
<a name="cognito-user-pools-computing-secret-hash"></a>

Assegnare un segreto del cliente al client dell'app riservata come una best practice. Quando si assegna un segreto del client al client dell'app, le richieste API del pool di utenti di Amazon Cognito devono includere un hash che includa il segreto del client nel corpo della richiesta. Per convalidare la conoscenza del segreto del client per le operazioni API nei seguenti elenchi, concatenare il segreto del client con l'ID del client dell'app e il nome dell'utente, quindi codificare in base64 tale stringa.

Quando l'app concede l'accesso agli utenti a un client con un hash segreto, puoi utilizzare il valore di qualsiasi attributo di accesso al pool di utenti come elemento nome utente dell'hash segreto. Quando l'app richiede nuovi token in un'operazione di autenticazione con `REFRESH_TOKEN_AUTH`, il valore dell'elemento nome utente dipende dagli attributi di accesso. Se il pool di utenti non ha `username` come attributo di accesso, imposta il valore hash segreto del valore nome utente della richiesta `sub` dell'utente dal token di accesso o token ID. Quando `username` è un attributo di accesso, imposta il valore hash segreto del nome utente dalla richiesta `username`.

I seguenti pool di utenti di Amazon Cognito APIs accettano un valore hash segreto del client in un parametro. `SecretHash`
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

Inoltre, quanto segue APIs accetta un valore hash client-secret in un `SECRET_HASH` parametro, nei parametri di autenticazione o in una risposta alla sfida.


| Operazione API | Parametro principale per SECRET\$1HASH | 
| --- |--- |
| InitiateAuth | AuthParameters | 
| AdminInitiateAuth | AuthParameters | 
| RespondToAuthChallenge | ChallengeResponses | 
| AdminRespondToAuthChallenge | ChallengeResponses | 

Il valore hash del segreto è un codice di autenticazione dei messaggi mediante algoritmi hash con chiave (HMAC) codificato in Base64 e calcolato utilizzando la chiave segreta del client di un pool di utenti e nome utente, oltre all'ID client nel messaggio. Il seguente pseudocodice mostra come viene calcolato questo valore. In questo pseudocodice, `+` indica la concatenazione, `HMAC_SHA256` rappresenta una funzione che produce un valore HMAC utilizzando Hmac e `Base64` rappresenta una funzione che produce una versione con codifica Base-64 dell'SHA256output hash.

```
Base64 ( HMAC_SHA256 ( "Client Secret Key", "Username" + "Client Id" ) )
```

Per una panoramica dettagliata su come calcolare e utilizzare il `SecretHash` parametro, consulta [Come posso risolvere gli errori «Impossibile verificare l'hash segreto per il client» dall'API dei miei pool di utenti di Amazon Cognito](https://aws.amazon.com/premiumsupport/knowledge-center/cognito-unable-to-verify-secret-hash/)<client-id>? nel Knowledge Center. AWS 

Puoi utilizzare i seguenti esempi di codice nel codice dell'app lato server.

------
#### [ Shell ]

```
echo -n "[username][app client ID]" | openssl dgst -sha256 -hmac [app client secret] -binary | openssl enc -base64
```

------
#### [ Java ]

```
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
 
public static String calculateSecretHash(String userPoolClientId, String userPoolClientSecret, String userName) {
    final String HMAC_SHA256_ALGORITHM = "HmacSHA256";
    
    SecretKeySpec signingKey = new SecretKeySpec(
            userPoolClientSecret.getBytes(StandardCharsets.UTF_8),
            HMAC_SHA256_ALGORITHM);
    try {
        Mac mac = Mac.getInstance(HMAC_SHA256_ALGORITHM);
        mac.init(signingKey);
        mac.update(userName.getBytes(StandardCharsets.UTF_8));
        byte[] rawHmac = mac.doFinal(userPoolClientId.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(rawHmac);
    } catch (Exception e) {
        throw new RuntimeException("Error while calculating ");
    }
}
```

------
#### [ Python ]

```
import sys
import hmac, hashlib, base64 
username = sys.argv[1] 
app_client_id = sys.argv[2] 
key = sys.argv[3] 
message = bytes(sys.argv[1]+sys.argv[2],'utf-8') 
key = bytes(sys.argv[3],'utf-8') 
secret_hash = base64.b64encode(hmac.new(key, message, digestmod=hashlib.sha256).digest()).decode() 
print("SECRET HASH:",secret_hash)
```

------

## Conferma degli account utente senza la verifica dell'e-mail o del numero di telefono
<a name="confirming-user-without-verification-of-email-or-phone-number"></a>

Il trigger Lambda di pre-registrazione può essere utilizzato per confermare automaticamente gli account utente al momento della registrazione, senza richiedere un codice di conferma e verificare l'e-mail o il numero di telefono. Gli utenti che si confermano in questo modo possono effettuare l'accesso immediatamente senza la necessità di ricevere un codice.

Tramite questo trigger, puoi anche contrassegnare l'e-mail o il numero di telefono di un utente come verificati. 

**Nota**  
Sebbene questo approccio sia utile per gli utenti che stanno appena cominciando, ti consigliamo di auto verificare almeno l'e-mail o il numero di telefono. In caso contrario, può accadere che l'utente non sia in grado di recuperare la password nel caso la dimentichi.

Se non richiedi che l'utente riceva e inserisca un codice di conferma durante la registrazione e non si esegue la verifica automatica di indirizzo e-mail e numero di telefono nel trigger Lambda di pre-registrazione, rischi di non avere un indirizzo e-mail o un numero di telefono verificato per quell'account utente. L'utente può verificare l'indirizzo e-mail o il numero di telefono in un secondo momento. Tuttavia, se l'utente dimentica la password e non dispone di un indirizzo e-mail o di un numero di telefono verificato, rimane bloccato fuori dall'account, in quanto il flusso di password dimenticata richiede un indirizzo e-mail o un numero di telefono verificato per inviare all'utente un codice di verifica.

## Verifica in caso di modifica dell'e-mail o del numero di telefono da parte dell'utente
<a name="verifying-when-users-change-their-email-or-phone-number"></a>

Nei pool di utenti configurati con più nomi di accesso, gli utenti possono inserire un numero di telefono o un indirizzo e-mail come nome utente al momento dell'accesso. Quando aggiornano il loro indirizzo e-mail o il numero di telefono nella tua app, Amazon Cognito può inviare loro immediatamente un messaggio con un codice che verifica la loro proprietà del nuovo valore dell'attributo. Per abilitare l'invio automatico di questi codici di verifica, consulta. [Configurazione della verifica di e-mail o telefono](user-pool-settings-email-phone-verification.md)

Gli utenti che ricevono un codice di verifica devono fornire tale codice ad Amazon Cognito in una [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)richiesta. Dopo aver fornito il codice, il relativo attributo viene contrassegnato come verificato. In genere, quando gli utenti aggiornano l'indirizzo e-mail o il numero di telefono, è necessario verificare che siano proprietari del nuovo valore prima che possano utilizzarlo per accedere e ricevere messaggi. I pool di utenti dispongono di un'opzione configurabile che determina se gli utenti devono verificare gli aggiornamenti del proprio indirizzo e-mail o numero di telefono.

Questa opzione è la proprietà `AttributesRequireVerificationBeforeUpdate` del pool di utenti. Configuralo in una [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#CognitoUserPools-UpdateUserPool-request-UserAttributeUpdateSettings)richiesta [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-UserAttributeUpdateSettings)o o con l'impostazione **Mantieni attivo il valore dell'attributo originale quando un aggiornamento è in sospeso** nel menu di **registrazione** della console Amazon Cognito.

Il modo in cui il tuo pool di utenti tratta gli aggiornamenti degli indirizzi e-mail e dei numeri di telefono dipende dalla configurazione del nome utente del tuo pool di utenti. I nomi utente del pool di utenti possono essere in una configurazione di *attributi di nome utente* in cui i nomi di accesso sono indirizzo e-mail, numero di telefono o entrambi. Possono anche essere in una configurazione di *attributi di alias* in cui l'`username`attributo è un nome di accesso insieme all'indirizzo e-mail, al numero di telefono o al nome utente preferito come nomi di accesso alternativi. Per ulteriori informazioni, consulta [Personalizzazione degli attributi di accesso](user-pool-settings-attributes.md#user-pool-settings-aliases).

 Puoi anche utilizzare un trigger Lambda per messaggi personalizzati per personalizzare il messaggio di verifica. Per ulteriori informazioni, consulta [Trigger Lambda di messaggi personalizzati](user-pool-lambda-custom-message.md). Quando l'indirizzo e-mail o il numero di telefono di un utente non sono verificati, l'applicazione deve informare l'utente che deve verificare l'attributo e fornire un pulsante o un collegamento per consentire agli utenti di inserire il codice di verifica.

La tabella seguente descrive in che modo `AttributesRequireVerificationBeforeUpdate` le impostazioni degli alias determinano il risultato quando gli utenti modificano il valore dei propri attributi di accesso.


| Configurazione del nome utente | Comportamento quando gli utenti devono verificare nuovi attributi | Comportamento quando agli utenti non è richiesto di verificare nuovi attributi | 
| --- | --- | --- | 
| Attributi nome utente | L'attributo originale rimane verificato, idoneo per l'accesso e al valore originale. Quando l'utente verifica un nuovo valore, Amazon Cognito aggiorna il valore dell'attributo, lo contrassegna come verificato e lo rende idoneo per l'accesso. | Amazon Cognito aggiorna l'attributo a un nuovo valore. Il nuovo valore è idoneo per l'accesso. Quando l'utente verifica un nuovo valore, Amazon Cognito lo contrassegna come verificato. | 
| Attributi alias | L'attributo originale rimane verificato, idoneo per l'accesso e al valore originale. Quando l'utente verifica un nuovo valore, Amazon Cognito aggiorna il valore dell'attributo, lo contrassegna come verificato e lo rende idoneo per l'accesso. | Amazon Cognito aggiorna l'attributo a un nuovo valore. Né il valore originale né quello nuovo dell'attributo sono idonei per l'accesso. Quando l'utente verifica un nuovo valore, Amazon Cognito aggiorna il valore dell'attributo, lo contrassegna come verificato e lo rende idoneo per l'accesso. | 

**Esempio 1**  
L'utente 1 accede all'applicazione con l'indirizzo e-mail `user1@example.com` e dispone del nome utente `user1` (attributi alias). Il tuo pool di utenti è configurato per verificare gli aggiornamenti degli attributi di accesso e per inviare automaticamente messaggi di verifica. Richiedono di aggiornare il proprio indirizzo e-mail a`user1+foo@example.com`. Ricevono un'e-mail di verifica all'indirizzo `user1+foo@example.com` e *possono accedere nuovamente* solo con l'indirizzo e-mail`user1@example.com`. Successivamente, inseriscono il codice di verifica e possono accedere nuovamente solo con l'indirizzo e-mail`user1+foo@example.com`.

**Esempio 2**  
L'utente 2 accede all'applicazione con l'indirizzo e-mail `user2@example.com` e dispone di un nome utente (attributi alias). Il tuo pool di utenti è configurato per *non* verificare gli aggiornamenti degli attributi di accesso e per inviare automaticamente messaggi di verifica. Richiedono di aggiornare il proprio indirizzo e-mail a`user2+bar@example.com`. Ricevono un'email di verifica all'indirizzo `user2+bar@example.com` e *non possono accedere nuovamente*. Successivamente, inseriscono il codice di verifica e possono accedere nuovamente solo con l'indirizzo e-mail`user2+bar@example.com`.

**Esempio 3**  
L'utente 3 accede all'applicazione con l'indirizzo e-mail `user3@example.com` e non dispone di un nome utente (attributi del nome utente). Il tuo pool di utenti è configurato per *non* verificare gli aggiornamenti degli attributi di accesso e per inviare automaticamente messaggi di verifica. Richiedono di aggiornare il proprio indirizzo e-mail a`user3+baz@example.com`. Ricevono un'email di verifica all'indirizzo`user3+baz@example.com`, ma *possono accedere immediatamente* senza che venga intrapresa alcuna azione aggiuntiva con il codice di verifica.

## Processo di conferma e verifica degli account utente creati dagli amministratori o dagli sviluppatori
<a name="confirmation-and-verification-of-users-whose-accounts-youve-created"></a>

Gli account utente creati da un amministratore o da uno sviluppatore sono già in stato confermato, per cui agli utenti non viene richiesto di inserire un codice di conferma. Il messaggio di invito che il servizio Amazon Cognito invia a questi utenti include il nome utente e una password temporanea. L'utente deve modificare la password prima di effettuare l'accesso. Per ulteriori informazioni, consulta la [Personalizzare e-mail ed SMS](how-to-create-user-accounts.md#creating-a-new-user-customize-messages) di [Creazione di account utente come amministratore](how-to-create-user-accounts.md) e il trigger di messaggio personalizzato in [Personalizzazione di flussi di lavoro di bacini d'utenza con trigger Lambda](cognito-user-pools-working-with-lambda-triggers.md).

## Processi di conferma e verifica per gli account utente importati
<a name="confirmation-and-verification-of-users-whose-accounts-youve-imported"></a>

Gli account utente creati utilizzando la funzionalità di importazione degli utenti nella CLI o nell'API (vedi[Importazione di utenti nel bacino d'utenza da un file CSV](cognito-user-pools-using-import-tool.md)) sono già nello stato confermato, quindi agli utenti non è richiesto di inserire un codice di conferma. Console di gestione AWS Non viene inviato alcun messaggio di invito. Tuttavia, gli account utente importati prevedono che gli utenti richiedano prima un codice chiamando l'API `ForgotPassword` e che in seguito creino una password utilizzando il codice inviato chiamando l'API `ConfirmForgotPassword` prima di effettuare l'accesso. Per ulteriori informazioni, consulta [Necessità degli utenti importati di ripristinare le password](cognito-user-pools-using-import-tool.md#cognito-user-pools-using-import-tool-password-reset).

L'e-mail o il numero di telefono devono essere contrassegnati come verificati quando l'account utente viene importato, in modo che non venga richiesta la verifica quando l'utente effettua l'accesso.

## Invio di e-mail durante il test dell'App
<a name="managing-users-accounts-email-testing"></a>

Amazon Cognito invia agli utenti messaggi e-mail quando creano e gestiscono i propri account nell'app client per il pool di utenti. Se configuri il bacino d'utenza per richiedere la verifica e-mail, Amazon Cognito invia un'e-mail quando:
+ Un utente effettua la registrazione.
+ Un utente aggiorna il suo indirizzo e-mail.
+ Un utente esegue un'operazione che chiama l'operazione API `ForgotPassword`.
+ Crei un account utente come amministratore.

A seconda dell'azione che attiva l'e-mail, l'e-mail contiene un codice di verifica o una password temporanea. I tuoi utenti devono ricevere queste e-mail e comprendere il messaggio. In caso contrario, potrebbero non essere in grado di effettuare l'accesso e utilizzare la tua app.

Per essere che le e-mail vengano inviate senza problemi e che il messaggio sia corretto, prova le operazioni nella tua app attivando le consegne e-mail da Amazon Cognito. Ad esempio, utilizzando la pagina di registrazione nella tua app oppure utilizzando l'operazione API `SignUp`, puoi attivare un'e-mail effettuando la registrazione con un indirizzo e-mail di prova. Quando esegui il testing in questo modo, ricorda quanto segue:

**Importante**  
Quando utilizzi un indirizzo e-mail per testare le operazioni che attivano le e-mail da Amazon Cognito, non utilizzare un indirizzo e-mail fittizio (ossia, senza una casella di posta associata). Utilizza un indirizzo e-mail reale che riceverà l'e-mail da Amazon Cognito senza creare un *mancato recapito permanente*.  
Un mancato recapito permanente si verifica quando Amazon Cognito non è in grado di consegnare le e-mail alla casella di posta del destinatario, cosa che accade sempre se la casella di posta è inesistente.  
Amazon Cognito limita il numero di e-mail che possono essere inviate da AWS account che subiscono ripetutamente hard bounce.

Quando provi le operazioni che attivano le e-mail, utilizza uno dei seguenti indirizzi e-mail per evitare gli hard bounce:
+ Un indirizzo per un account e-mail di tua proprietà che utilizzi per il testing. Quando utilizzi il tuo indirizzo e-mail, riceverai un'e-mail inviata da Amazon Cognito. Con questa e-mail, puoi utilizzare il codice di verifica per testare l'esperienza di registrazione nella tua app. Se hai personalizzato il messaggio e-mail per il tuo bacino d'utenza, puoi controllare che le personalizzazioni siano corrette.
+ L'indirizzo del simulatore di mailbox, *success@simulator.amazonses.com*. Se utilizzi l'indirizzo del simulatore, Amazon Cognito invia correttamente l'e-mail ma non sarai in grado di visualizzarla. Questa opzione è utile quando non è necessario utilizzare il codice di verifica né verificare il messaggio e-mail.
+ L'indirizzo del simulatore di mailbox con un'etichetta arbitraria aggiuntiva, come *success\$1user1@simulator.amazonses.com* o *success\$1user2@simulator.amazonses.com*. Amazon Cognito invia correttamente e-mail a questi indirizzi ma non sarai in grado di visualizzarle. Questa opzione è utile quando si desidera testare il processo di registrazione aggiungendo più utenti di prova al bacino d'utenza e ogni utente di prova ha un indirizzo e-mail univoco.

# Configurazione della verifica di e-mail o telefono
<a name="user-pool-settings-email-phone-verification"></a>

Puoi scegliere le impostazioni per la verifica tramite e-mail o telefono nel menu **Metodi di autenticazione**. Per ulteriori informazioni sull'autenticazione a più fattori (Multi-Factor Authentication, MFA), consulta [MFA con SMS](user-pool-settings-mfa-sms-email-message.md).

Amazon Cognito utilizza Amazon SNS per inviare messaggi SMS. Se non hai mai inviato un messaggio SMS da Amazon Cognito o da altri in Servizio AWS precedenza, Amazon SNS potrebbe inserire il tuo account nella sandbox SMS. Ti consigliamo di inviare un messaggio di prova a un numero di telefono verificato prima di rimuovere il tuo account dalla sandbox e spostarlo alla produzione. Inoltre, se intendi inviare messaggi SMS a numeri di telefono di destinazione negli Stati Uniti, devi ottenere un ID mittente o di origine da Amazon Pinpoint. Per configurare il pool di utenti Amazon Cognito per i messaggi SMS, consulta [Impostazioni dei messaggi SMS per i bacini d'utenza di Amazon Cognito](user-pool-sms-settings.md).

Amazon Cognito è in grado di verificare automaticamente gli indirizzi e-mail e i numeri di telefono. Per effettuare questa verifica, Amazon Cognito invia un codice di verifica oppure un link di verifica. Per gli indirizzi e-mail, Amazon Cognito invia il codice o il link tramite un messaggio e-mail. Puoi scegliere un **tipo di **codice** o **link** di verifica** quando modifichi il modello di **messaggio di verifica** nel menu **Modelli di messaggio** nella console Amazon Cognito. Per ulteriori informazioni, consulta [Personalizzazione dei messaggi di verifica delle e-mail](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-email-verification-message-customization).

Per i numeri di telefono, Amazon Cognito invia il codice con un SMS.

Amazon Cognito deve verificare un numero di telefono o un indirizzo e-mail per confermare gli utenti e aiutarli a recuperare le password dimenticate. In alternativa, puoi confermare automaticamente gli utenti con il trigger Lambda di pre-registrazione o utilizzare [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html)l'operazione API. Per ulteriori informazioni, consulta [Registrazione e conferma degli account utente](signing-up-users-in-your-app.md).

Il codice o link di verifica è valido 24 ore.

Se scegli di richiedere la verifica per un indirizzo e-mail o un numero di telefono, Amazon Cognito invia automaticamente il codice di verifica o il link quando un utente effettua la registrazione. Se il bacino d'utenza ha un [Trigger Lambda del mittente di SMS personalizzato](user-pool-lambda-custom-sms-sender.md) o [Trigger Lambda del mittente di e-mail personalizzato](user-pool-lambda-custom-email-sender.md) configurato, tale funzione viene invece richiamata.

**Note**  
L'utilizzo degli SMS per verificare i numeri di telefono viene addebitato separatamente da Amazon SNS. Per l'invio di messaggi e-mail, non viene addebitato alcun costo. Per le informazioni sui prezzi Amazon SNS, consulta la pagina [Prezzi Worldwide SMS](https://aws.amazon.com/sns/sms-pricing/). Per la lista dei paesi in cui è disponibile la messaggistica SMS, consulta la pagina [Supported regions and countries (regioni e paesi supportati)](https://docs.aws.amazon.com/sns/latest/dg/sms_supported-countries.html). 
Quando esegui il test delle operazioni nella tua app per la generazione di messaggi e-mail provenienti da Amazon Cognito, utilizza un indirizzo e-mail reale a cui Amazon Cognito può inviare messaggi senza incorrere in un mancato recapito permanente. Per ulteriori informazioni, consulta [Invio di e-mail durante il test dell'App](signing-up-users-in-your-app.md#managing-users-accounts-email-testing).
Il flusso della reimpostazione della password richiede l'indirizzo e-mail o il numero di telefono dell'utente per verificarne l'identità.

**Importante**  
Se un utente si registra sia con un numero di telefono sia con un indirizzo e-mail e le impostazioni del pool di utenti richiedono la verifica di entrambi gli attributi, Amazon Cognito invia un codice di verifica tramite SMS al numero di cellulare. Amazon Cognito non ha ancora verificato l'indirizzo e-mail, quindi l'app deve chiamare [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)per vedere se un indirizzo e-mail è in attesa di verifica. Se richiede una verifica, l'app deve chiamare [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html)per avviare il flusso di verifica dell'e-mail. Quindi deve inviare il codice di verifica [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)chiamando.

Puoi modificare la quota di spesa per i messaggi SMS per uno Account AWS e per singoli messaggi. I limiti si applicano solo al costo di invio di messaggi SMS. Per ulteriori informazioni, vedi **Cosa sono le quote di spesa a livello di account e di messaggio e come funzionano**? in [Amazon SNS FAQs](https://aws.amazon.com/sns/faqs/).

Amazon Cognito invia messaggi SMS utilizzando le risorse Amazon SNS nel luogo in cui è stato creato Regione AWS il pool di utenti o in una regione **alternativa legacy di Amazon SNS**, come indicato nella tabella seguente. L'eccezione è rappresentata dai bacini d'utenza Amazon Cognito nella regione Asia Pacifico (Seoul). Questi bacini d'utenza utilizzano la tua configurazione Amazon SNS nella regione Asia Pacifico (Tokyo). Per ulteriori informazioni, consulta [Scegli l'opzione Regione AWS per i messaggi SMS](user-pool-sms-settings.md#sms-choose-a-region).


| Regione di Amazon Cognito | Regione alternativa Amazon SNS legacy | 
| --- | --- | 
| Stati Uniti orientali (Ohio) | Stati Uniti orientali (Virginia settentrionale) | 
| Asia Pacifico (Mumbai) | Asia Pacifico (Singapore) | 
| Asia Pacifico (Seul) | Asia Pacifico (Tokyo) | 
| Canada (Centrale) | Stati Uniti orientali (Virginia settentrionale) | 
| Europa (Francoforte) | Europa (Irlanda) | 
| Europa (Londra) | Europa (Irlanda) | 

**Esempio: **se il tuo bacino d'utenza Amazon Cognito si trova in Asia Pacifico (Mumbai) e hai aumentato il tuo limite di spesa in ap-southeast-1, forse non ti conviene richiedere un aumento separato in ap-south-1. Piuttosto, puoi utilizzare le tue risorse Amazon SNS in Asia Pacifico (Singapore). 

## Verifica degli aggiornamenti a indirizzi e-mail e numeri di telefono
<a name="user-pool-settings-verifications-verify-attribute-updates"></a>

Un attributo di indirizzo e-mail o un numero di telefono può diventare attivo e non verificato subito dopo che l'utente ha modificato il relativo valore. Amazon Cognito può anche richiedere che l'utente verifichi il nuovo valore prima che Amazon Cognito aggiorni l'attributo. Quando è necessario che gli utenti verifichino innanzitutto il nuovo valore, possono utilizzare il valore originale per l'accesso e per ricevere messaggi fino a quando non verificheranno il nuovo valore.

Quando gli utenti possono utilizzare il proprio indirizzo e-mail o numero di telefono come alias di accesso nel pool di utenti, il nome di accesso per un attributo aggiornato dipende dall'eventuale richiesta di verifica degli attributi aggiornati. Quando si richiede che gli utenti verifichino un attributo aggiornato, un utente può accedere con il valore originale dell'attributo fino a quando non verifica il nuovo valore. Quando non si richiede che gli utenti verifichino un attributo aggiornato, un utente non può accedere o ricevere messaggi con il valore nuovo o originale fino a quando non verifica il nuovo valore. 

Ad esempio, il pool di utenti consente l'accesso con un alias di indirizzo e-mail e richiede che gli utenti verifichino il proprio indirizzo e-mail al momento dell'aggiornamento. Sue, che ha effettuato l'accesso come `sue@example.com`, vuole cambiare il suo indirizzo email in `sue2@example.com` ma per errore immette `ssue2@example.com`. Sue non riceve l'e-mail di verifica, quindi non può verificare `ssue2@example.com`. Sue accede come `sue@example.com` e invia nuovamente il modulo nell'app per aggiornare il suo indirizzo e-mail in `sue2@example.com`. Riceve il messaggio e-mail, fornisce il codice di verifica all'app e inizia ad accedere come `sue2@example.com`. 

**Quando un utente aggiorna un attributo e il pool di utenti verifica i nuovi valori degli attributi**
+ Possono accedere con il valore dell'attributo originale prima di aver confermato il codice per verificare il nuovo valore.
+ Possono accedere solo con il valore dell'attributo originale dopo aver confermato il codice per verificare il nuovo valore.
+ Se `phone_number_verified` imposti `email_verified` o `true` abiliti una richiesta [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API, possono accedere prima di aver confermato il codice che Amazon Cognito gli ha inviato.

**Quando un utente aggiorna un attributo e il pool di utenti non verifica i nuovi valori degli attributi**
+ Non possono accedere né ricevere messaggi utilizzando il valore dell'attributo originale.
+ Non possono accedere né ricevere messaggi diversi da un codice di conferma utilizzando il nuovo valore dell'attributo prima di aver confermato il codice per verificare il nuovo valore.
+ Se `phone_number_verified` imposti `email_verified` o `true` abiliti una richiesta [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API, possono accedere prima di aver confermato il codice che Amazon Cognito gli ha inviato.

## Richiedere la verifica dell'attributo quando gli utenti aggiornano l'indirizzo e-mail o numero di telefono


1. Accedi alla [console Amazon Cognito](https://console.aws.amazon.com/cognito/home). Se richiesto, inserisci le tue AWS credenziali.

1. Nel pannello di navigazione, scegli **User Pools** (Bacini d'utenza) e seleziona i bacini d'utenza che intendi modificare.

1. Nel **menu Registrazione**, scegli **Modifica** sotto **Verifica degli attributi e conferma dell'account utente**.

1. Scegli **Keep original attribute value active when an update is pending** (Mantieni attivo il valore dell'attributo originale quando un aggiornamento è in sospeso).

1. In **Active attribute values when an update is pending** (Valori di attributo attivi quando un aggiornamento è in sospeso), scegli gli attributi che gli utenti devono di verificare prima che Amazon Cognito aggiorni il valore.

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

Per richiedere la verifica dell'aggiornamento degli attributi con l'API Amazon Cognito, puoi impostare il `AttributesRequireVerificationBeforeUpdate` parametro in una [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)richiesta.

## Autorizzazione di Amazon Cognito a inviare SMS per tuo conto
<a name="user-pool-settings-verifications-iam-role-for-sms"></a>

Per poter inviare SMS agli utenti per tuo conto, Amazon Cognito ha bisogno della tua autorizzazione. Per concedere tale autorizzazione, puoi creare un ruolo AWS Identity and Access Management (IAM). Nel menu **Metodi di autenticazione** della console Amazon Cognito in SMS, scegli **Modifica** per impostare un ruolo.

# Configurazione MFA, autenticazione, verifica e messaggi di invito
<a name="cognito-user-pool-settings-message-customizations"></a>

Con Amazon Cognito, puoi personalizzare l'autenticazione, la verifica e i messaggi di invito degli utenti tramite SMS ed e-mail per migliorare la sicurezza e l'esperienza utente della tua applicazione. Per alcuni messaggi puoi scegliere tra verifiche basate su codice e verifiche dei link con un clic. Questo argomento spiega come personalizzare le comunicazioni di autenticazione e verifica nella console Amazon Cognito. 

Nel menu **Modelli di messaggi**, puoi personalizzare:
+ I tuoi modelli di messaggi di posta elettronica e SMS per l'autenticazione con password monouso (OTP) e a più fattori (MFA)
+ I messaggi di verifica degli SMS e delle e-mail
+ Il tipo di verifica dell'e-mail, ovvero codice o link
**Nota**  
Amazon Cognito invia link con il tuo modello basato su link nei messaggi di verifica quando gli utenti si iscrivono o inviano nuovamente un codice di conferma. Le e-mail relative alle operazioni di aggiornamento degli attributi e di reimpostazione della password utilizzano il modello di codice.
+ I messaggi di invito degli utenti
+ Gli indirizzi e-mail FROM e REPLY-TO delle e-mail del bacino d'utenza

**Nota**  
I modelli di messaggi di verifica via SMS ed e-mail vengono visualizzati solo se hai scelto di richiedere la verifica del numero di telefono e dell'e-mail. Analogamente, il modello di messaggio MFA SMS viene visualizzato solo se le impostazioni MFA sono **obbligatorie** o **facoltative**.

**Topics**
+ [

## Modelli dei messaggi
](#cognito-user-pool-settings-message-templates)
+ [

## Personalizzazione dei messaggi MFA per e-mail e SMS
](#cognito-user-pool-settings-SMS-message-customization)
+ [

## Personalizzazione dei messaggi di verifica delle e-mail
](#cognito-user-pool-settings-email-verification-message-customization)
+ [

## Personalizzazione dei messaggi di invito degli utenti
](#cognito-user-pool-settings-user-invitation-message-customization)
+ [

## Personalizzazione dell'indirizzo e-mail
](#cognito-user-pool-settings-email-address-customization)
+ [

## Autorizzazione di Amazon Cognito a inviare e-mail di Amazon SES per tuo conto (da un indirizzo e-mail FROM personalizzato)
](#cognito-user-pool-settings-ses-authorization-to-send-email)

## Modelli dei messaggi
<a name="cognito-user-pool-settings-message-templates"></a>

Puoi utilizzare i modelli di messaggio per inserire segnaposti nei tuoi messaggi. Amazon Cognito sostituisce i segnaposto con i valori corrispondenti. Puoi fare riferimento ai *segnaposto Universal Template* nei modelli di messaggio di qualsiasi tipo, anche se questi valori non saranno presenti in tutti i tipi di messaggio.


**Segnaposto universali modello**  

|  Description  |  Token  | Tipo di messaggio | 
| --- | --- | --- | 
| Codice di verifica | \$1\$1\$1\$1\$1\$1 | Messaggi di verifica, conferma e MFA | 
| Password temporanea | \$1\$1\$1\$1\$1\$1 | Password dimenticata e messaggi di invito | 
| Nome utente | \$1username\$1 | Invito e messaggi di sicurezza avanzati | 

Una delle risposte automatiche disponibili con [protezione dalle minacce](cognito-user-pool-settings-threat-protection.md) consiste nel notificare all'utente che Amazon Cognito ha rilevato attività potenzialmente dannose. Puoi utilizzare i segnaposti dei modelli di sicurezza avanzata per:
+ Includere dettagli specifici su un evento come l'indirizzo IP, la città, il paese, l'ora di accesso e il nome del dispositivo. La protezione dalle minacce di Amazon Cognito può analizzare questi dettagli.
+ Verificare se un link con un clic è valido.
+ Usare l'ID dell'evento, il token di feedback e il nome utente per costruire il tuo link con un solo clic.

**Nota**  
Per generare link con un clic e utilizzare i segnaposti `{one-click-link-valid}` e `{one-click-link-invalid}` nei modelli di e-mail di sicurezza avanzati, devi disporre già di un dominio configurato per il pool di utenti.

La protezione dalle minacce aggiunge i seguenti segnaposti che puoi inserire nei modelli di messaggio. Questi segnaposto si applicano ai **messaggi di autenticazione adattiva**, notifiche che Amazon Cognito invia agli utenti le cui sessioni sono state valutate per un livello di rischio. Per configurare i modelli di messaggio con queste variabili, aggiorna la **configurazione completa** della protezione dalle minacce nella console Amazon Cognito o invia i modelli in [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)una richiesta.


**Segnaposti dei modelli di sicurezza avanzata**  

|  Description  |  Token  | 
| --- | --- | 
| IP address (Indirizzo IP) | \$1ip-address\$1 | 
| City | \$1city\$1 | 
| Paese | \$1country\$1 | 
| Orario di accesso | \$1login-time\$1 | 
| Nome dispositivo | \$1device-name\$1 | 
| Il link con un clic è valido | \$1one-click-link-valid\$1 | 
| Il link con un clic non è valido | \$1one-click-link-invalid\$1 | 
| ID evento | \$1event-id\$1 | 
| Token del feedback | \$1feedback-token\$1 | 

## Personalizzazione dei messaggi MFA per e-mail e SMS
<a name="cognito-user-pool-settings-SMS-message-customization"></a>

Per personalizzare gli SMS e i messaggi e-mail per [l'autenticazione a più fattori (MFA](user-pool-settings-mfa.md)), modifica il messaggio **MFA** dal menu Modelli di messaggi **nella console dei pool** di utenti di Amazon Cognito.

**Importante**  
Il tuo messaggio personalizzato deve contenere il segnaposto `{####}`. Questo segnaposto verrà sostituito con il codice di autenticazione al momento dell'invio del messaggio.

Amazon Cognito imposta una lunghezza massima per i messaggi SMS, incluso il codice di autenticazione, di 140 caratteri UTF-8.

### Personalizzazione dei messaggi di verifica degli SMS
<a name="cognito-user-pool-settings-SMS-verification-message-customization"></a>

Per personalizzare il messaggio SMS per la verifica del numero di telefono, modifica il modello di **messaggio di verifica** dal menu **Modelli di messaggi** del tuo pool di utenti.

**Importante**  
Il tuo messaggio personalizzato deve contenere il segnaposto `{####}`. Questo segnaposto verrà sostituito con il codice di verifica al momento dell'invio del messaggio.

La lunghezza massima per il messaggio è pari a 140 caratteri UTF-8, incluso il codice di verifica.

## Personalizzazione dei messaggi di verifica delle e-mail
<a name="cognito-user-pool-settings-email-verification-message-customization"></a>

Per verificare l'indirizzo e-mail di un utente nel bacino d'utenza con Amazon Cognito, puoi inviare all'utente un messaggio e-mail con un link selezionabile, oppure un codice da inserire.

Per personalizzare l'oggetto e il contenuto del messaggio per i messaggi di verifica dell'indirizzo e-mail, modifica il modello di **messaggio di verifica** nel menu **Modelli di messaggio** del tuo pool di utenti. Puoi scegliere un **Tipo di verifica** di **Codice** o **Collegamento** quando modifichi il modello **Messaggi di verifica**.

Quando scegli **Codice** come tipo di verifica, il messaggio personalizzato deve contenere il segnaposto `{####}`. Quando invii il messaggio, il segnaposto viene sostituito con il codice di verifica.

Quando scegli **Collegamento** come tipo di verifica, il messaggio personalizzato deve includere un segnaposto nel formato `{##Verify Your Email##}`. Puoi modificare la stringa di testo tra i caratteri segnaposto, ad esempio `{##Click here##}`. Il segnaposto viene sostituito da un link di verifica con il testo *Verifica il tuo indirizzo e-mail*.

Il link per un messaggio di verifica e-mail indirizza l'utente a un URL come nell'esempio seguente.

```
https://<your user pool domain>/confirmUser/?client_id=abcdefg12345678&user_name=emailtest&confirmation_code=123456
```

La lunghezza massima per il messaggio è pari a 20.000 caratteri UTF-8, incluso il codice di verifica (se presente). È possibile utilizzare i tag HTML in questo messaggio per formattare i contenuti.

## Personalizzazione dei messaggi di invito degli utenti
<a name="cognito-user-pool-settings-user-invitation-message-customization"></a>

Puoi personalizzare il messaggio di invito utente che Amazon Cognito invia ai nuovi utenti tramite SMS o messaggio e-mail modificando il modello **Messaggi di invito** nel menu **Modelli di messaggio**.

**Importante**  
Il tuo messaggio personalizzato deve contenere i segnaposti `{username}` e `{####}`. Quando Amazon Cognito invia il messaggio di invito, sostituisce questi segnaposti con il nome utente e la password dell'utente.

La lunghezza massima di un messaggio SMS è pari a 140 caratteri UTF-8, incluso il codice di verifica. La lunghezza massima di un messaggio e-mail è pari a 20.000 caratteri UTF-8, incluso il codice di verifica. È possibile utilizzare tag HTML nei messaggi e-mail per formattare il contenuto.

## Personalizzazione dell'indirizzo e-mail
<a name="cognito-user-pool-settings-email-address-customization"></a>

Per impostazione predefinita, i messaggi e-mail che Amazon Cognito invia agli utenti nel bacino d'utenza provengono dall'indirizzo **no-reply@verificationemail.com**. Puoi specificare indirizzi e-mail personalizzati FROM e REPLY-TO da usare al posto di **no-reply@verificationemail.com**.

**Per personalizzare gli indirizzi e-mail del mittente (FROM) e del destinatario (REPLY-TO)**

1. Passa alla [console Amazon Cognito](https://console.aws.amazon.com/cognito/home) e scegli **bacini d'utenza**.

1. Scegli un bacino d'utenza esistente dall'elenco o [creane uno nuovo](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Scegli il menu **Metodi di autenticazione**. Alla voce **E-mail**, scegli **Modifica**.

1. Scegli una **Regione SES**.

1. Scegli un **indirizzo e-mail FROM** dall'elenco degli indirizzi e-mail verificati con Amazon SES nella **Regione SES** selezionata. Per utilizzare un indirizzo e-mail proveniente da un dominio verificato, configura le impostazioni e-mail nell' AWS API AWS Command Line Interface o. Per ulteriori informazioni, consulta [Verifica indirizzi e-mail e domini in Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html) nella *Guida per gli sviluppatori di Amazon SES*.

1. Scegli un **Set di configurazione** dall'elenco dei set di configurazione nella **Regione SES** selezionata.

1. Inserisci un **nome mittente FROM** cordiale per i tuoi messaggi e-mail nel formato `John Stiles <johnstiles@example.com>`.

1. Per personalizzare l'indirizzo e-mail del destinatario, inserisci un indirizzo e-mail valido nel campo **Indirizzo e-mail destinatario**.

## Autorizzazione di Amazon Cognito a inviare e-mail di Amazon SES per tuo conto (da un indirizzo e-mail FROM personalizzato)
<a name="cognito-user-pool-settings-ses-authorization-to-send-email"></a>

Puoi configurare Amazon Cognito per inviare e-mail da un indirizzo e-mail FROM personalizzato anziché dal relativo indirizzo predefinito. Per utilizzare un indirizzo personalizzato, devi concedere ad Amazon Cognito l'autorizzazione ad inviare un messaggio e-mail da un'identità verificata di Amazon SES. Nella maggior parte dei casi, per concedere tale autorizzazione crea una policy di autorizzazione all'invio. Per ulteriori informazioni, consulta [Utilizzo dell'autorizzazione di invio con Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html) nella *Guida per gli sviluppatori di Amazon Simple Email Service*. 

Quando configuri un bacino d'utenza per utilizzare Amazon SES per i messaggi e-mail, Amazon Cognito crea il ruolo `AWSServiceRoleForAmazonCognitoIdpEmailService` nel tuo account per concedere l'accesso ad Amazon SES. Non è necessario alcuna policy di autorizzazione per l'invio quando viene utilizzato il `AWSServiceRoleForAmazonCognitoIdpEmailService` ruolo collegato ai servizi. È necessario aggiungere una policy di autorizzazione per l'invio solo quando si utilizzano entrambe le funzionalità e-mail predefinite nel bacino d'utenza *e* un'identità Amazon SES verificata come indirizzo FROM.

Per ulteriori informazioni sul ruolo collegato al servizio creato da Amazon Cognito, consulta [Utilizzo di ruoli collegati ai servizi per Amazon Cognito](using-service-linked-roles.md).

L'esempio seguente di policy di autorizzazione di invio garantisce ad Amazon Cognito la possibilità limitata di utilizzare un'identità verificata di Amazon SES. Amazon Cognito può inviare e-mail solo quando lo fa per conto sia del bacino d'utenza nella condizione `aws:SourceArn` sia dell'account nella condizione `aws:SourceAccount`. Per altri esempi, consulta [Esempi di policy di autorizzazione di invio di Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policy-examples.html) nella *Guida per gli sviluppatori di Amazon Simple Email Service*.

**Nota**  
In questo esempio, il valore "Sid" è una stringa arbitraria che identifica in modo univoco l'istruzione. Per ulteriori informazioni sulla sintassi della policy, consulta [Policy di autorizzazione di invio di Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policies.html) nella *Guida per gli sviluppatori di Amazon Simple Email Service*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "stmnt1234567891234",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "email.cognito-idp.amazonaws.com"
                ]
            },
            "Action": [
                "SES:SendEmail",
                "SES:SendRawEmail"
            ],
            "Resource": "arn:aws:ses:us-east-1:111122223333:identity/support@example.com",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
                }
            }
        }
    ]
}
```

------

La console Amazon Cognito aggiunge una policy del genere quando viene selezionata un'identità Amazon SES dal menu a discesa. Se utilizzi la CLI o l'API per configurare il bacino d'utenza, è necessario allegare una policy strutturata in modo simile all'esempio precedente alla tua identità di Amazon SES.