Raccolta avanzata di dati di sicurezza nelle applicazioni - 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à.

Raccolta avanzata di dati di sicurezza nelle applicazioni

L'autenticazione adattiva di Amazon Cognito valuta i livelli di rischio per il tentativo di acquisizione dell'account sulla base dei dettagli contestuali dei tentativi di accesso degli utenti. L'applicazione deve aggiungere dati contestuali alle richieste API in modo che la sicurezza avanzata di Amazon Cognito possa valutare più accuratamente il rischio. I dati contestuali sono informazioni quali indirizzo IP, agente del browser, informazioni sul dispositivo e intestazioni di richiesta che forniscono informazioni contestuali su come un utente si è connesso al tuo pool di utenti.

La responsabilità principale di un'applicazione che invia questo contesto ad Amazon Cognito è EncodedData un parametro nelle richieste di autenticazione ai pool di utenti. Per aggiungere questi dati alle tue richieste, puoi implementare Amazon Cognito con un SDK che genera automaticamente queste informazioni per te oppure puoi implementare un modulo per JavaScript iOS o Android che raccolga questi dati. Le applicazioni solo client che effettuano richieste dirette ad Amazon Cognito devono implementare gli SDK. AWS Amplify Le applicazioni client-server che dispongono di un server intermedio o di un componente API devono implementare un modulo SDK separato.

Nei seguenti scenari, il front-end di autenticazione gestisce la raccolta dei dati contestuali degli utenti senza alcuna configurazione aggiuntiva:

  • L'interfaccia utente ospitata raccoglie e invia automaticamente i dati contestuali a funzionalità di sicurezza avanzate.

  • Tutte le AWS Amplify librerie dispongono di una raccolta di dati contestuali integrata nei metodi di autenticazione.

Invio di dati contestuali utente in applicazioni solo client con Amplify

Una panoramica della raccolta dei dati per funzionalità di sicurezza avanzate in un'applicazione Amplify.

Gli SDK Amplify supportano i client mobili che si autenticano direttamente con Amazon Cognito. I clienti di questo tipo effettuano richieste API dirette alle operazioni API pubbliche di Amazon Cognito. Per impostazione predefinita, i client Amplify raccolgono automaticamente dati contestuali per funzionalità di sicurezza avanzate.

Le applicazioni Amplify JavaScript with sono un'eccezione. Richiedono l'aggiunta di un JavaScript modulo che raccolga i dati relativi al contesto dell'utente.

In genere, un'applicazione in questa configurazione utilizza operazioni API non autenticate come e. InitiateAuthRespondToAuthChallenge L'UserContextDataoggetto aiuta a valutare i rischi in modo più accurato per queste operazioni. Gli SDK Amplify aggiungono informazioni sul dispositivo e sulla sessione a un parametro di. EncodedData UserContextData

Raccolta di dati contestuali nelle applicazioni client-server

Alcune applicazioni dispongono di un livello front-end che raccoglie i dati di autenticazione degli utenti e un livello di back-end dell'applicazione che invia le richieste di autenticazione ad Amazon Cognito. Si tratta di un'architettura comune nei server Web e nelle applicazioni supportate da microservizi. In queste applicazioni, è necessario importare una libreria pubblica di raccolta di dati contestuali.

Una panoramica dell'autenticazione lato server con funzionalità di sicurezza avanzate in cui inserire i dati contestuali. JavaScript

In genere, un server applicativo in questa configurazione utilizza operazioni API autenticate come e. AdminInitiateAuthAdminRespondToAuthChallenge L'ContextDataoggetto aiuta Amazon Cognito a valutare i rischi in modo più accurato per queste operazioni. I contenuti ContextData sono i dati codificati che il front-end ha passato al server e dettagli aggiuntivi derivanti dalla richiesta HTTP dell'utente al server. Questi dettagli contestuali aggiuntivi, come le intestazioni HTTP e l'indirizzo IP, forniscono al server delle applicazioni le caratteristiche dell'ambiente dell'utente.

