Cómo funciona el SDK para móviles de AWS WAF - AWS WAF, AWS Firewall Manager, AWS Shield Advanced y director de seguridad de red AWS Shield

Presentamos una nueva experiencia de consola para AWS WAF

Ahora puede usar la experiencia actualizada para acceder a las funciones de AWS WAF desde cualquier parte de la consola. Para obtener más información, consulta Trabajo con la experiencia de consola actualizada.

Cómo funciona el SDK para móviles de AWS WAF

En esta sección se explica cómo funcionan en conjunto las clases, las propiedades y las operaciones del SDK para móviles de AWS WAF.

Los SDK para móviles le proporcionan un proveedor de tokens configurable que puede usar para recuperar y usar los tokens. El proveedor de los tokens verifica que las solicitudes que permita procedan de clientes legítimos. Cuando envía solicitudes a los recursos de AWS que protege con AWS WAF, incluye el token en una cookie para validar la solicitud. Puede gestionar la cookie de token manualmente o dejar que el proveedor de tokens lo haga por usted.

En esta sección se describen las interacciones entre las clases, las propiedades y los métodos que se incluyen en el SDK para móviles. Para obtener información sobre la especificación del SDK, consulte Especificación del SDK para móviles de AWS WAF.

Recuperación de tokens y almacenamiento en caché

Cuando crea la instancia del proveedor de tokens en su aplicación para móviles, configura la forma en que quiere que administre los tokens y su recuperación. Su principal opción es cómo mantener los tokens válidos y vigentes para usarlos en las solicitudes web de su aplicación:

  • Actualización en segundo plano habilitada Es el valor predeterminado. El proveedor del token actualiza automáticamente el token en segundo plano y lo guarda en caché. Con la actualización en segundo plano habilitada, cuando llama getToken(), la operación recupera el token almacenado en caché.

    El proveedor de tokens actualiza el token a intervalos configurables, de modo que siempre haya un token vigente en la memoria caché mientras la aplicación esté activa. La actualización en segundo plano se detiene mientras la aplicación está inactiva. Para obtener información acerca de este tema, consulte Recuperación de un token tras la inactividad de la aplicación.

  • Actualización en segundo plano desactivada: puede deshabilitar la actualización de los tokens en segundo plano y, a continuación, recuperarlos solo cuando lo solicite. Los tokens recuperados bajo demanda no se almacenan en caché y, si lo desea, puede recuperar más de uno. Cada token es independiente de los demás que recupere y cada uno tiene su propia marca de tiempo que se utiliza para calcular el vencimiento.

    Dispone de las siguientes opciones para recuperar el token cuando la actualización en segundo plano está desactivada:

    • getToken(): cuando llama getToken() con la actualización en segundo plano desactivada, la llamada recupera un nuevo token de forma sincrónica de AWS WAF. Se trata de una llamada que puede bloquear y que podría afectar a la capacidad de respuesta de la aplicación si se invoca en el subproceso principal.

    • onTokenReady(WAFTokenResultCallback) – esta llamada recupera de forma asíncrona un nuevo token y, a continuación, invoca la devolución de llamada resultante proporcionada en un hilo en segundo plano cuando el token está listo.

Cómo reintenta el proveedor de tokens las recuperaciones de tokens fallidas

El proveedor de tokens vuelve a intentar recuperar el token automáticamente cuando se produce un error en la recuperación. Los reintentos se realizan inicialmente mediante un retroceso exponencial con un tiempo de espera de reintento inicial de 100 ms. Para obtener información acerca de las recuperaciones exponenciales, consulte Reintentos de error y retroceso exponencial en AWS.

Cuando el número de reintentos alcanza el valor maxRetryCount configurado, el proveedor de tokens deja de intentarlo o pasa a intentarlo cada maxErrorTokenRefreshDelayMsec milisegundos, según el tipo de recuperación del token:

  • onTokenReady(): el proveedor de tokens pasa a esperar maxErrorTokenRefreshDelayMsec milisegundos entre intentos y continúa intentando recuperar el token.

  • Actualización en segundo plano: el proveedor del token pasa a esperar maxErrorTokenRefreshDelayMsec milisegundos entre intentos y continúa intentando recuperar el token.

  • Llamadas getToken() bajo demanda, cuando la actualización en segundo plano está desactivada: el proveedor de tokens deja de intentar recuperar un token y devuelve el valor del token anterior o un valor nulo si no hay ningún token anterior.

