¿Es esta la forma correcta de usar AWS Cognito?

1

Estoy haciendo lo siguiente en mi aplicación React / Node:

  1. Usar el User Pools para una aplicación de Cognito que he creado
  2. Llamar al extremo / login con response_type=token en mi aplicación React
  3. Una vez que recibo el token JWT, lo paso a mi nodo / servidor express en un encabezado (mi servidor está usando ssl)
  4. En el servidor Node, use el paquete cognito-express para llamar a cognitoExpress.validate(accessTokenFromClient, callback) a validar el token
  5. Si la llamada es exitosa, guardar los detalles del usuario (correo electrónico, etc.) y el jwt en localStorage en la aplicación React

Y luego, para cada llamada a mi servidor, estoy repitiendo los pasos 3 y 4 anteriores (validando jwt) para garantizar que el usuario esté Autentificado.

Mis preocupaciones con el enfoque anterior son:

  1. No estoy seguro de si cognito-express en realidad está llamando a Cognito, o simplemente está decodificando JWT y tomar una decisión sobre su validez localmente

  2. Intenté dejar la sesión abierta durante la noche, y esperaba que la llamada a cognitoExpress.validate(accessTokenFromClient, callback) fallara (porque el jwt caduca en una hora), pero no lo hizo. ¿Esto significa que un token jwt caducado se considera una reclamación válida?

  3. Si el usuario fue Autenticado y su JWT ha caducado, ¿cómo puedo actualizar el JWT sin pedirle que vuelva a iniciar sesión?

pregunta Amarsh 05.11.2018 - 00:52
fuente

1 respuesta

0
  1. El cognito-express llama a Cognito para obtener la Clave web JSON pública (jwks.json) de su grupo de usuarios, que luego utiliza para validar su JWT. La dirección se deriva de su ID de grupo y la región que proporciona a la biblioteca.
  2. Por lo que puedo decir, esto parece ser un error en cognito-express. El número que pasan en la opción maxAge se supone que está en milisegundos, pero la biblioteca que usan (node-jsonwebtoken) dice que un valor numérico da la caducidad en segundos. Es posible que desee plantear un problema en su sitio de github para solucionarlo.
  3. Debería haber recibido un token de actualización junto con el token de acceso la primera vez que inició sesión. Debe pasar este token de actualización a Cognito para recibir un nuevo token de acceso como se menciona en documentación . Tendrá que hacer esto usted mismo ya que cognito-express no maneja esta parte. Básicamente, deberá realizar un seguimiento de la caducidad de su aplicación y llamar a Cognito poco antes de la fecha de caducidad.
respondido por el AlphaD 05.11.2018 - 04:41
fuente

Lea otras preguntas en las etiquetas