Raccolta di dati per la protezione dalle minacce 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 di dati per la protezione dalle minacce 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 API richieste in modo che la sicurezza avanzata di Amazon Cognito possa valutare più accuratamente i rischi. 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 programma SDK che generi 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 essere implementate. AWS Amplify SDKs Le applicazioni client-server che dispongono di un server o di un API componente intermedio devono implementare un modulo separato. SDK

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.

SDKsAmplify supporta i client mobili che si autenticano direttamente con Amazon Cognito. I clienti di questo tipo inoltrano API richieste dirette alle operazioni pubbliche API 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 API operazioni non autenticate come e. InitiateAuthRespondToAuthChallenge L'UserContextDataoggetto aiuta a valutare i rischi in modo più accurato per queste operazioni. SDKsAmplify aggiunge informazioni sul dispositivo e sulla sessione a EncodedData un parametro di. UserContextData

Raccolta di dati contestuali in 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 di applicazioni in questa configurazione utilizza API operazioni 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 HTTP richiesta dell'utente al server. Questi dettagli contestuali aggiuntivi, come le HTTP intestazioni e l'indirizzo IP, forniscono al server delle applicazioni le caratteristiche dell'ambiente dell'utente.

Il server delle applicazioni potrebbe anche eseguire l'accesso con operazioni non autenticate API 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 HTTP intestazioni pertinenti, il nome del server richiesto e il percorso richiesto dalla HTTP richiesta. Inserisci questi valori nel ContextDataparametro della tua API richiesta ad Amazon Cognito.

  4. Compila il EncodedData parametro of ContextData nella tua API richiesta 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 modulo Mobile SDK for Android -asf. aws-android-sdk-cognitoidentityprovider

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);