Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Collecte de données pour protéger les applications contre les menaces
L'authentification adaptative Amazon Cognito évalue les niveaux de risque en cas de tentative de piratage de compte à partir des informations contextuelles relatives aux tentatives de connexion des utilisateurs. Votre application doit ajouter des données contextuelles aux demandes d'API afin que la protection contre les menaces Amazon Cognito puisse évaluer les risques avec plus de précision. Les données contextuelles sont des informations telles que l'adresse IP, l'agent du navigateur, les informations sur l'appareil et les en-têtes de demande qui fournissent des informations contextuelles sur la manière dont un utilisateur s'est connecté à votre groupe d'utilisateurs.
La responsabilité centrale d'une application qui soumet ce contexte à Amazon Cognito est un EncodedData paramètre dans les demandes d'authentification adressées à des groupes d'utilisateurs. Pour ajouter ces données à vos demandes, vous pouvez implémenter Amazon Cognito avec un SDK qui génère automatiquement ces informations pour vous, ou vous pouvez implémenter un module pour JavaScript iOS ou Android qui collecte ces données. Client-onlyles applications qui adressent des requêtes directes à Amazon Cognito doivent implémenter des kits de AWS Amplify développement logiciel (SDK). Client-serverles applications dotées d'un serveur intermédiaire ou d'un composant API doivent implémenter un module SDK distinct.
Dans les scénarios suivants, votre interface d'authentification gère la collecte de données contextuelles utilisateur sans aucune configuration supplémentaire :
-
La connexion gérée collecte et soumet automatiquement les données contextuelles à la protection contre les menaces.
-
Toutes les AWS Amplify bibliothèques intègrent la collecte de données contextuelles à leurs méthodes d'authentification.
Soumission de données contextuelles utilisateur dans des applications réservées aux clients avec Amplify
Les kits SDK Amplify prennent en charge les clients mobiles qui s'authentifient directement auprès d'Amazon Cognito. Les clients de ce type adressent des demandes d'API directes aux opérations d'API publiques d'Amazon Cognito. Les clients Amplify collectent automatiquement des données contextuelles pour la protection contre les menaces par défaut.
Les applications Amplify JavaScript constituent une exception. Ils nécessitent l'ajout d'un JavaScript module qui collecte les données contextuelles des utilisateurs.
En règle générale, une application de cette configuration utilise des opérations d'API non authentifiées telles que InitiateAuth et. RespondToAuthChallenge L'UserContextDataobjet permet d'évaluer les risques avec plus de précision pour ces opérations. Les SDK Amplify ajoutent des informations sur les appareils et les sessions à un EncodedData paramètre de. UserContextData
Collecte de données contextuelles dans les applications client-serveur
Certaines applications disposent d'un niveau frontal qui collecte les données d'authentification des utilisateurs et d'un niveau back-end qui soumet les demandes d'authentification à Amazon Cognito. Il s'agit d'une architecture courante dans les serveurs Web et les applications soutenues par des microservices. Dans ces applications, vous devez importer une bibliothèque publique de collecte de données contextuelles.
Dans cette configuration, un serveur d'applications utilise généralement des opérations d'API authentifiées telles que AdminInitiateAuth et AdminRespondToAuthChallenge. L'ContextDataobjet permet à Amazon Cognito d'évaluer les risques avec plus de précision pour ces opérations. Le contenu est ContextData constitué des données codées que votre interface a transmises à votre serveur et des informations supplémentaires provenant de la requête HTTP de l'utilisateur à votre serveur. Ces informations contextuelles supplémentaires, telles que les en-têtes HTTP et l'adresse IP, fournissent à votre serveur d'applications les caractéristiques de l'environnement de l'utilisateur.
Votre serveur d'applications peut également se connecter à l'aide d'opérations d'API non authentifiées telles que et. InitiateAuth RespondToAuthChallenge L'UserContextDataobjet informe l'analyse des risques liés à la protection contre les menaces dans le cadre de ces opérations. Les opérations effectuées dans les bibliothèques de collecte de données contextuelles publiques disponibles ajoutent des informations de sécurité au EncodedData paramètre dans les demandes d'authentification. Configurez également votre groupe d'utilisateurs pour accepter des données contextuelles supplémentaires et ajoutez l'adresse IP source de l'utilisateur au IpAddress paramètre deUserContextData.
Pour ajouter des données contextuelles aux applications client-serveur
-
Dans votre application frontale, collectez des données contextuelles codées depuis le client à l'aide d'un iOS, d'un Android ou d'un JavaScript module.
-
Transmettez les données codées et les détails de la demande d'authentification à votre serveur d'applications.
-
Sur votre serveur d'applications, extrayez l'adresse IP de l'utilisateur, les en-têtes HTTP pertinents, le nom du serveur demandé et le chemin demandé à partir de la requête HTTP. Renseignez ces valeurs dans le ContextData paramètre de votre demande d'API à Amazon Cognito.
-
Renseignez le
EncodedDataparamètre deContextDatadans votre demande d'API avec les données d'appareil codées collectées par votre module SDK. Ajoutez ces données contextuelles à la demande d'authentification.
Bibliothèques de données contextuelles pour les applications client-serveur
JavaScript
Le amazon-cognito-advanced-security-data.min.js module collecte des données EncodedData que vous pouvez transmettre à votre serveur d'applications.
Ajoutez le amazon-cognito-advanced-security-data.min.js module à votre JavaScript configuration. Remplacez <region> par un élément Région AWS de la liste suivante : us-east-1us-east-2,us-west-2,eu-west-1,eu-west-2, oueu-central-1.
<script src="https://amazon-cognito-assets.<region>.amazoncognito.com/amazon-cognito-advanced-security-data.min.js"></script>
Pour générer un encodedContextData objet que vous pouvez utiliser dans le EncodedData paramètre, ajoutez ce qui suit à la source de votre JavaScript application :
var encodedContextData = AmazonCognitoAdvancedSecurityData.getData(_username, _userpoolId, _userPoolClientId);
iOS/Swift
Pour générer des données contextuelles, les applications iOS peuvent intégrer le module
Pour collecter des données contextuelles codées à des fins de protection contre les menaces, ajoutez l'extrait suivant à votre application :
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
Pour générer des données contextuelles, les applications Android peuvent intégrer le module
Pour collecter des données contextuelles codées à des fins de protection contre les menaces, ajoutez l'extrait suivant à votre application :
UserContextDataProvider provider = UserContextDataProvider.getInstance(); // context here is android application context. String encodedContextData = provider.getEncodedContextData(context, username, userPoolId, userPoolClientId);