Almacenamiento en caché de tokens - 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.

Almacenamiento en caché de tokens

Un diagrama de una API Gateway que mantiene una caché de tokens de acceso para M2M. El proxy de la API procesa la solicitud de token y devuelve un token en caché si ya es válido.

La aplicación debe completar correctamente una de las siguientes solicitudes cada vez que desee obtener un nuevo JSON Web Token (JWT).

  • Solicite las credenciales o la concesión del código de autorización desde el Punto de conexión de token.

  • Solicite una concesión implícita desde la IU alojada.

  • Autentique a un usuario local en una solicitud de API de Amazon Cognito como. InitiateAuth

Puede configurar el grupo de usuarios para que los tokens caduquen en minutos, horas o días. Para garantizar el rendimiento y la disponibilidad de su aplicación, utilice los tokens de Amazon Cognito durante aproximadamente el 75% de su vida útil y, solo entonces, recupere los nuevos. Una solución de caché que cree para su aplicación mantiene los tokens disponibles y evita que Amazon Cognito rechace las solicitudes cuando el porcentaje de solicitudes sea demasiado alto. Una aplicación del lado del cliente debe almacenar los tokens en una memoria caché. Una aplicación del lado del servidor puede añadir un mecanismo de caché cifrado para almacenar los tokens.

Cuando su grupo de usuarios genera un gran volumen de usuarios o machine-to-machine actividad, es posible que se encuentre con los límites que Amazon Cognito establece en cuanto al número de solicitudes de tokens que puede realizar. Para reducir el número de solicitudes que realiza a los puntos de conexión de Amazon Cognito, puede almacenar y reutilizar los datos de autenticación de forma segura o implementar retrocesos y reintentos exponenciales.

Los datos de autenticación provienen de dos clases de puntos de conexión. Los puntos de conexión de OAuth 2.0 de Amazon Cognito incluyen el punto de conexión del token, que atiende las credenciales del cliente y las solicitudes de código de autorización de la interfaz Los puntos de conexión de servicio responden a solicitudes de API de grupos de usuarios como InitiateAuth y RespondToAuthChallenge. Cada tipo de solicitud tiene su propio límite. Para obtener más información acerca de los límites, consulte Cuotas en Amazon Cognito.

Almacenamiento en caché de los tokens de machine-to-machine acceso con Amazon API Gateway

Con el almacenamiento en caché de tokens de API Gateway, su aplicación puede reducir horizontalmente en respuesta a eventos que superen la cuota de solicitudes predeterminada de los puntos de conexión de Amazon Cognito OAuth.

Puedes almacenar en caché los tokens de acceso para que su aplicación solo solicite un nuevo token de acceso si un token en caché ha caducado. De lo contrario, el punto de conexión de almacenamiento en caché devuelve un token de la caché. Esto evita una llamada adicional a un punto de conexión de la API de Amazon Cognito. Cuando utilice Amazon API Gateway como proxy para Punto de conexión de token, su API responde a la mayoría de las solicitudes que, de otro modo, contribuirían a su cuota de solicitudes, lo que evita las solicitudes fallidas como resultado de la limitación de la tarifa.

La siguiente solución basada en API Gateway ofrece una implementación del almacenamiento en caché de tokens de baja latencia, bajo código o sin código. Las API de API Gateway se cifran en tránsito y, opcionalmente, en reposo. Una caché de API Gateway es ideal para la concesión de credenciales de clientes de OAuth 2.0, un tipo de concesión que suele ser de gran volumen y que produce tokens de acceso para autorizar sesiones machine-to-machine y microservicios. En el caso de que se produzca un aumento de tráfico que provoque que tus microservicios escalen horizontalmente, es posible que muchos sistemas utilicen las mismas credenciales de cliente con un volumen que supere el límite de AWS frecuencia de solicitudes de tu grupo de usuarios o cliente de la aplicación. Para preservar la disponibilidad de las aplicaciones y la baja latencia, se recomienda utilizar una solución de almacenamiento en caché en estos casos.

En esta solución, define una caché en su API para almacenar un token de acceso independiente para cada combinación de ámbitos y el cliente de aplicación de OAuth que quiera solicitar en su aplicación. Cuando la aplicación realiza una solicitud que coincide con la clave de caché, la API responde con un token de acceso que Amazon Cognito emitió a la primera solicitud que coincidió con la clave de caché. Cuando caduca la duración de la clave de caché, la API reenvía la solicitud al punto de conexión del token y almacena en caché un nuevo token de acceso.

nota

La duración de la clave de caché debe ser inferior a la duración del token de acceso de su cliente de aplicación.

La clave de caché es una combinación de los ámbitos de OAuth que solicita en el parámetro de URL scope y el encabezado Authorization de la solicitud. El encabezado Authorization contiene el ID de cliente y el secreto de cliente de la aplicación. No tiene que implementar una lógica adicional en su aplicación para implementar esta solución. Solo debe actualizar la configuración para cambiar la ruta al punto de conexión del token del grupo de usuarios.

También puedes implementar el almacenamiento en caché de los tokens para Redis. ElastiCache Para un control detallado con políticas de AWS Identity and Access Management (IAM), considere una caché de Amazon DynamoDB.

nota

El almacenamiento en caché en API Gateway está sujeto a un coste adicional. Para obtener más información, consulte los precios.

Para configurar un proxy de almacenamiento en caché con API Gateway

  1. Abra la consola de API Gateway y cree una API de REST.

  2. En Resources (Recursos), cree un método POST.

    1. Elija el Integration type (Tipo de integración) de HTTP.

    2. Seleccione Use HTTP proxy integration (Usar integración de proxy HTTP).

    3. Introduzca una Endpoint URL (URL de punto de conexión) de https://<your user pool domain>/oauth2/token.

  3. En Resources (Recursos), configure la clave de caché.

    1. Edite la Method request (Solicitud de método) de su método POST.

    2. Establezca su parámetro scope y el encabezado Authorization como clave de almacenamiento en caché.

      1. Agregue una cadena de consulta a los URL query string parameters (Parámetros de la cadena de consulta URL) y elija Caching (Almacenamiento en caché) para la cadena scope.

      2. Agregue un encabezado a los HTTP request headers (Encabezados de solicitud HTTP) y elija Caching (Almacenamiento en caché) para el encabezado Authorization.

  4. En Stages (Etapas), configure el almacenamiento en caché.

    1. Elija la etapa que desea modificar.

    2. En Settings (Configuración), seleccione Enable API cache (Habilitar caché de API).

    3. Elija una Cache capacity (Capacidad de caché).

    4. Elija una caché time-to-live (TTL) de al menos 3600 segundos.

    5. Desmarque la casilla de verificación Requerir autorización.

  5. En Stages (Etapas), anote la Invoke URL (URL de invocación).

  6. Actualice su aplicación para solicitar el token POST a la Invoke URL (URL de invocación) de su API en lugar del punto de conexión de /oauth2/token de su grupo de usuarios.