

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

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