0 a Auth en una Hora Usando NodeJS SDK

Rate this content
Bookmark

La autenticación sin contraseña puede parecer compleja, pero es fácil de agregar a cualquier aplicación utilizando la herramienta adecuada.


Mejoraremos una aplicación JS de pila completa (backend de Node.JS + frontend de React) para autenticar usuarios con OAuth (inicio de sesión social) y contraseñas de un solo uso (correo electrónico), incluyendo:

- Autenticación de usuario - Administrar interacciones de usuario, devolver JWT de sesión / actualización

- Gestión y validación de sesiones - Almacenar la sesión para solicitudes de cliente posteriores, validar / actualizar sesiones


Al final del masterclass, también tocaremos otro enfoque para la autenticación de código utilizando Flujos Descope en el frontend (flujos de arrastrar y soltar), manteniendo solo la validación de sesión en el backend. Con esto, también mostraremos lo fácil que es habilitar la biometría y otros métodos de autenticación sin contraseña.


Tabla de contenidos

- Una breve introducción a los conceptos básicos de autenticación

- Codificación

- Por qué importa la autenticación sin contraseña


Requisitos previos

- IDE de tu elección

- Node 18 o superior

63 min
10 Apr, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Este masterclass se centra en agregar autenticación sin contraseña a una aplicación de nodo, cubriendo conceptos básicos de autenticación y la importancia de la autenticación para la seguridad de la aplicación. Explora la gestión de sesiones utilizando sesiones en el lado del servidor y tokens en el lado del cliente como JWTs. El masterclass demuestra la implementación de varios métodos de autenticación, incluyendo contraseñas de un solo uso y OAuth. También se discute la validación y actualización de tokens de sesión, así como la personalización de los métodos de autenticación y el almacenamiento de claves públicas para múltiples instancias.

Available in English

1. Introducción al taller de autenticación

Short description:

En este taller, estaremos agregando autenticación sin contraseña a una aplicación estándar de Node. Cubriremos conceptos básicos de autenticación, la importancia de la autenticación para la seguridad de la aplicación y cómo incorporar la autenticación en una aplicación de Node. Al final del taller, tendrás una mejor comprensión del flujo de autenticación y podrás agregar autenticación a tus propias aplicaciones.

Permíteme comenzar presentándome. Mi nombre es Asaf. Soy ingeniero de software en Dscope. Dscope es una plataforma de autenticación que ayuda a todos los desarrolladores a facilitar la autenticación de manera segura. En el próximo taller, vamos a agregar una autenticación sin contraseña a una aplicación estándar de Node. Comenzaremos revisando algunos conceptos básicos de autenticación y repasaremos las fallas que vamos a agregar. Esto es como un trasfondo y conocimiento que necesitamos adquirir para incorporar la autenticación correctamente. Esto probablemente tomará unos 15 minutos y en el resto del tiempo, vamos a tomar una aplicación existente y agregarle la capa de autenticación. Si te preguntas qué hay para ti en este taller. Creo que al final del taller, tendrás una mejor comprensión del flujo de autenticación. Esto es algo que puede parecer un poco intimidante al principio, pero creo que es bastante simple si lo revisas bien. Y tal vez más importante, creo que podrás tomar una aplicación estándar y agregarle autenticación. Si tienes cualquier aplicación de Node, puedes tomarla y agregar autenticación en unos pocos pasos. Como dije antes, comenzamos con el concepto principal y luego pasaremos a la codificación y daré más información al respecto más adelante. Hola a la persona que escribió en el chat. También estoy muy emocionado. Voy a asumir que tienes un conocimiento básico de Node y el framework Express. La aplicación está escrita en TypeScript. Así que, probablemente si también conoces JavaScript, es suficiente. No usamos mucho TypeScript, pero la aplicación de Node estará escrita en TypeScript. Además, solo para prepararnos para la sesión de codificación, si quieres hacerlo por tu cuenta, debes tener una cuenta de GitHub, cualquier IDE que elijas para codificar y Node versión 18 o superior. Esto depende de ti, pero por supuesto, lo haré aquí, así que esto es opcional.

Comencemos cubriendo el concepto muy básico. Entonces, ¿qué es la autenticación? ¿Qué es la autenticación? La forma en que lo veo, el proceso de autenticación es básicamente verificar la identidad de alguien. Internet es un lugar muy distribuido, por lo que si alguien en otra máquina dice que es alguien, ya sea un usuario, un sistema o un dispositivo, básicamente tienen que demostrarlo antes de querer acceder a la aplicación, a un recurso específico de la aplicación o al sistema. Este es un aspecto muy, muy esencial de la seguridad de la aplicación. Y esto es, usamos la capa de autenticación básicamente para proteger nuestro sistema de accesos no autorizados. Y esto es algo que es súper importante en la era digital. Hay tantas violaciones de datos, robos de identidad en el mundo. Realizar una autenticación adecuada es crucial para la seguridad de tu aplicación.

2. Importancia de la autenticación y factores

Short description:

Discutiremos la importancia de invertir en aplicaciones seguras y los diferentes factores de autenticación, como algo que sabes, algo que tienes y algo que eres. Además, exploraremos nuevos factores como los geográficos y de comportamiento. Después de verificar la prueba y la identidad, la aplicación otorga al usuario acceso a través de una sesión o token.

Y cada vez escuchamos más incidentes de acceso no autorizado. Y si queremos desarrollar una aplicación segura, debemos invertir en ella. Solo como una nota aparte, tenemos un centro de aprendizaje muy bueno con muchos recursos gráficos allí. A veces vuelvo allí y refresco mi memoria. Y hay un enlace en la presentación que también se mostrará.

Entonces, ¿qué vamos a construir? Y esto está más relacionado con los flujos que queremos agregar. Si desglosamos las partes de los pasos de la autenticación, básicamente podemos dividirlo en dos pasos principales. El primer paso es cuando el usuario desea acceder al recurso o la aplicación por primera vez, debe autenticarse. Por lo general, comienza cuando el usuario desea acceder al recurso. Envía algún tipo de solicitud de acceso. El usuario generalmente proporciona su identidad. Esto puede ser básicamente un correo electrónico, un nombre de usuario. Número de teléfono móvil, identificación de seguridad social o ¿qué? Esto es muy específico de la aplicación. Y una prueba generalmente es algo que básicamente demuestra quién eres.

