Utilizzo dei dispositivi utente nel pool di utenti - Amazon Cognito

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

Utilizzo dei dispositivi utente nel pool di utenti

Quando accedi agli utenti del pool di utenti locali con i pool di utenti di Amazon CognitoAPI, puoi associare i registri delle attività degli utenti provenienti da funzionalità di sicurezza avanzate a ciascuno dei loro dispositivi e, facoltativamente, consentire agli utenti di ignorare l'autenticazione a più fattori (MFA) se utilizzano un dispositivo affidabile. Amazon Cognito include una chiave del dispositivo nella risposta a qualsiasi accesso che non includa già le informazioni sul dispositivo. La chiave del dispositivo è nel formato Region_UUID. Con una chiave del dispositivo, una libreria Secure Remote Password (SRP) e un pool di utenti che consente l'autenticazione del dispositivo, puoi richiedere agli utenti della tua app di fidarsi del dispositivo corrente e di non richiedere più un MFA codice all'accesso.

Configurazione dei dispositivi memorizzati

Con i pool di utenti di Amazon Cognito, puoi associare ogni dispositivo degli utenti a un identificatore univoco, ovvero a una chiave del dispositivo. Specificando la chiave del dispositivo ed eseguendo l'autenticazione del dispositivo al momento dell'accesso, puoi sfruttare due funzionalità.

  1. Con le funzionalità di sicurezza avanzata, puoi monitorare l'attività degli utenti su dispositivi specifici per scopi di sicurezza e analisi. Quando gli utenti accedono, l'app può autenticare ogni utente e il relativo dispositivo, aggiungendo informazioni sul dispositivo ai log delle attività.

  2. Remembering devices supporta anche un flusso di autenticazione affidabile dei dispositivi, in cui gli utenti possono scegliere di accedere senza attendere MFA fino a un secondo momento, in base ai requisiti di sicurezza dell'app o alle preferenze degli utenti. Ad esempio, l'applicazione potrebbe richiedere agli utenti di considerare attendibile un dispositivo per 30, 60 o 90 giorni. È possibile memorizzare questa data in un attributo personalizzato e, in quella data, modificare lo stato memorizzato del dispositivo. È quindi necessario richiedere nuovamente all'utente di inviare un MFA codice e impostare il dispositivo in modo che venga nuovamente memorizzato dopo l'autenticazione riuscita.

    I dispositivi ricordati possono essere sostituiti MFA solo nei pool di utenti con active. MFA

Quando l'utente accede con un dispositivo memorizzato, è necessario eseguire un'autenticazione aggiuntiva del dispositivo durante il flusso di autenticazione. Per ulteriori informazioni, consulta Accesso con un dispositivo.

Configura la memorizzazione del dispositivo a livello di pool di utenti nella scheda Esperienza di accesso del pool di utenti, in Monitoraggio del dispositivo. Quando imposti le funzionalità dei dispositivi memorizzati nella console Amazon Cognito, hai tre opzioni: Always, User Opt-In e No.

Non memorizzare

Il pool di utenti non richiede agli utenti di memorizzare i dispositivi quando effettuano l'accesso.

Memorizza sempre

Quando l'app conferma il dispositivo di un utente, il pool di utenti ricorda sempre il dispositivo e non restituisce MFA problemi in caso di futuri accessi riusciti al dispositivo.

Accettazione dall'utente

Quando l'app conferma il dispositivo di un utente, il pool di utenti non elimina automaticamente le sfide. MFA Devi richiedere all'utente di scegliere se memorizzare o meno il proprio dispositivo.

Quando scegli Memorizza sempre o Accettazione dall'utente, Amazon Cognito genera una chiave identificativa del dispositivo e un segreto ogni volta che un utente accede da un dispositivo non identificato. La chiave del dispositivo è l'identificatore iniziale che l'app invia al pool di utenti quando l'utente esegue l'autenticazione del dispositivo.

