Tengo una función lambda a la que se accede a través de la puerta de enlace API. La función recibe el nombre de usuario y la contraseña y realiza la autenticación en un directorio activo dado.
Si se encuentra el usuario, llama a la base de datos para buscar al usuario por nombre de usuario> genera JWT y lo devuelve en la respuesta.
Durante los últimos días he recibido errores de CORS en la página de inicio de sesión. En una inspección más detallada de los registros de CloudWatch, veo estos errores
{ "errno": "ETIMEDOUT", "code": "ETIMEDOUT", "syscall": "connect", "address": "10.1.2.39", "port": 389 } error.code Error: connect ETIMEDOUT 10.1.2.39:389 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16) { errno: 'ETIMEDOUT', code: 'ETIMEDOUT', syscall: 'connect', address: '10.1.2.39', port: 389} ERROR: aws-serverless-express connection error ERROR Error: socket hang up at connResetException (internal/errors.js:609:14) at Socket.socketOnEnd (_http_client.js:458:23) at Socket.emit (events.js:326:22) at endReadableNT (_stream_readable.js:1241:12) at processTicksAndRejections (internal/process/task_queues.js:84:21) { code: 'ECONNRESET'}Lo extraño es que, cuando intento iniciar sesión en la aplicación por primera vez, obtengo estos errores, pero digamos que espero unos 15-20 minutos y luego intento iniciar sesión nuevamente, no aparece ningún error y estoy conectado sin problemas.
El AD es mantenido por el cliente y afirman que nada está mal de su parte. Este problema comenzó a ocurrir recientemente a pesar de que la aplicación ha estado en producción durante los últimos seis meses.
Estoy usando el módulo de directorio activo para la autenticación de AD. Si ejecuto un código de autenticación simple localmente con el mismo nombre de usuario y contraseña, entonces funciona, por lo que no hay problema con la autenticación AD o las credenciales.
Estoy usando Node 12 en mi lambda. También estoy usando aws-serverless-koa y no express, así que asumo que el error proviene de alguna dependencia (probablemente directorio activo).