Hay algunos factores de prueba de autenticación que generalmente se llaman factores. Un factor de autenticación se basa en algo que sabes, por ejemplo, una contraseña o tal vez una pregunta de seguridad. Por cierto, un consejo rápido en la pregunta de seguridad, generalmente si te importa la seguridad, no respondas con información real porque generalmente esto es algo muy fácil de obtener, como el nombre de tu mascota, etc. Otro factor de autenticación es algo que tienes, un ejemplo muy común de esto es un dispositivo móvil. Entonces, si te envío un SMS con un código y luego me devuelves el código, puedo decir que esto es básicamente una prueba de que tienes un dispositivo móvil. Y también algo que eres o algo que heredas. Este es un factor relativamente nuevo de información biométrica, ya sea con una huella digital o reconocimiento facial. También he oído hablar de soluciones que escanean la retina y cosas así. ¿Alguien tiene alguna idea o ha oído hablar de más factores de autenticación que los tres que mencionamos? Algo que sabes, algo que tienes, algo que eres.

Así como, y solo para compartir desde nuestra experiencia, hay factores algo nuevos de un factor geográfico. Entonces, básicamente, si inicias sesión desde una ubicación geográfica determinada, esto es algo que generalmente te hace sospechoso o no sospechoso. Si has oído hablar de un escenario de viajero imposible cuando un mismo usuario accede a la misma aplicación desde ambas ubicaciones, básicamente una persona no puede cambiar la ubicación en esa cantidad de tiempo. Y otro es el factor de comportamiento. Básicamente, si te comportas de una manera que no te corresponde, como acceder a resultados a los que no estás acostumbrado o la velocidad, este es otro factor. Entonces, básicamente, después de que la aplicación obtiene la prueba y la identidad, se verifica, básicamente se verifica que coincidan. Y luego la aplicación otorga al usuario acceso. Este acceso generalmente se otorga en forma de una sesión o un token.

3. Gestión de Sesiones y Descripción de la Aplicación

Short description:

Discutiremos la gestión de sesiones y el uso de sesiones en el lado del servidor y tokens en el lado del cliente, como JSON Web Tokens (JWT). Los JWT son preferidos en aplicaciones modernas por razones de escalabilidad y rendimiento, ya que eliminan la necesidad de un único punto de acceso y reducen el costo computacional de validar los tokens. También describiremos la aplicación que construiremos, que incluye una aplicación de escritorio y web en React.js, un servidor Node.js y un servicio de autenticación externo. Mi nombre es Asaf y trabajo con plataformas de autenticación para construir experiencias de usuario seguras y sin fricciones para diferentes tipos de aplicaciones.

Lo veremos muy pronto. Y por lo general, este token o sesión se utiliza en las solicitudes siguientes. Esto se hace para que el usuario no tenga que proporcionar todas las pruebas en cada solicitud. Por lo general, te autenticas una vez, obtienes un token o una sesión y lo usas durante un cierto período de tiempo. Y la parte de verificación después de obtener una sesión, por lo general, proporcionas esta sesión o token y la aplicación solo necesita validarla.

Entonces, si hablamos de la gestión de sesiones, hablamos de sesión versus token, hay dos procesos técnicos para implementar esto. Uno es usar una sesión en el lado del servidor y el otro es usar un token en el lado del cliente. Una sesión generalmente significa que el servidor almacena su información de sesión en una base de datos y proporciona un identificador al cliente y en las solicitudes siguientes se utiliza este ID de sesión para recuperar la información de sesión de la base de datos. La sesión en el lado del servidor generalmente es muy segura, el servidor, que es un lugar seguro, tiene un control total sobre ella. Por ejemplo, si quieres revocar una sesión, es algo que es relativamente sencillo de hacer en una sesión en el lado del servidor, y por otro lado, están los tokens en el lado del cliente. Creo que alguien en el chat mencionó antes los JWT. Los JWT son básicamente el acrónimo de JSON Web Tokens, y esto es un JSON que contiene información sobre quién eres, y se firma de manera asimétrica con una clave privada en el backend, en el servidor, y el token en sí, todo el token se envía al cliente y en las solicitudes siguientes, el JWT se valida básicamente y su información se utiliza para determinar, básicamente el servidor o la aplicación pueden utilizar para determinar información sobre el usuario. ¿Alguien puede compartir cuáles creen que son las ventajas de los tokens en el lado del cliente, tokens, JWTs? Vale, compartiré que básicamente todas todas las aplicaciones modernas prefieren usar un JWT por razones de escalabilidad. Y, básicamente, si hablamos de una arquitectura de microservicios, no necesitas tener un único punto de acceso para acceder, por ejemplo, a una base de datos, y el rendimiento de validar un JWT es algo que es relativamente barato de calcular en comparación con acceder a una entidad de base de datos. Y esto es básicamente, creo que Kevin también mencionó que no tienes que almacenar la sesión en el servidor, y esto es absolutamente cierto. Vale, una última cosa antes de pasar a la sesión de codificación, describamos la aplicación que vamos a construir. El propósito de la aplicación, la mostraré rápidamente en un minuto, es básicamente mostrar al usuario algún tipo de ingreso financiero sobre el cliente de la organización. No importa realmente, pero lo importante es que muestra contiene un recurso y queremos proteger este recurso con una capa de autenticación. La aplicación está compuesta por una aplicación de escritorio, una aplicación web, en React.js. No vamos a dedicar tiempo al código, pero si quieres, puedes ir al repositorio de código abierto y echar un vistazo. El servidor de aplicaciones Node.js, esto es lo que sirve la información al cliente. Vamos a utilizar un servidor Express muy simple. Y otro componente es el servicio de autenticación. Por lo general, este es un servicio externo que gestiona la identidad del usuario y la autenticación. Por lo general, la aplicación se comunica con el servicio de autenticación mediante una biblioteca SDK. En este taller, vamos a utilizar este código como el servicio de autenticación. Vale. Antes de empezar, unas palabras sobre mí. Mi nombre es Asaf, como dije antes. A partir de este código, este código es una plataforma de autenticación que ayuda a todos los desarrolladores a construir seguridad, seguridad y autenticación sin fricciones y a construir experiencias de usuario para aplicaciones B2B, B2C.

4. Introducción a la Autenticación sin Contraseña

Short description:

Nos enfocamos en la autenticación sin contraseña, ofreciendo varios métodos de autenticación como MagicLync, inicio de sesión social, SAML y biometría. Proporcionamos enfoques de autenticación múltiples, incluyendo sin código o con algo de código, y una API. Siéntete libre de hacer preguntas o seguir los pasos mientras avanzamos. Puedes clonar el repositorio y usar la rama principal. Comenzaremos con la masterclass 01 y progresaremos desde allí, demostrando cada paso para agregar autenticación. La aplicación utiliza React para el frontend y Node para el backend.

