Salta al contenuto

Come posso risolvere gli errori relativi all'MFA che ricevo nel mio pool di utenti Amazon Cognito?

7 minuti di lettura
0

Ricevo messaggi di errore quando configuro l'autenticazione a più fattori (MFA) nel mio pool di utenti Amazon Cognito.

Risoluzione

Risolvi gli errori relativi all'MFA tramite SMS

Errore "InvalidSmsRoleAccessPolicyException"

Questo errore si verifica quando il ruolo AWS Identity and Access Management (AWS IAM) non ha l'autorizzazione per utilizzare Amazon SNS per pubblicare messaggi di testo SMS.

Per risolvere il problema, completa i passaggi seguenti per aggiungere l'autorizzazione sns:Publish al ruolo IAM:

  1. Apri la console Amazon Cognito.
  2. Nel pannello di navigazione, scegli Pool di utenti.
  3. Seleziona il pool di utenti.
  4. Nel pannello di navigazione, in Autenticazione, scegli Metodi di autenticazione.
  5. Nella sezione SMS, annota il nome dell'ARN del ruolo IAM.
  6. Apri la console IAM.
  7. Nel pannello di navigazione, scegli Ruoli.
  8. Nella barra di ricerca, inserisci il nome del ruolo IAM, quindi selezionalo.
  9. Nella sezione Policy di autorizzazione, seleziona la policy collegata al ruolo IAM.
  10. Nella pagina Dettagli sulla policy, scegli Modifica per aggiungere l'autorizzazione sns:publish.
  11. Scegli Avanti.
  12. Scegli Salva le modifiche.
  13. Verifica che una policy di controllo del servizio (SCP) non blocchi l'azione sns:Publish.

Errore "InvalidSmsRoleTrustRelationshipException"

Questo errore si verifica quando il ruolo IAM non ha una relazione di attendibilità che consenta ad Amazon Cognito di assumere il ruolo. Ciò accade quandocognito-idp.amazonaws.com non è affidabile o l'ID esterno nella policy di attendibilità del ruolo non corrisponde a quello contenuto nella configurazione degli SMS del pool di utenti.

Per risolvere il problema, configura correttamente la policy di attendibilità del ruolo IAM. Per istruzioni, consulta Prepara un ruolo IAM che Amazon Cognito possa utilizzare per inviare messaggi con il sistema di messaggistica per utenti finali AWS SMS.

Errore "InvalidParameterException"

Questo errore si verifica quando la richiesta API invia un parametro non valido ad Amazon Cognito. Per risolvere il problema, specifica tutti i valori obbligatori nel parametro SmsMfaConfiguration dell'API SetUserPoolMfaConfig.

Risolvi gli errori relativi all'MFA tramite TOTP

Requisiti:

Nota: i gestori dell'identità digitale esterni gestiscono l'MFA per gli utenti federati. Amazon Cognito non richiede l'MFA durante la federazione degli utenti.

Errore "NotAuthorizedException: Access token does not have required scopes"

Questo errore si verifica quando il token di accesso non include l'ambito aws.cognito.signin.user.admin richiesto per chiamare l'API AssociateSoftwareToken. Quando un utente utilizza l'API InitiateAuth per accedere, l'API InitiateAuth include automaticamente questo ambito nel token di accesso.

Tuttavia, quando un utente utilizza la pagina di accesso gestita per accedere, verifica che il token di accesso includa l'ambito aws.cognito.signin.user.admin. Per verificare se il token include l'ambito aws.cognito.signin.user.admin, decodifica il payload del token di accesso con Base64. Per ulteriori informazioni, consulta Conferma della struttura del JWT.

Se il token non include l'ambito aws.cognito.signin.user.admin, completa i seguenti passaggi per aggiungerlo:

  1. Apri la console Amazon Cognito.
  2. Nel pannello di navigazione, scegli Pool di utenti.
  3. Seleziona il pool di utenti che desideri modificare.
  4. Nel pannello di navigazione, alla voce Applicazioni, scegli Client dell'app.
  5. Seleziona il client dell'app che desideri modificare.
  6. Scegli la scheda Pagine di accesso, quindi seleziona Modifica.
  7. Nell'elenco a discesa Ambiti OpenID Connect, scegli aws.cognito.signin.user.admin.
  8. Scegli Salva le modifiche.

Errore "NotAuthorizedException: Invalid session for the user, session can only be used once"

Questo errore si verifica quando un utente tenta di riutilizzare una sessione. Se gli utenti ricevono questo errore durante un flusso di autenticazione MFA tramite TOTP, devono riavviare il processo di autenticazione dall'inizio. Per riavviare l'autenticazione, utilizza l'API InitiateAuth o AdminInitiateAuth.

Errore "NotAuthorizedException: Invalid session for the user, session is expired"

Questo errore si verifica quando la sessione scade. Per impostazione predefinita, le sessioni scadono dopo 3 minuti.