Il server delle applicazioni potrebbe anche effettuare l'accesso con operazioni API non autenticate come e. InitiateAuthRespondToAuthChallenge L'UserContextDataoggetto consente l'analisi avanzata dei rischi di sicurezza in queste operazioni. Le operazioni nelle librerie di raccolta dati contestuali pubbliche disponibili aggiungono informazioni di sicurezza al EncodedData parametro nelle richieste di autenticazione. Inoltre, configura il tuo pool di utenti per accettare dati contestuali aggiuntivi e aggiungi l'IP di origine dell'utente al IpAddress parametro diUserContextData.

Per aggiungere dati contestuali alle applicazioni client-server
  1. Nella tua applicazione front-end, raccogli dati contestuali codificati dal client con un iOS, Android o un modulo. JavaScript

  2. Trasmetti i dati codificati e i dettagli della richiesta di autenticazione al tuo server delle applicazioni.

  3. Nel server delle applicazioni, estrai l'indirizzo IP dell'utente, le intestazioni HTTP pertinenti, il nome del server richiesto e il percorso richiesto dalla richiesta HTTP. Inserisci questi valori nel ContextDataparametro della tua richiesta API ad Amazon Cognito.

  4. Compila il EncodedData parametro of ContextData nella tua richiesta API con i dati codificati del dispositivo raccolti dal modulo SDK. Aggiungi questi dati contestuali alla richiesta di autenticazione.

Librerie di dati contestuali per applicazioni client-server

JavaScript

Il amazon-cognito-advanced-security-data.min.js modulo raccoglie dati EncodedData che potete passare al vostro server delle applicazioni.

Aggiungi il amazon-cognito-advanced-security-data.min.js modulo alla tua JavaScript configurazione. Regione AWS Sostituiscilo <region> con uno dei seguenti:us-east-1,us-east-2,us-west-2,eu-west-1,eu-west-2, oeu-central-1.

<script src="https://amazon-cognito-assets.<region>.amazoncognito.com/amazon-cognito-advanced-security-data.min.js"></script>

Per generare un encodedContextData oggetto da utilizzare nel EncodedData parametro, aggiungete quanto segue all'origine JavaScript dell'applicazione:

var encodedContextData = AmazonCognitoAdvancedSecurityData.getData(_username, _userpoolId, _userPoolClientId);

iOS/Swift

Per generare dati contestuali, le applicazioni iOS possono integrare il modulo Mobile SDK for iOS AWSCognitoIdentityProviderASF.

Per raccogliere dati contestuali codificati per una sicurezza avanzata, aggiungi il seguente frammento all'applicazione:

import AWSCognitoIdentityProviderASF let deviceId = getDeviceId() let encodedContextData = AWSCognitoIdentityProviderASF.userContextData( userPoolId, username: username, deviceId: deviceId, userPoolClientId: userPoolClientId) /** * Reuse DeviceId from keychain or generate one for the first time. */ func getDeviceId() -> String { let deviceIdKey = getKeyChainKey(namespace: userPoolId, key: "AWSCognitoAuthAsfDeviceId") if let existingDeviceId = self.keychain.string(forKey: deviceIdKey) { return existingDeviceId } let newDeviceId = UUID().uuidString self.keychain.setString(newDeviceId, forKey: deviceIdKey) return newDeviceId } /** * Get a namespaced keychain key given a namespace and key */ func getKeyChainKey(namespace: String, key: String) -> String { return "\(namespace).\(key)" }

Android

Per generare dati contestuali, le applicazioni Android possono integrare il aws-android-sdk-cognitoidentityprovidermodulo Mobile SDK for Android -asf.

Per raccogliere dati contestuali codificati per una sicurezza avanzata, aggiungi il seguente frammento all'applicazione:

UserContextDataProvider provider = UserContextDataProvider.getInstance(); // context here is android application context. String encodedContextData = provider.getEncodedContextData(context, username, userPoolId, userPoolClientId);