aplicaciones y básicamente cualquier aplicación que tengas. Nos enfocamos en la autenticación sin contraseña, ofreciendo MagicLync, inicio de sesión social a través del protocolo OAuth, SAML para empresas, autenticación de contraseña de un solo uso, biometría y más. Y tenemos múltiples enfoques de autenticación, ya sea sin código o con algo de código, y también puedes usar la API. Y si quieres leer más al respecto, solo busca este alcance en Google o ve a scope.com. Y eso es todo. Además de eso, juego mucho al Frisbee en mi tiempo libre y me encanta aprender todo lo que puedo sobre astronomía y astrofísica, y soy un gran fan de Almagrid.

De acuerdo, sin más preámbulos, comencemos. Vamos a utilizar el siguiente repositorio. Este es un repositorio en la organización Scope SampleApp. Si hay alguna pregunta, no dudes en interrumpirme ahora o escribir en el chat. Voy a compartir el enlace en, oh, gracias Chris por compartir el enlace. Y ahora, voy a repasar los pasos que describimos antes. Básicamente, creo que tengo la aplicación en ejecución. De acuerdo. Ya he clonado un repositorio en mi computadora. Siéntete libre de copiar, clonar este repositorio en tu máquina. Puedes usar la rama principal. ¿De acuerdo? Pero ya he construido las ramas del frontend. Veamos todas las ramas. Como, vamos a comenzar con la masterclass 01. Y luego, a partir de ahí, vamos a progresar. Voy a mostrar cada paso para agregar otra parte de la autenticación en los siguientes pasos. Puedes decidir si quieres codificarlo, o simplemente escucharme y repasar los pasos más tarde. Voy a usar las ramas para mostrar el progreso. Así que, comencemos. Ya he clonado. Puedes hacer NPM install. Esto instalará todas las dependencias, y si quieres ver la aplicación en ejecución, simplemente ejecuta npm run dev. Esto abrirá una aplicación básica. El frontend está en React. El

5. Estructura de la Aplicación y Autenticación de Usuarios

Short description:

En esta parte, describiremos la estructura del repositorio de la aplicación y las rutas no protegidas. Luego nos enfocaremos en implementar la autenticación de usuarios construyendo un formulario mínimo en la aplicación React y manejando la solicitud de autenticación en el lado del servidor. Para interactuar con el servicio de autenticación, utilizaremos un alcance e iniciaremos sesión para crear una cuenta y obtener un identificador de proyecto. También instalaremos el paquete SDK necesario y crearemos un archivo .n con el ID del proyecto en el directorio del servidor.

El backend está en Node. Y básicamente lo que tiene esta aplicación son algunos widgets de información de ingresos. Y voy a trabajar con la herramienta de desarrollo de Chrome abierta para que podamos ver las redes y otra información importante como las cookies y los detalles de la solicitud. Comencemos describiendo cómo se ve el repositorio. Básicamente tenemos una carpeta de cliente y una carpeta de servidor, y no voy a cubrir el cliente en absoluto. El servidor tiene un punto de entrada, index.ts, y si puedes ver lo que hace la aplicación aquí, básicamente comienza ejecutando un servicio de express y sirve cuatro rutas diferentes, y eso es básicamente todo. Por ahora, esas rutas no están protegidas en absoluto, y nuestro objetivo en esta masterclass es agregar autenticación a esas rutas. De acuerdo, el primer paso que quiero agregar es básicamente darle al usuario un lugar donde pueda autenticarse. La forma en que vamos a implementar esto es construir un formulario muy mínimo en la aplicación e implementar la solicitud de autenticación en el lado del servidor. Entonces, nuevamente, estoy volviendo al diagrama aquí. La solicitud para iniciar la autenticación irá desde la aplicación React al backend de Node y al servicio de autenticación. Y lo primero que vamos a hacer es tener una forma de interactuar con el servicio de autenticación. Podemos ir a nuestro proveedor de autenticación. En este caso, vamos a usar un alcance. Podemos iniciar sesión. Ya tengo una cuenta, pero puedes ir a esta aplicación y crear una cuenta. Es gratis y puedes crearla. Creará automáticamente un proyecto para ti. No necesitas hacer nada aquí en este lugar, excepto copiar el identificador del proyecto. Esto se utilizará para identificar el proyecto cuando accedas al servicio de autenticación. De acuerdo, lo primero que vamos a hacer, bien, voy a cambiar a la primera masterclass, la rama masterclass 01. Esto es lo mismo que la rama principal. Y ya he creado el primer paso en la masterclass número dos. Lo que necesito hacer primero es ir al directorio del servidor. Y quiero instalar esta dependencia. Así que voy a ejecutar npm i --save-exact y el nombre del paquete, este es el paquete, el SDK que nos ayudará a comunicarnos con el alcance. Y veamos qué hemos hecho aquí. Lo importamos y simplemente creamos un objeto, un cliente de autenticación, que luego usaremos para interactuar con el alcance. Otra cosa que puedes hacer con tu ID de proyecto es crear un archivo .n en el directorio del servidor y vamos a abrirlo. Ya existía. Y para crear

6. Agregando Autenticación de Contraseña de Un Solo Uso

Short description:

Ahora agregaremos el primer método de autenticación, la contraseña de un solo uso (OTP), que normalmente se envía al móvil o correo electrónico del usuario. En este caso, lo enviaremos al correo electrónico. Agregaremos el código que envía el correo electrónico y crearemos una ruta POST llamada inicio de sesión OTP. La ruta utilizará la autenticación del cliente para manejar el inicio de sesión o registro con un correo electrónico. Nos aseguraremos de que la solicitud sea exitosa y mostraremos la respuesta, que incluye el código, los datos y la información de error. También agregaremos un formulario en la interfaz de usuario para demostrar el proceso de inicio de sesión.