Per risolvere il problema, aumenta la durata del flusso della sessione di autenticazione nel client dell'app. Puoi aumentare la durata fino a 15 minuti.

Errore "CodeMismatchException: Invalid code or auth state for the user"

Questo errore si verifica quando il codice TOTP dell'utente non è valido, lo stato dell'utente non supporta la chiamata API o il codice TOTP è scaduto. Ad esempio, un utente chiama l'API RespondToAuthChallenge con una verifica MFA_SETUP e non ha configurato l'MFA tramite TOTP.

Per risolvere il problema, completa i seguenti passaggi:

  1. Configura l’MFA tramite TOTP per l'utente.
  2. Chiama l'API RespondToAuthChallenge con la verifica MFA_SETUP.
  3. Controlla che le impostazioni dell'ora del dispositivo utente corrispondano all'ora corrente per generare codici TOTP validi.

Errore "InvalidParameterException: User does not have delivery config set to turn on SOFTWARE_TOKEN_MFA"

Questo errore si verifica quando non è stata configurata l'MFA tramite TOTP per gli utenti. Per risolvere il problema, configura l'MFA tramite TOTP prima di chiamare l'APISetUserMFAPreference o AdminSetUserMFAPreference.

Errore "SoftwareTokenMFANotFoundException: Software Token MFA has not been enabled by the userPool"

Questo errore si verifica perché non è stata configurata l'MFA tramite TOTP nel pool di utenti. Per risolvere il problema, configura con l'MFA TOTP.

Errore "NotAuthorizedException: Invalid session for the use"

Questo errore si verifica per i seguenti motivi:

  • Una chiamata API include una stringa di sessione errata.
  • Le chiamate API non avvengono nella sequenza corretta.

Per risolvere il problema, configura le chiamate API nella sequenza corretta. Ad esempio, per ricevere la stringa di sessione nella risposta, chiama prima l'API InitiateAuth. Per evitare un errore, verifica che la chiamata API successiva utilizzi la stringa di sessione restituita nel parametro di richiesta.

Errore "EnableSoftwareTokenMFAException: Code mismatch"

Questo errore si verifica quando il codice TOTP inviato dall'utente non corrisponde a quanto previsto da Amazon Cognito durante la configurazione dell'MFA tramite TOTP.

Per risolvere il problema, intraprendi le seguenti azioni:

  • Recupera il codice segreto dall'API AssociateSoftwareToken.
  • Salva il codice segreto nell'applicazione di autenticazione.
  • Invia un codice TOTP aggiornato.
  • Utilizza il codice segreto che hai recuperato dall'API AssociateSoftwareToken per generare un codice QR. Quindi utilizza il seguente esempio di codice per configurare l'applicazione di autenticazione.

Esempio di codice Python per generare un codice QR dal codice segreto:

import pyotp
from qrcode.main import QRCode

secret_key = "secret-key-retrieved-from-associate-software-token-api"

totp = pyotp.TOTP(secret_key)
provisioning_uri = totp.provisioning_uri()

qr = QRCode()
qr.add_data(provisioning_uri)
qr.make()
qr.print_ascii()

Risolvi gli errori relativi all'MFA tramite e-mail

Prima di configurare l'e-mail come fattore MFA, devi configurare Amazon Simple Email Service (Amazon SES) nel pool di utenti per inviare messaggi e-mail agli utenti.

Quando attivi l'autenticazione a più fattori e scegli l'e-mail come secondo fattore, Amazon Cognito invia messaggi e-mail a un indirizzo e-mail non verificato. Dopo che gli utenti hanno completato la verifica MFA tramite e-mail, Amazon Cognito imposta l'attributo email_verified su true.

Errore "InvalidParameterException: Cannot set EmailMfaConfiguration when user pool EmailConfiguration contains an EmailSendingAccount of COGNITO_DEFAULT"

Questo errore si verifica quando utilizzi la configurazione e-mail predefinita. Per risolvere il problema, configura le impostazioni e-mail di Amazon SES per il pool di utenti.

Errore "InvalidParameterException: Cannot set EmailMfaConfiguration when user pool AccountRecoverySetting is not set or contains only verified_email in RecoveryMechanisms"

Questo errore si verifica quando utilizzi solo l'e-mail per il metodo di recupero dell'account dell'utente. Non puoi utilizzare lo stesso fattore sia per l'MFA che per il recupero dell'account. Per risolvere il problema, scegli un metodo di recupero dell'account diverso dall'e-mail. Per istruzioni, consulta Configura la reimpostazione e il ripristino della password.

Errore "FeatureUnavailableInTierException"

Questo errore si verifica quando il pool di utenti ha il piano di funzionalità Lite. Solo i piani Essentials e Plus includono l'autenticazione MFA tramite e-mail. Per risolvere il problema, cambia il piano del pool di utenti passando a Essentials o Plus.

Informazioni correlate

Aggiunta dell'autenticazione MFA a un pool di utenti

MFA tramite SMS e messaggi di posta elettronica

AWS UFFICIALEAggiornata 5 mesi fa