Con ogni dispositivo utente confermato (memorizzato automaticamente o accettato dall'utente), puoi utilizzare la chiave identificativa del dispositivo e il segreto per autenticare un dispositivo a ogni accesso utente.

Puoi anche configurare le impostazioni dei dispositivi ricordati per il tuo pool di utenti in una CreateUserPoolrichiesta or. UpdateUserPoolAPI Per ulteriori informazioni, consulta la DeviceConfigurationproprietà.

I pool API di utenti di Amazon Cognito offrono operazioni aggiuntive per i dispositivi memorizzati.

  1. ListDevicese AdminListDevicesrestituiscono un elenco delle chiavi del dispositivo e dei relativi metadati per un utente.

  2. GetDevicee AdminGetDevicerestituisce la chiave del dispositivo e i metadati per un singolo dispositivo.

  3. UpdateDeviceStatuse AdminUpdateDeviceStatusimposta il dispositivo di un utente come ricordato o non ricordato.

  4. ForgetDevicee AdminForgetDevicerimuovi il dispositivo confermato di un utente dal suo profilo.

APIle operazioni con nomi che iniziano con Admin sono destinate all'uso nelle app lato server e devono essere autorizzate con IAM credenziali. Per ulteriori informazioni, consulta Utilizzo dei pool di utenti API e del server di autorizzazione.

Recupero della chiave di un dispositivo

Ogni volta che un utente accede ai pool di utenti API e non include una chiave del dispositivo nei parametri di autenticazioneDEVICE_KEY, Amazon Cognito restituisce una nuova chiave del dispositivo nella risposta. Nell'app pubblica lato client, inserisci la chiave del dispositivo nell'archivio dell'app in modo da poterla includere nelle richieste future. Nell'app riservata lato server, imposta un cookie del browser o un altro token lato client con la chiave del dispositivo dell'utente.

Prima che l'utente possa accedere con il proprio dispositivo attendibile, l'app deve confermare la chiave del dispositivo e fornire informazioni aggiuntive. Genera una ConfirmDevicerichiesta ad Amazon Cognito che confermi il dispositivo dell'utente con la chiave del dispositivo, un nome descrittivo, un verificatore di password e un codice identificativo. Se hai configurato il pool di utenti per l'autenticazione del dispositivo tramite l'opzione Accettazione dall'utente, Amazon Cognito risponde alla richiesta ConfirmDevice chiedendo all'utente di scegliere se memorizzare il dispositivo corrente. Rispondi con la selezione dell'utente in una richiesta. UpdateDeviceStatus

Quando confermi il dispositivo dell'utente ma non lo imposti come dispositivo memorizzato, Amazon Cognito memorizza l'associazione ma procede con l'accesso senza dispositivo quando fornisci la chiave del dispositivo. I dispositivi possono generare log utili per la sicurezza e la risoluzione dei problemi degli utenti. Un dispositivo confermato ma non memorizzato non usa la funzionalità di accesso, ma sfrutta la funzionalità dei log di monitoraggio della sicurezza. Quando attivi le funzionalità di sicurezza avanzata per il client dell'app e codifichi il footprint del dispositivo nella tua richiesta, Amazon Cognito associa gli eventi utente al dispositivo confermato.

Recupero di una nuova chiave del dispositivo
  1. Inizia la sessione di accesso dell'utente con una InitiateAuthAPIrichiesta.

  2. Rispondi a tutte le sfide di autenticazione RespondToAuthChallengefino a quando non ricevi i token JSON web (JWTs) che contrassegnano come completa la sessione di accesso dell'utente.

  3. Nella tua app, registra i valori restituiti da Amazon Cognito in NewDeviceMetadata nella relativa risposta RespondToAuthChallenge o InitiateAuth: DeviceGroupKey e DeviceKey.

  4. Genera un nuovo SRP segreto per il tuo utente: un file salt e un verificatore di password. Questa funzione è disponibile nelle librerie SDKs che fornisconoSRP.

  5. Richiedi all'utente il nome del dispositivo o generane uno in base alle caratteristiche del dispositivo dell'utente.

  6. Fornisci il token di accesso, la chiave del dispositivo, il nome del dispositivo e il SRP segreto dell'utente in una ConfirmDeviceAPIrichiesta. Se per il pool di utenti è impostata la memorizzazione dei dispositivi mediante l'opzione Memorizza sempre, la registrazione dell'utente è completa.

  7. Se Amazon Cognito ha risposto ConfirmDevice con "UserConfirmationNecessary": true, chiedi all'utente di scegliere se desidera memorizzare il dispositivo. Se l'utente dichiara di voler ricordare il dispositivo, genera una UpdateDeviceStatusAPIrichiesta con il token di accesso, la chiave del dispositivo e"DeviceRememberedStatus": "remembered".

  8. Se hai richiesto ad Amazon Cognito di ricordare il dispositivo, la prossima volta che accedono, anziché MFA una sfida, gli viene presentata una sfida. DEVICE_SRP_AUTH

Accesso con un dispositivo

Dopo aver configurato il dispositivo di un utente in modo che venga memorizzato, Amazon Cognito non richiede più che l'utente invii un MFA codice quando accede con la stessa chiave del dispositivo. L'autenticazione del dispositivo sostituisce solo la sfida MFA -authentication con una sfida di autenticazione del dispositivo. Non è possibile effettuare l'accesso degli utenti solo con l'autenticazione del dispositivo. L'utente deve prima completare l'autenticazione con la propria password o una richiesta di autenticazione personalizzata. Di seguito è riportato il processo di autenticazione per un utente su un dispositivo memorizzato.

Per eseguire l'autenticazione del dispositivo in un flusso che utilizza i trigger Lambda della sfida di autenticazione personalizzata, passa un DEVICE_KEY parametro nella richiesta. InitiateAuthAPI Dopo che l'utente ha completato con successo tutte le richieste di autorizzazione e la richiesta di autenticazione CUSTOM_CHALLENGE ha restituito true come valore issueTokens, Amazon Cognito restituisce un'ultima richiesta DEVICE_SRP_AUTH.

Accesso con un dispositivo
  1. Recupera la chiave del dispositivo dell'utente dall'archivio del client.

  2. Inizia la sessione di accesso dell'utente con una richiesta. InitiateAuthAPI Come valore di AuthFlow scegli USER_SRP_AUTH, REFRESH_TOKEN_AUTH, USER_PASSWORD_AUTH o CUSTOM_AUTH. In AuthParameters, aggiungi la chiave del dispositivo dell'utente al parametro DEVICE_KEY e includi gli altri parametri obbligatori per il flusso di accesso selezionato.

    1. Puoi anche passare DEVICE_KEY nei parametri di una risposta PASSWORD_VERIFIER a una richiesta di autenticazione.

  3. Completa le risposte alle richieste di autenticazione finché non ricevi una richiesta DEVICE_SRP_AUTH nella risposta.

  4. In una RespondToAuthChallengeAPIrichiesta, invia un ChallengeName of DEVICE_SRP_AUTH e i parametri per USERNAMEDEVICE_KEY, eSRP_A.

  5. Amazon Cognito risponde con una richiesta DEVICE_PASSWORD_VERIFIER. La risposta a questa richiesta include i valori per SECRET_BLOCK e SRP_B.

  6. Con la tua SRP libreria, genera e invia PASSWORD_CLAIM_SIGNATURE PASSWORD_CLAIM_SECRET_BLOCKTIMESTAMP,USERNAME, e DEVICE_KEY parametri. in una richiesta RespondToAuthChallenge aggiuntiva.

  7. Completa le sfide aggiuntive finché non ricevi quelle dell'utenteJWTs.

Il seguente pseudocodice mostra come calcolare i valori per la risposta alla richiesta DEVICE_PASSWORD_VERIFIER.

PASSWORD_CLAIM_SECRET_BLOCK = SECRET_BLOCK TIMESTAMP = Tue Sep 25 00:09:40 UTC 2018 PASSWORD_CLAIM_SIGNATURE = Base64(SHA256_HMAC(K_USER, DeviceGroupKey + DeviceKey + PASSWORD_CLAIM_SECRET_BLOCK + TIMESTAMP)) K_USER = SHA256_HASH(S_USER) S_USER = (SRP_B - k * gx)(a + ux) x = SHA256_HASH(salt + FULL_PASSWORD) u = SHA256_HASH(SRP_A + SRP_B) k = SHA256_HASH(N + g)

Visualizzazione, aggiornamento e annullamento della memorizzazione dei dispositivi

Puoi implementare le seguenti funzionalità nella tua app con Amazon CognitoAPI.

  1. Visualizzazione delle informazioni sul dispositivo corrente di un utente.

  2. Visualizzazione dell'elenco di tutti i dispositivi dell'utente.

  3. Annullamento della memorizzazione di dispositivo.

  4. Aggiornamento dello stato di memorizzazione di un dispositivo.

I token di accesso che autorizzano le API richieste nelle seguenti descrizioni devono includere l'ambito. aws.cognito.signin.user.admin Amazon Cognito aggiunge un claim per questo ambito a tutti i token di accesso generati con i pool di utenti di Amazon Cognito. API IdPs Le terze parti devono gestire separatamente i dispositivi e MFA i relativi utenti che si autenticano su Amazon Cognito. Nell'interfaccia utente ospitata, puoi richiedere l'ambito aws.cognito.signin.user.admin, ma l'interfaccia utente ospitata aggiunge automaticamente le informazioni sul dispositivo ai log utente di sicurezza avanzata e non consente la memorizzazione dei dispositivi.

Visualizzazione delle informazioni su un dispositivo

È possibile eseguire una query sulle informazioni sul dispositivo di un utente per determinare se è ancora in uso. Ad esempio, potresti voler disattivare i dispositivi memorizzati se non hanno effettuato l'accesso per 90 giorni consecutivi.

  • Per visualizzare le informazioni sul dispositivo dell'utente in un'app per client pubblici, invia la chiave di accesso e la chiave del dispositivo dell'utente in una richiesta. GetDeviceAPI

  • Per visualizzare le informazioni sul dispositivo dell'utente in un'app client riservata, firma una AdminGetDeviceAPIrichiesta con AWS le credenziali e invia il nome utente, la chiave del dispositivo e il pool di utenti dell'utente.

Visualizzazione dell'elenco di tutti i dispositivi dell'utente.

Puoi visualizzare l'elenco di tutti i dispositivi dell'utente e delle relative proprietà. Ad esempio, potresti voler verificare se il dispositivo corrente corrisponde a un dispositivo memorizzato.

  • In un'app per client pubblici, invia il token di accesso dell'utente in una richiesta. ListDevicesAPI

  • In un'app riservata ai clienti, firma una AdminListDevicesAPIrichiesta con AWS le credenziali e invia il nome utente e il pool di utenti dell'utente.

Annullamento della memorizzazione di un dispositivo

Puoi eliminare la chiave del dispositivo di un utente. Potresti voler eseguire questa operazione quando stabilisci che l'utente non utilizza più un dispositivo o quando rilevi attività insolite e desideri richiedere a un utente di completare nuovamente l'operazione. MFA Per registrare nuovamente il dispositivo in un secondo momento, è necessario generare e archiviare una nuova chiave del dispositivo.

  • In un'app per client pubblici, invia la chiave del dispositivo e il token di accesso dell'utente su richiesta. ForgetDeviceAPI

  • In un'app riservata ai client, invia la chiave del dispositivo e il token di accesso dell'utente su richiesta. AdminForgetDeviceAPI