una entrada con tu ID de proyecto anterior. Voy a copiar el formato en el chat por si te resulta útil. De acuerdo. Básicamente, esta es una forma de copiar tu ID de proyecto. También puedes ponerlo en el código y usar lo que te resulte más cómodo. De acuerdo. Y, por supuesto, si ejecuto el ejemplo, después de cada paso, voy a ejecutar el ejemplo para asegurarme de que se comporte de la misma manera. Por ahora, no hemos hecho nada importante. Y en el backend, simplemente creamos una instancia del SDK y no ha cambiado nada. El siguiente paso que vamos a hacer, y el primer método de autenticación que vamos a agregar se llama contraseña de un solo uso. La contraseña de un solo uso suele ser un código que el servicio de autenticación envía a tu móvil o correo electrónico. En este caso, lo enviaré al correo electrónico para mostrarte en mi bandeja de entrada aquí, y luego enviaremos el código y lo enviaremos. Entonces, el primer paso que vamos a hacer es agregar la parte que envía el correo electrónico. De acuerdo, déjame cambiar a la rama de la Masterclass 3. Esta es la rama en la que hemos agregado una ruta POST llamada inicio de sesión OTP. Y esta ruta utiliza la autenticación del cliente, la autenticación del cliente, para realizar el inicio de sesión o registro con un correo electrónico. De acuerdo, si quieres, puedes usar un teléfono en su lugar, lo siento, SMS en su lugar. También proporcionamos WhatsApp. Pero esto depende de ti. Voy a agregar un formulario de correo electrónico. Y lo que hemos hecho básicamente es asegurarnos de que la solicitud sea exitosa. Y si usas TypeScript, esto es muy útil para ver la respuesta. Así puedes ver qué contiene la respuesta. Básicamente, un objeto con una respuesta del SDK, que básicamente contiene el código, si la solicitud fue exitosa o no. Y los datos genéricos y la información de error si hay un error. Y también agregué un formulario en la interfaz de usuario. Vamos a verlo. ¿De acuerdo? Solo voy a navegar a y este es el formulario que he agregado. Y podemos ver que si inicio sesión, obtengo una solicitud 200. Y esto básicamente me envía este código. Y el siguiente paso que vamos a hacer

7. Agregando Verificación de Código de Un Solo Uso

Short description:

En la siguiente rama, agregamos otra ruta para la verificación de código de un solo uso. Esta ruta valida el correo electrónico y el código desde la interfaz de usuario y comparte la información de autenticación con el navegador. La función toma la respuesta de Express, la respuesta del SDK y la salida del SDK, establece las cookies y el JWT de sesión, y las devuelve. El SDK devuelve el JWT de sesión y cookies adicionales, como un token de actualización. Veámoslo en acción.

El objetivo es tomar este código y verificar al usuario utilizando este código. ¿De acuerdo? Entonces, vamos a la siguiente rama. ¿De acuerdo? En la siguiente rama, agregamos otra ruta para verificar el código de un solo uso. Esta ruta obtiene el correo electrónico y el código de la interfaz de usuario. Y utiliza otro método para verificar el correo electrónico. Y nuevamente, verifica si hay errores. Y la información importante después de esto es que queremos compartir la información de autenticación desde la respuesta al navegador. La forma en que se hace esto es mediante una función corta que hemos escrito. Toma la respuesta de Express, la respuesta del SDK y la salida del SDK. Y lo que hace básicamente es establecer las cookies y el JWT de sesión, y devolver y establecer las cookies a partir de esta información. El SDK devuelve el JWT de sesión en la respuesta y cookies adicionales para otros usos, como por ejemplo, un token de actualización. Y lo que queremos hacer es agregar la cookie a la respuesta.

8. Autenticación de Usuario y Cookies

Short description:

Al iniciar sesión, la respuesta devuelve una cookie de sesión y una cookie de actualización. La cookie de sesión se establece automáticamente, mientras que la cookie de actualización se devuelve en el objeto de cookies. La cookie de actualización es el token de sesión que identifica al usuario y puede contener información adicional sobre el usuario, como roles o inquilinos. Es un objeto con una firma que contiene información del usuario.

Veámoslo en acción. De acuerdo. Entonces, permíteme eliminar el correo electrónico anterior. Si inicio sesión ahora mismo, también he agregado en la interfaz de usuario un formulario de código. Y una vez que obtengo el correo electrónico y el código del correo electrónico, y lo ingreso, en este momento, puedo ver que en la respuesta se devuelven dos cookies. Devuelve una cookie de sesión y otra cookie de actualización. La cookie de sesión es la que establecemos aquí automáticamente. Y la cookie de actualización es la que devuelve esta llamada en el objeto de cookies. Y hablaré sobre la actualización en un momento. La actualización suele ser el token de sesión, es el que se elige para identificar al usuario. Puede contener más información sobre el usuario, como sus roles, o si es una aplicación B2B, puede contener sus inquilinos y otros reclamos personalizados. No voy a cubrir demasiado sobre JWT, pero en pocas palabras, este es un objeto con una firma, y el objeto contiene información sobre el usuario, quién dice ser el usuario. Y avísame si tienes alguna pregunta y puedo

9. Protección de los Datos del Usuario con Middleware

Short description:

Vimos que la cookie devuelta a la aplicación se establece automáticamente en cada solicitud al servidor. Ahora, necesitamos agregar un middleware para proteger los datos del usuario autenticado. El middleware analiza las cookies, extrae los tokens de actualización y sesión, y utiliza el SDK de autenticación del cliente para validar la sesión. Si la firma coincide con la información JWT, se crea el contexto de la solicitud.

Ampliemos eso. De acuerdo, vimos que la cookie devuelta a la aplicación. También podemos ver en la herramienta de desarrollo de Chrome que aquí tenemos las cookies, la cookie de sesión y la cookie de actualización, y podemos ver que en cada solicitud que enviamos al servidor, esas cookies se establecen automáticamente. Entonces, el servidor establece las cookies en la respuesta. Y a partir de ahí, todas las solicitudes al servidor contienen esas cookies.

