View a markdown version of this page

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 del tentativo di acquisizione dell'account in base ai dettagli contestuali dei tentativi di accesso degli utenti. L'applicazione deve aggiungere dati contestuali alle richieste API in modo che la protezione dalle minacce di Amazon Cognito possa valutare il rischio in modo più accurato. I dati contestuali sono informazioni come indirizzo IP, agente del browser, informazioni sul dispositivo e intestazioni delle richieste 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 è un EncodedData 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 raccoglie questi dati. Client-onlyle applicazioni che effettuano richieste dirette ad Amazon Cognito devono implementare gli SDK. AWS Amplify Client-serverle applicazioni con un server intermedio o un componente API devono implementare un modulo SDK separato.

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

  • L'accesso gestito raccoglie e invia automaticamente i dati contestuali alla protezione dalle minacce.

  • Tutte le AWS Amplify librerie hanno la raccolta dei dati di contesto integrata nei loro metodi di autenticazione.

Invio di dati contestuali utente in applicazioni solo per client con Amplify

Una panoramica della raccolta dei dati per la protezione dalle minacce in un'applicazione Amplify.

Gli SDK Amplify supportano i client mobili che si autenticano direttamente con Amazon Cognito. I client di questo tipo effettuano richieste API dirette alle operazioni API pubbliche di Amazon Cognito. Per impostazione predefinita, i clienti Amplify raccolgono automaticamente i dati di contesto per la protezione dalle minacce.

Le applicazioni Amplify con JavaScript sono un'eccezione. Richiedono l'aggiunta di un JavaScript modulo che raccoglie i dati di contesto dell'utente.

In genere, un'applicazione in questa configurazione utilizza operazioni API non autenticate come e. InitiateAuth RespondToAuthChallenge 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 EncodedData parametro di. UserContextData

Raccolta di dati contestuali nelle applicazioni client-server

Alcune applicazioni hanno un livello front-end che raccoglie i dati di autenticazione degli utenti e un livello 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 di contesto.

Una panoramica dell'autenticazione lato server con dati contestuali di protezione dalle minacce in formato. JavaScript

In genere, un server applicativo in questa configurazione utilizza operazioni API autenticate come e. AdminInitiateAuth AdminRespondToAuthChallenge 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 tuo front-end ha passato al tuo server e i dettagli aggiuntivi della richiesta HTTP dell'utente al tuo server. Questi dettagli di contesto 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 inoltre eseguire l'accesso con operazioni API non autenticate come e. InitiateAuth RespondToAuthChallenge L'UserContextDataoggetto informa l'analisi del rischio di protezione dalle minacce in queste operazioni. Le operazioni nelle librerie di raccolta dati di contesto pubblico disponibili aggiungono informazioni di sicurezza al EncodedData parametro nelle richieste di autenticazione. Inoltre, configura il tuo pool di utenti per accettare dati di contesto aggiuntivi e aggiungere 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 i dati contestuali codificati dal client con un iOS, Android o un modulo. JavaScript

  2. Trasmettete i dati codificati e i dettagli della richiesta di autenticazione al 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 ContextData parametro della tua richiesta API ad Amazon Cognito.

  4. ContextDataCompila il EncodedData parametro della tua richiesta API con i dati codificati del dispositivo raccolti dal tuo modulo SDK. Aggiungi questi dati di contesto alla richiesta di autenticazione.

Librerie di dati contestuali per applicazioni client-server

JavaScript

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

Aggiungete il amazon-cognito-advanced-security-data.min.js modulo alla vostra JavaScript configurazione. Sostituiscilo <region> con uno Regione AWS dei seguenti: us-east-1us-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 AWSCognitoIdentityProviderASF Mobile SDK for iOS.

Per raccogliere dati contestuali codificati per la protezione dalle minacce, aggiungi il seguente frammento alla tua 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 per Android aws-android-sdk-cognitoidentityprovider-asf. https://github.com/aws-amplify/aws-sdk-android/tree/main/aws-android-sdk-cognitoidentityprovider-asf

Per raccogliere dati contestuali codificati per la protezione dalle minacce, aggiungi il seguente frammento alla tua applicazione:

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