Recopilación avanzada de datos de seguridad en las aplicaciones - Amazon Cognito

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Recopilación avanzada de datos de seguridad en las aplicaciones

La autenticación adaptativa de Amazon Cognito evalúa los niveles de riesgo de los intentos de apropiación de cuentas a partir de los detalles contextuales de los intentos de inicio de sesión de los usuarios. La aplicación debe añadir datos de contexto a las solicitudes de API para que la seguridad avanzada de Amazon Cognito pueda evaluar el riesgo con mayor precisión. Los datos de contexto son información como la dirección IP, el agente del navegador, la información del dispositivo y los encabezados de las solicitudes que proporcionan información contextual sobre cómo se conectó un usuario a su grupo de usuarios.

La responsabilidad principal de una aplicación que envía este contexto a Amazon Cognito es EncodedData un parámetro en las solicitudes de autenticación a grupos de usuarios. Para añadir estos datos a sus solicitudes, puede implementar Amazon Cognito con un SDK que genere automáticamente esta información por usted, o puede implementar un módulo para JavaScript iOS o Android que recopile estos datos. Las aplicaciones exclusivas para clientes que realizan solicitudes directas a Amazon Cognito deben implementar los SDK. AWS Amplify Las aplicaciones cliente-servidor que tienen un componente de servidor o API intermedio deben implementar un módulo de SDK independiente.

En los siguientes escenarios, la interfaz de autenticación administra la recopilación de datos del contexto del usuario sin ninguna configuración adicional:

  • La interfaz de usuario alojada recopila y envía automáticamente los datos de contexto a las funciones de seguridad avanzadas.

  • Todas las AWS Amplify bibliotecas incorporan la recopilación de datos contextuales en sus métodos de autenticación.

Envío de datos de contexto de usuario en aplicaciones exclusivas para clientes con Amplify

Descripción general de la recopilación de datos para funciones de seguridad avanzadas en una aplicación Amplify.

Los SDK de Amplify son compatibles con los clientes móviles que se autentican directamente con Amazon Cognito. Los clientes de este tipo realizan solicitudes de API directas a las operaciones de API públicas de Amazon Cognito. Los clientes de Amplify recopilan automáticamente datos de contexto para funciones de seguridad avanzadas de forma predeterminada.

Amplify las aplicaciones con es una JavaScript excepción. Requieren la adición de un JavaScript módulo que recopile datos de contexto del usuario.

Por lo general, una aplicación en esta configuración utiliza operaciones de API no autenticadas, como InitiateAuthy. RespondToAuthChallenge El UserContextDataobjeto ayuda a evaluar los riesgos de estas operaciones con mayor precisión. Los SDK de Amplify añaden información sobre el dispositivo y la sesión a un EncodedData parámetro de. UserContextData

Recopilación de datos de contexto en aplicaciones cliente-servidor

Algunas aplicaciones tienen un nivel de front-end que recopila los datos de autenticación de los usuarios y un nivel de back-end de aplicaciones que envía las solicitudes de autenticación a Amazon Cognito. Se trata de una arquitectura común en los servidores web y las aplicaciones respaldadas por microservicios. En estas aplicaciones, debe importar una biblioteca pública de recopilación de datos contextuales.

Una descripción general de la autenticación del lado del servidor con funciones de seguridad avanzadas en los datos contextuales. JavaScript

Normalmente, un servidor de aplicaciones en esta configuración utiliza operaciones de API autenticadas, como y. AdminInitiateAuthAdminRespondToAuthChallenge El ContextDataobjeto ayuda a Amazon Cognito a evaluar los riesgos de estas operaciones con mayor precisión. El contenido ContextData son los datos codificados que su interfaz pasó a su servidor y detalles adicionales de la solicitud HTTP del usuario a su servidor. Estos detalles contextuales adicionales, como los encabezados HTTP y la dirección IP, proporcionan al servidor de aplicaciones las características del entorno del usuario.

Es posible que el servidor de aplicaciones también inicie sesión con operaciones de API no autenticadas, como y. InitiateAuthRespondToAuthChallenge El UserContextDataobjeto sirve de base para un análisis avanzado de los riesgos de seguridad en estas operaciones. Las operaciones en las bibliotecas de recopilación de datos de contexto público disponibles añaden información de seguridad al EncodedData parámetro en las solicitudes de autenticación. Además, configure su grupo de usuarios para que acepte datos de contexto adicionales y añada la IP de origen del usuario al IpAddress parámetro deUserContextData.

Para añadir datos de contexto a las aplicaciones cliente-servidor
  1. En su aplicación front-end, recopile datos de contexto codificados del cliente con un JavaScript módulo, iOS o Android.

  2. Transfiera los datos codificados y los detalles de la solicitud de autenticación al servidor de aplicaciones.

  3. En el servidor de aplicaciones, extraiga la dirección IP del usuario, los encabezados HTTP pertinentes, el nombre del servidor solicitado y la ruta solicitada de la solicitud HTTP. Rellene estos valores con el ContextDataparámetro de su solicitud de API a Amazon Cognito.

  4. Rellene el EncodedData parámetro de su solicitud ContextData de API con los datos de dispositivo codificados que recopiló el módulo del SDK. Agrega estos datos de contexto a la solicitud de autenticación.

Bibliotecas de datos contextuales para aplicaciones cliente-servidor

JavaScript

El amazon-cognito-advanced-security-data.min.js módulo recopila los datos EncodedData que puede transferir a su servidor de aplicaciones.

Añada el amazon-cognito-advanced-security-data.min.js módulo a su JavaScript configuración. <region>Sustitúyalo por uno Región de AWS de la siguiente lista: us-east-1 us-east-2us-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>

Para generar un encodedContextData objeto que pueda utilizar en el EncodedData parámetro, añada lo siguiente a la fuente de JavaScript la aplicación:

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

iOS/SWIFT

Para generar datos de contexto, las aplicaciones iOS pueden integrar el módulo Mobile SDK for iOS AWSCognitoIdentityProviderASF.

Para recopilar datos contextuales codificados para una seguridad avanzada, añada el siguiente fragmento a su aplicación:

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

Para generar datos de contexto, las aplicaciones de Android pueden integrar el módulo Mobile SDK for Android aws-android-sdk-cognitoidentityprovider -asf.

Para recopilar datos contextuales codificados para una seguridad avanzada, agrega el siguiente fragmento a tu aplicación:

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