Entonces, creo que ahora es un buen momento para la parte principal y la parte importante sobre la autenticación es básicamente proteger esos resultados. Ahora mismo, hemos completado la primera parte de autenticar al usuario. El usuario está autenticado, pero aún no hemos verificado que el usuario esté verificado. Entonces, lo que queremos hacer ahora es agregar un middleware delante de todas esas rutas que se asegurará de que el usuario esté autenticado. Veamos cómo se ve. Entonces, agregamos el siguiente código. Aquí tenemos una función. Este es un middleware de express, y lo cubriremos en un momento, y hemos creado el DedicateRouter. El enrutador, ejecutaremos el middleware antes de cada solicitud, y cambiamos todas las API que queremos proteger que queremos proteger para que se ejecuten en este enrutador específico. Veamos qué hace este middleware. Básicamente, este middleware toma la solicitud y la respuesta y qué se debe ejecutar después. El middleware puede decidir si ejecutar la siguiente función, que en este caso es la función que devuelve los datos, o no. Veamos qué hace el middleware. Lo primero que hace es analizar las cookies. Las cookies están en la solicitud. Las configuramos en pasos anteriores, por lo que podemos ver básicamente un código muy simple que toma la solicitud, toma la cookie y la descompone. Lo escribí aquí en código simple para que podamos ver qué sucede internamente, pero hay muchos paquetes dedicados para estos propósitos, por ejemplo, CookieJS y otras bibliotecas de Javascript que pueden hacerlo por ti. Luego extraemos el token de actualización y de sesión y utilizamos la autenticación del cliente, el SDK para validar la sesión. Lo que hará esta acción es tomar la sesión y asegurarse de que la firma coincida con la información del JWT. Si no has visto JWT antes, contiene tres partes que están codificadas en Base64. La primera parte contiene metadatos sobre qué algoritmo usar y otra información sobre el token. La parte central contiene la información sobre el usuario, el ID del usuario y tal vez cosas como roles y otra información personalizada. Y la última parte es la firma. Entonces, lo que hará esta parte es validar que la firma coincida con lo que el usuario dice que es. Y si esta parte básicamente tiene éxito, creamos el contexto de la solicitud. Por cierto, aquí arriba declaramos cómo debería verse el contexto

10. Token de Sesión y Token de Actualización

Short description:

Un token de actualización se utiliza para comunicarse con el servicio de autenticación y generar un nuevo token de sesión. No contiene información del usuario y debe tratarse como un secreto. El token de sesión también es sensible y debe almacenarse de forma segura. Si falla la validación de la sesión, el SDK arroja una excepción e intenta actualizar la sesión. Si la actualización falla, se devuelve una respuesta no autorizada. El middleware del token de actualización se ejecuta antes de cada solicitud, asegurando que el usuario se comunique con el nuevo token de sesión. En el modo incógnito, las solicitudes fallan debido a la falta de cookies. El SDK valida que los tokens de sesión y acceso no estén caducados.

si estás interesado. Y esta es una forma de expresar, de articular básicamente en TypeScript cómo queremos que se vea el contexto de la solicitud. Y agregamos esta información aquí. La pregunta es básicamente, por lo general, un token de sesión de actualización es válido por un cierto período de tiempo. Es válido durante cinco minutos o diez minutos. Pero generalmente se hace por razones de seguridad porque no queremos que la sesión sea, una vez que una sesión está firmada y generada, sea válida hasta que expire. Entonces, el tiempo de validación de la sesión suele ser de cinco a diez minutos, pero no queremos que el usuario se autentique cada 5 a 10 minutos. Para ese propósito, existe el token de actualización. El token de actualización se utiliza para comunicarse con el servicio de autenticación y generar un nuevo token de sesión. Ese es su propósito. Por lo general, no contiene información sobre el usuario y debe tratarse como un secreto. Además, el token de sesión también debe usarse como un secreto, pero esta es información muy sensible por lo que debe mantenerse de manera muy segura. Por ejemplo, todas las cookies se establecen como una cookie solo para HTTP y como cookies seguras. Esto también es algo que vale la pena mencionar. Si falla la validación de la sesión, el SDK lanzará una excepción. El middleware intentará actualizar la sesión.

Intentamos actualizar la sesión. Si la actualización falla, devolvemos una respuesta no autorizada. Y si la actualización tiene éxito, queremos establecer cookies de autenticación como lo hemos hecho en la autenticación porque queremos comunicar al usuario con el nuevo token de sesión. Y eso es todo. Nuevamente, este token de actualización es este middleware de autenticación que se ejecuta antes de cada solicitud. Veámoslo en vivo. De acuerdo, voy a actualizar la página. Y podemos ver que todavía estamos obteniendo la información. También quiero ir a incógnito, y ver qué sucede cuando enviamos una solicitud aquí. Podemos ver que obtenemos un 401. La razón es porque las cookies no se mantienen entre la ventana de incógnito, podemos ver que no tenemos ninguna cookie aquí. Y debido a que no hemos enviado la autenticación, no hemos enviado la información de notificación, todas las solicitudes fallaron. Veo que hay una pregunta en el chat. ¿Y la validación de Jot también verifica que el token de acceso Jot haya caducado? Esta es una muy buena pregunta. Sí, la función del SDK que vimos aquí también valida que la sesión sea válida y no haya caducado.

11. Detalles de la Sesión y Expiración

Short description:

Podemos examinar los detalles de la sesión en el sitio web de Jot.io. La sesión consta de metadatos, carga útil y una firma. La carga útil contiene información como el emisor, ID del proyecto e ID del usuario. También incluye un tiempo de expiración. Podemos ver el tiempo de expiración de un token al observar la carga útil.

En cada sesión, podemos echar un vistazo aquí. Vamos a echar un vistazo aquí a la sesión. Voy a copiarlo. Hay un buen sitio web llamado Jot.io. Y puedes ver que son las tres partes que hemos discutido antes. Metadatos, los encabezados del JOT. Esta es la carga útil, contiene, básicamente, el emisor, este es el ID del proyecto, en el ámbito. Este es el ID del usuario y puede haber más metadatos en esto, y la tercera parte que vemos en azul es la firma. También puedes ver que una parte de la carga útil es cuando expira. Por ejemplo, este token expiró hace aproximadamente dos minutos, si no me equivoco.

QnA

Validación y Actualización de Sesiones

Short description:

La validación de la sesión genera un nuevo token de acceso si ha expirado. Si la validación falla, se envía una solicitud de actualización. Los tokens JWT se validan descargando una clave pública. La funcionalidad de Validar y Actualizar devuelve cookies y maneja el trabajo necesario por ti.

De acuerdo. Aquí hay otra pregunta. Entonces, la validación de la sesión está a punto de generar un nuevo token de acceso una vez que haya expirado. Así que para la segunda pregunta, la validación de la sesión no lo hace sola. Para este propósito, hemos creado una actualización. Si la validación de la sesión falla, enviamos una solicitud de actualización para obtener una nueva sesión. Por cierto, el SDK también admite, lo siento, validar y actualizar la sesión en la misma parte. Básicamente encapsula las partes que hemos visto aquí por ti. Omkar, adelante. Desactiva el silencio. En la función de validación de sesión, ¿simplemente valida el token JWT o hace una llamada al servidor de autenticación para validar el token? Entonces, para los tokens JWT generalmente se validan, no se validan en el backend, pero la forma en que se hace, la validación se realiza descargando una clave pública. La forma en que se construye JWT es con una clave privada y se genera con una clave privada y se valida con una clave pública. Lo que hace la API en el fondo es descargar una vez públicamente y la utiliza para verificar la firma del token. Espero que eso responda la pregunta. Básicamente, la descarga de la clave pública se realiza una vez. Hay un protocolo sobre cómo verificar JWT, un tema muy interesante. Hay otros aspectos, tal vez podamos verlo aquí. Por lo general, hay otra información sobre el JWT, como cuál es el ID de clave, porque generalmente el proveedor de servicios, el ámbito también lo hace. Rota las claves públicas por razones de seguridad. Así que cada clave pública se descarga una vez. De acuerdo, entendido. Gracias.

