Administración de la caducidad y el almacenamiento en caché de los tokens del grupo de usuarios - 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.

Administración de la caducidad y el almacenamiento en caché de los tokens del grupo de usuarios

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.

  • Solicita una autorización implícita desde tus páginas de inicio de sesión gestionadas.

  • 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 la aplicación, utilice los tokens de Amazon Cognito durante aproximadamente el 75 % de la vida útil del token 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 enlace de Amazon Cognito OAuth 2.0 incluyen el punto de enlace token, que atiende las credenciales de los clientes y las solicitudes de códigos de autorización de inicio de sesión gestionados. 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 escalar en respuesta a eventos que superen la cuota de solicitudes predeterminada de los puntos de enlace de Amazon OAuth Cognito.

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.

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 Gateway APIs se cifran en tránsito y, opcionalmente, en reposo. Una caché de API Gateway es ideal para la concesión de credenciales de clientes 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 sus 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 su grupo de usuarios o de su aplicación cliente. 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, se define una caché en la API para almacenar un token de acceso independiente para cada combinación de OAuth ámbitos y clientes de aplicación que se desee solicitar en la 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 OAuth ámbitos que solicitas en el scope parámetro del cuerpo de la solicitud y en el Authorization encabezado 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 puede implementar el almacenamiento en caché de los tokens con ElastiCache (Redis OSS). 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 costo 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 desee modificar y elija Editar desde los detalles de la etapa.

    2. En Configuración adicional, Configuración de caché, active la opción Aprovisionar memoria caché de la API.

    3. Elija una Cache capacity (Capacidad de caché). Una mayor capacidad de caché mejora el rendimiento, pero conlleva un coste adicional.

    4. Desmarque la casilla de verificación Requerir autorización. Seleccione Continuar.

    5. API Gateway solo aplica políticas de caché a los métodos GET desde el nivel de etapa. Debe aplicar una anulación de la política de caché a su método POST.

      Amplíe la etapa que configuró y seleccione el POST método. Para crear la configuración de caché para el método, elija Crear anulación.

    6. Active la opción Habilitar la caché del método.

    7. Introduzca una caché time-to-live (TTL) de 3600 segundos. Seleccione Guardar.

  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.