Escenarios de reintento en la recuperación de tokens

Cuando el proveedor de tokens intenta recuperar un token, puede producir reintentos automáticos según el punto del flujo de recuperación de tokens en el que falle la operación. En esta sección, se enumeran los posibles puntos donde podría ver un reintento automático.

  • Obtención o verificación del desafío AWS WAF a través de /inputs o /verify:

    • Cuando una solicitud para obtener y verificar un desafío AWS WAF falla, puede producir reintentos automáticos.

    • Puede ver reintentos automáticos junto con un erro socketTimeoutException. Esto puede deberse a causas como las siguientes:

      • Bajo ancho de banda de la red: confirme la configuración de conectividad de red.

      • URL de integración de la aplicación modificada: confirme que la URL de integración no esté modificada respecto de lo que aparece en la consola de AWS WAF.

    • La cantidad de reintentos automáticos se puede configurar mediante la función maxRetryCount()

  • Actualización del token:

    • Cuando una solicitud para actualizar el token se realiza mediante el manejador de tokens, puede producir reintentos automáticos.

    • La cantidad de reintentos automáticos aquí también se configura mediante la función maxRetryCount().

Es posible una configuración sin reintentos automáticos si establece maxRetryCount(0).

Tiempo de inmunidad del token y actualización en segundo plano

El tiempo de inmunidad del token que configura en la ACL web es independiente del intervalo de actualización del token que establece en el SDK móvil de AWS WAF. Cuando habilita la actualización en segundo plano, el SDK actualiza el token en el intervalo que especifique mediante tokenRefreshDelaySec(). Esto puede generar varios tokens válidos de forma simultánea, según su tiempo de inmunidad configurado.

Para evitar múltiples tokens válidos, puede deshabilitar la actualización en segundo plano y usar la función getToken() para administrar el ciclo de vida del token en su aplicación móvil.

Recuperación de un token tras la inactividad de la aplicación

La actualización en segundo plano solo se realiza mientras la aplicación se considera activa para el tipo de aplicación:

  • iOS: la actualización en segundo plano se realiza cuando la aplicación está en primer plano.

  • Android: la actualización en segundo plano se realiza cuando la aplicación no está cerrada, ya sea en primer plano o en segundo plano.

Si la aplicación permanece en un estado que no admite la actualización en segundo plano durante más de los tokenRefreshDelaySec segundos configurados, el proveedor de tokens detiene la actualización en segundo plano. Por ejemplo, en el caso de una aplicación de iOS, si tokenRefreshDelaySec es 300 y la aplicación se cierra o pasa a segundo plano durante más de 300 segundos, el proveedor de tokens deja de actualizar el token. Cuando la aplicación vuelve a un estado activo, el proveedor de tokens reinicia automáticamente la actualización en segundo plano.

Cuando su aplicación vuelva a estar activa, llame a onTokenReady() para recibir una notificación cuando el proveedor de tokens recupere y almacene en caché un nuevo token. No se limite a llamar a getToken(), porque la caché podría no contener un token actual y válido.

URL de integración de la aplicación

La URL de integración de la aplicación del SDK móvil de AWS WAF apunta a una ACL web que habilitó para la integración de aplicaciones. Esta URL enruta las solicitudes al servidor backend correcto y las asocia con su cliente. No funciona como un control de seguridad estricto, por lo que exponer una URL de integración no representa un riesgo de seguridad.

Puede modificar técnicamente la URL de integración proporcionada y aun así obtener un token. Sin embargo, no lo recomendamos porque podría perder visibilidad de las tasas de resolución de desafíos o encontrar fallas en la obtención de tokens con errores de socketTimeoutException.

Dependencias

Cada SDK móvil descargable de AWS WAF incluye un archivo README que enumera las dependencias de su versión específica del SDK. Consulte el README para conocer las dependencias de su versión del SDK móvil.

Ofuscación/ProGuard (solo SDK de Android)

Si usa un producto de ofuscación o minimización como ProGuard, podría necesitar excluir ciertos espacios de nombres para asegurar que el SDK móvil funcione correctamente. Consulte el README de su versión del SDK móvil para ver la lista de espacios de nombres y reglas de exclusión.