Sí. Y otra pregunta es si Validar y Actualizar también reescribe las cookies que se envían al cliente. Así que Validar y Actualizar también devuelve cookies. Y cuando creamos esta sesión, como divulgación completa, cuando creamos esta sesión, descubrimos que hay algunas brechas en la funcionalidad de Validar y Actualizar. Esta es una de las razones por las que estoy demostrando esto de esta manera. Pero sí, idealmente, Validar y Actualizar hará todo este trabajo por ti, y devolverá las cookies, y luego podrás tomar las cookies y ponerlas en la solicitud del usuario. Permíteme continuar.

Flujos de Autenticación y Protocolo OAuth

Short description:

En esta sección, cubrimos más casos de uso de los flujos de autenticación, incluyendo la implementación de una ruta de cierre de sesión. La ruta de cierre de sesión borra las cookies y envía una señal al navegador para que también las borre. Luego discutimos el protocolo OAuth, que delega la autenticación en otro servicio de identidad. Explicamos cómo funciona OAuth y agregamos rutas para iniciar la autenticación con Google y redirigir de vuelta a nuestra ruta de finalización.

Acabamos de ver cómo proteger la ruta. Básicamente, esto es lo que hemos cubierto en la en los flujos que hemos discutido. Por lo general, para exponer, porque tenemos un poco más de tiempo, vamos a mostrar más casos de uso de los flujos de autenticación. Otra cosa que queremos hacer cuando tenemos a todos los usuarios, es darles la posibilidad de cerrar sesión. Así que también he implementado una ruta de cierre de sesión. Ten en cuenta que la ruta de cierre de sesión también es una ruta autenticada. Veamos qué hace. Toma el token de actualización del contexto y llama al cierre de sesión. Este proceso básicamente indica al servicio de autenticación que no se puede usar este token para actualizar ninguna sesión. Y luego borra las cookies de la solicitud. Así que el navegador también las borrará. Podemos verlo aquí en vivo. También he agregado otro botón aquí que activa la función de cierre de sesión. Puedes ver que una vez que cierro sesión, una vez que presiono cerrar sesión, activo las funcionalidades de cierre de sesión. Y puedes ver que tengo unas cookies vacías, lo que básicamente indica al navegador que las borre. Y si voy a la página principal, no obtendré ninguna respuesta. De acuerdo. Y déjame continuar cubriendo otro método de autenticación del que quiero hablar, quiero hablar brevemente sobre OAuth. OAuth es un protocolo que delega la autenticación en otro servicio de identidad. Por lo general, usamos cuentas sociales para esto, por ejemplo, cuando inicias sesión con Google o inicias sesión con Twitter o inicias sesión con Facebook, esto utiliza el protocolo OAuth. Y en pocas palabras sobre el protocolo OAuth, cómo funciona, la aplicación delega la autenticación en otro servicio. Redirige al usuario a otro servicio y recibe de vuelta, lo siento, un código o tal vez un token. Y toma este token y después de obtener el token, lo verifica y crea un token de sesión JWT y un token de actualización JWT. Los términos aquí son un poco confusos porque hay el token de OAuth y hay el token de sesión. Así que esto puede ser un poco confuso. Veámoslo en la práctica y creo que será un poco más claro. Aquí agregamos dos rutas más. Una es cuando el usuario presiona, por ejemplo, el botón de iniciar sesión con Google. Disparamos una llamada a la API del servicio de autenticación para iniciar la autenticación con Google. Y le decimos al servicio que después de que se haya completado la autenticación, queremos redirigirlo de vuelta a nuestra ruta de finalización. ¿De acuerdo? Y después de un éxito, después de que esto sea exitoso

Autenticación OAuth con Google

Short description:

Redirigimos al usuario a la ruta de inicio de OAuth, donde se le lleva a la página de autenticación de Google. Después de la autenticación, el usuario es redirigido de vuelta a la aplicación con un código. Este código se intercambia con la sesión y se establecen las cookies de la misma manera que antes. La autenticación funciona como se esperaba y no se requirieron cambios en el middleware de autenticación.

Para iniciar Google, redirigimos, obtenemos la URL. Y redirigimos al usuario a esta URL. Y veámoslo en vivo. De acuerdo. Lo siento. De acuerdo. Así que he agregado otro botón aquí en la interfaz de usuario. Esto activará la ruta de inicio de OAuth. Y puedes ver que básicamente lo que hace, es llevar al usuario a account.google.com. OAuth 2, este es el protocolo. Y ahora la autenticación se realiza con Google. De acuerdo. Y una vez que me autentico, me redirigen de vuelta a este código. Y esta parte me redirigió de vuelta. Tomó el código de la consulta. Este es el código que transferimos con la sesión. Y luego intercambiamos este código que obtuvimos de Google en este caso con la sesión. Y después, establecemos las cookies de la misma manera y redirigimos al usuario de vuelta a la aplicación. De acuerdo, y puedes ver que la autenticación funciona como antes y no se ha cambiado nada en ese sentido. Y no tuvimos que cambiar nada en la autenticación, en el middleware de autenticación.

Validación de Tokens JWT y Rendimiento

Short description:

El servidor almacena la clave pública en memoria utilizando el SDK. La clave pública no es secreta y se utiliza para validar la firma del JWT. Es liviana y tiene un impacto mínimo en el rendimiento de la aplicación.

De acuerdo, ¿alguna pregunta sobre lo que hemos hecho hasta ahora? En el token JWT, mencionaste que el token JWT se crea utilizando la clave privada y luego se valida utilizando la clave pública. ¿Entonces el servidor almacena la clave pública en memoria o con ella? Sí, el SDK básicamente, este objeto client auth, este es el SDK. Lo almacena internamente en la memoria. Solo para reiterar las primeras dos cosas, esta clave pública no es secreta, cualquier persona puede acceder a ella. Y su único propósito es validar que la firma del JWT coincida con la información que el usuario, que está en el payload. Esto básicamente demuestra que el JWT fue generado con la clave privada correspondiente. Wow. Y lo otro que quiero mencionar es que esta clave pública es muy liviana y no afecta el rendimiento de la aplicación. Es muy baja.

OAuth y Autenticación en el Frontend

Short description:

OAuth es un protocolo que involucra un servicio de identidad externo y la generación de tokens. La aplicación lleva al usuario al proveedor de identidad, obtiene un código y genera un JOT. Tenemos un enfoque diferente donde la autenticación se realiza desde el frontend hacia el servicio de autenticación. Esto implica eliminar los métodos de autenticación y utilizar un middleware mínimo para la validación. Se agrega el SDK de React al frontend y un componente de alcance controla el proceso de autenticación.

De acuerdo, otra pregunta. ¿Qué es diferente? Aquí, con OAuth, tenemos un servicio de identidad externo y la generación del token. Entonces, esta es una muy buena pregunta. Básicamente, está relacionado con el propósito de OAuth. Y OAuth no... La salida del inicio de sesión social es solo para generar el código. El código, esto es básicamente algo que se mueve hacia las identidades. En OAuth, OAuth es un protocolo vasto, pero básicamente, además del usuario, está el proveedor de servicios, que es la aplicación que tenemos aquí. Perdón, esta es la aplicación que tenemos aquí, y el proveedor de identidad. El proveedor de identidad, en este caso, es Google. Entonces, la aplicación lleva al usuario al proveedor de identidad, obtiene el código y la responsabilidad de generar el JOT sigue en el proveedor de servicios, que en este caso es la aplicación Node que tenemos. Creo que si quieres leer un poco más sobre OAuth, tenemos muy buenos artículos en el blog de Dscope. Así que recomendaría leer más al respecto allí. En el minuto que tengo antes de responder más preguntas, quiero presentar un enfoque diferente a lo que hemos hecho aquí. Hasta ahora, vimos un enfoque en el que la autenticación se realiza directamente desde el servidor de la aplicación hacia el servicio de autenticación. Hay otro enfoque que creemos que es un poco más flexible y simple de incorporar, que se realiza desde el frontend directamente hacia el servicio de autenticación. Entonces puedes ver que eliminé todos los métodos de autenticación , el OTP y el OAuth. Me quedé con un middleware muy, muy mínimo que solo hace la validación y todo el trabajo de mostrar los formularios y gestionar los tokens se hace con el frontend. No voy a cubrirlo demasiado porque esto se hace básicamente en React. Esto no es el alcance de esta masterclass. Pero el resumen de esto es que básicamente agregamos el SDK de React en el lado del frontend. Envolvemos la aplicación en un proveedor de autenticación. Y luego, en lugar de los flujos, lo siento, en lugar de los formularios que vimos antes, simplemente agregamos un componente de alcance mínimo. Y este componente básicamente controla todo. Creo que olvidé instalar la aplicación de React. De acuerdo. Entonces este formulario es completamente sin código. Puedes ir básicamente, a la aplicación de alcance y ir a la página de flujos y controlar las pantallas y los flujos de autenticación directamente desde aquí. Esta es la pantalla que vemos aquí en la aplicación. Es muy fácil de incrustar.

Personalización de los Métodos de Autenticación y Flujo de OAuth

Short description:

Puedes personalizar los métodos de autenticación en la interfaz de alcance, incluyendo la adición de biometría. La interfaz permite un control completo sobre el diseño de la aplicación y la adición de pasos, como registrarse o iniciar sesión con biometría. No se requieren cambios en el frontend o backend para que la autenticación funcione. El protocolo OAuth redirige a los usuarios al proveedor de identidad elegido, como Google. El proveedor valida el código y, si tiene éxito, genera un token de sesión.

Y puedes controlar los métodos de autenticación que deseas agregar en la interfaz de alcance. Creemos que esta forma es mucho más flexible y sencilla de hacer. Por ejemplo, si deseas agregar otro método de autenticación, como la biometría, todo lo que necesito hacer es agregar aquí, por ejemplo, un botón de biometría. Esta interfaz es altamente personalizable. Por ejemplo, puedo tener un control completo sobre el diseño de la aplicación y puedo agregar otro paso aquí de biometría, ¿de acuerdo? Por ejemplo, registrarse o iniciar sesión usando biometría, conectado con una experiencia de arrastrar y soltar muy sencilla. Y una vez que presiono guardar, puedo ver los cambios aquí. Esto es algo que ahora, por ejemplo, puedo usar para autenticarme y esto es, no tuve que cambiar nada en el frontend o en el backend. La autenticación funcionará de la misma manera.

Creo que esto es lo que tengo que mostrar en la masterclass. Estoy disponible para preguntas aquí. Y antes de eso, quiero dar las gracias. Muchas gracias a todos, a los participantes. Fue un placer conocerlos.

Hola, lo que estabas describiendo la última vez era que hay una forma de que la aplicación frontend tome el token directamente del servidor de identidad o el código, y ese código será el código de seguridad que se utilizará para comunicarse de forma segura con el backend. Ese código se validará desde el backend hacia el servidor de identidad. Cuando hablo aquí de servidor de identidad, me refiero a una entidad que no forma parte del servidor que estamos utilizando. Puede ser Google, puede ser Amazon, puede ser otra entidad, ¿verdad?

Correcto. Te refieres al flujo de OAuth, ¿verdad?

Sí, exactamente. Correcto, tienes razón. El protocolo OAuth redirige al usuario al proveedor de identidad en este caso, Google. El proveedor de identidad en este caso es Google. Realizas la autenticación con Google. Google, a su vez, lleva al usuario, permíteme mostrarlo en el código, lleva al usuario de vuelta al proveedor de identidad, una URL directa con el código como parámetro de consulta. Y la aplicación toma este código, lo valida contra Google. Y si la validación contra Google tiene éxito, generará un token de sesión. Espero que esto responda la pregunta.

Sí. Muchas gracias por aclarar todas mis preguntas.

No hay problema, fue un placer. Otra pregunta sobre Jot Auth.

Almacenamiento de Clave Pública para Múltiples Instancias

Short description:

Cuando se utilizan múltiples instancias de un servidor o un servidor sin estado, no es necesario preocuparse por almacenar o gestionar la clave pública. El SDK se encarga automáticamente del proceso de descarga de la clave pública correspondiente desde el servicio de autenticación. Esta funcionalidad no está vinculada a ninguna instancia específica y se puede realizar desde una función sin servidor.

¿Cómo almacenar una clave pública si estás utilizando múltiples instancias del servidor o un servidor sin estado? Esto es algo de lo que no tienes que preocuparte. Es completamente transparente para ti. Solo necesitas llamar a la validación de sesión y la validación de sesión se encargará automáticamente... Básicamente, esto es lo que hará. Tomemos un ejemplo de una sesión aquí y vayamos a JotIO, ¿de acuerdo? Tomará el ID de clave del encabezado y descargará el ID de clave y el emisor y el ID de clave y lo descargará desde el servicio de identidad. Descargará... Perdón, desde el servicio de autenticación, descargará la clave pública correspondiente. Así es como se hace. No necesitas preocuparte por almacenarla o gestionarla. El SDK lo hace automáticamente. Y esto no está vinculado a ninguna instancia específica. Se puede hacer desde una función sin servidor sin ningún problema. Genial, una vez más, quiero dar las gracias a todos. Fue un placer y nos vemos la próxima vez.

Watch more workshops on topic

React Day Berlin 2022React Day Berlin 2022
86 min
Using CodeMirror to Build a JavaScript Editor with Linting and AutoComplete
Top Content
WorkshopFree
Using a library might seem easy at first glance, but how do you choose the right library? How do you upgrade an existing one? And how do you wade through the documentation to find what you want?
In this workshop, we’ll discuss all these finer points while going through a general example of building a code editor using CodeMirror in React. All while sharing some of the nuances our team learned about using this library and some problems we encountered.
Node Congress 2023Node Congress 2023
109 min
Node.js Masterclass
Workshop
Have you ever struggled with designing and structuring your Node.js applications? Building applications that are well organised, testable and extendable is not always easy. It can often turn out to be a lot more complicated than you expect it to be. In this live event Matteo will show you how he builds Node.js applications from scratch. You’ll learn how he approaches application design, and the philosophies that he applies to create modular, maintainable and effective applications.

Level: intermediate
TestJS Summit - January, 2021TestJS Summit - January, 2021
173 min
Testing Web Applications Using Cypress
WorkshopFree
This workshop will teach you the basics of writing useful end-to-end tests using Cypress Test Runner.
We will cover writing tests, covering every application feature, structuring tests, intercepting network requests, and setting up the backend data.
Anyone who knows JavaScript programming language and has NPM installed would be able to follow along.
React Summit 2023React Summit 2023
56 min
0 to Auth in an hour with ReactJS
WorkshopFree
Passwordless authentication may seem complex, but it is simple to add it to any app using the right tool. There are multiple alternatives that are much better than passwords to identify and authenticate your users - including SSO, SAML, OAuth, Magic Links, One-Time Passwords, and Authenticator Apps.
While addressing security aspects and avoiding common pitfalls, we will enhance a full-stack JS application (Node.js backend + React frontend) to authenticate users with OAuth (social login) and One Time Passwords (email), including:- User authentication - Managing user interactions, returning session / refresh JWTs- Session management and validation - Storing the session securely for subsequent client requests, validating / refreshing sessions- Basic Authorization - extracting and validating claims from the session token JWT and handling authorization in backend flows
At the end of the workshop, we will also touch other approaches of authentication implementation with Descope - using frontend or backend SDKs.
JSNation 2023JSNation 2023
104 min
Build and Deploy a Backend With Fastify & Platformatic
WorkshopFree
Platformatic allows you to rapidly develop GraphQL and REST APIs with minimal effort. The best part is that it also allows you to unleash the full potential of Node.js and Fastify whenever you need to. You can fully customise a Platformatic application by writing your own additional features and plugins. In the workshop, we’ll cover both our Open Source modules and our Cloud offering:- Platformatic OSS (open-source software) — Tools and libraries for rapidly building robust applications with Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (currently in beta) — Our hosting platform that includes features such as preview apps, built-in metrics and integration with your Git flow (https://platformatic.dev/). 
In this workshop you'll learn how to develop APIs with Fastify and deploy them to the Platformatic Cloud.
React Day Berlin 2023React Day Berlin 2023
127 min
Authentication Beyond Passwords
WorkshopFree
Passwords have long been the keys to our kingdoms. However, they often become the weak points in our armor — forgotten, misused, or exploited. Our Next apps often make use of passwords to authenticate users, but what would a world with no passwords look like? And how we can start driving into that future today?

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Scaling Up with Remix and Micro Frontends
Top Content
Do you have a large product built by many teams? Are you struggling to release often? Did your frontend turn into a massive unmaintainable monolith? If, like me, you’ve answered yes to any of those questions, this talk is for you! I’ll show you exactly how you can build a micro frontend architecture with Remix to solve those challenges.
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Full Stack Components
Top Content
Remix is a web framework that gives you the simple mental model of a Multi-Page App (MPA) but the power and capabilities of a Single-Page App (SPA). One of the big challenges of SPAs is network management resulting in a great deal of indirection and buggy code. This is especially noticeable in application state which Remix completely eliminates, but it's also an issue in individual components that communicate with a single-purpose backend endpoint (like a combobox search for example).
In this talk, Kent will demonstrate how Remix enables you to build complex UI components that are connected to a backend in the simplest and most powerful way you've ever seen. Leaving you time to chill with your family or whatever else you do for fun.
JSNation Live 2021JSNation Live 2021
29 min
Making JavaScript on WebAssembly Fast
Top Content
JavaScript in the browser runs many times faster than it did two decades ago. And that happened because the browser vendors spent that time working on intensive performance optimizations in their JavaScript engines.Because of this optimization work, JavaScript is now running in many places besides the browser. But there are still some environments where the JS engines can’t apply those optimizations in the right way to make things fast.We’re working to solve this, beginning a whole new wave of JavaScript optimization work. We’re improving JavaScript performance for entirely different environments, where different rules apply. And this is possible because of WebAssembly. In this talk, I'll explain how this all works and what's coming next.
React Summit 2023React Summit 2023
24 min
Debugging JS
As developers, we spend much of our time debugging apps - often code we didn't even write. Sadly, few developers have ever been taught how to approach debugging - it's something most of us learn through painful experience.  The good news is you _can_ learn how to debug effectively, and there's several key techniques and tools you can use for debugging JS and React apps.
Node Congress 2022Node Congress 2022
26 min
It's a Jungle Out There: What's Really Going on Inside Your Node_Modules Folder
Top Content
Do you know what’s really going on in your node_modules folder? Software supply chain attacks have exploded over the past 12 months and they’re only accelerating in 2022 and beyond. We’ll dive into examples of recent supply chain attacks and what concrete steps you can take to protect your team from this emerging threat.
You can check the slides for Feross' talk here.