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
This workshop has been presented at Node Congress 2023, check out the latest edition of this JavaScript Conference.
FAQ
Dscope es una plataforma de autenticación que facilita la implementación de procesos de autenticación seguros para desarrolladores, permitiéndoles agregar fácilmente autenticación a sus aplicaciones.
En el taller, aprenderás los conceptos básicos de la autenticación y cómo implementar una autenticación sin contraseña en una aplicación Node usando Dscope, lo que te ayudará a entender mejor el flujo de autenticación y a aplicarlo en tus propios proyectos.
Para participar activamente en el taller de codificación, necesitas una cuenta de GitHub, un IDE de tu elección, y Node versión 18 o superior. Sin embargo, estos requisitos son opcionales si prefieres solo seguir la demostración en el taller.
El taller cubrirá varios métodos de autenticación, incluyendo autenticación basada en contraseña, autenticación de dos factores, uso de biometría como huellas digitales o reconocimiento facial, y autenticación sin contraseña.
Puedes agregar autenticación a una aplicación Node existente utilizando el SDK de Dscope, que te permite integrar fácilmente varias formas de autenticación, siguiendo los pasos y métodos enseñados en el taller.
JWT (JSON Web Tokens) es un estándar que define un compacto y autónomo modo de transmitir información entre partes como un objeto JSON. En Dscope, los JWT se utilizan para mantener un estado seguro de la sesión del usuario, validando la autenticidad de las solicitudes entre el cliente y el servidor.
OAuth es un protocolo de autorización que permite a las aplicaciones terceras acceder a recursos del servidor en nombre del usuario sin exponer sus credenciales. Es ampliamente utilizado para permitir a los usuarios iniciar sesión en aplicaciones mediante sus cuentas de redes sociales como Google o Facebook.
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.
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.
Durante esta masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debería conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final de la masterclass, los participantes ganarán una nueva confianza en su capacidad para escribir código JavaScript de alta calidad que resista el paso del tiempo. Puntos Cubiertos: 1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso Cómo Ayudará a los Desarrolladores: - Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y la comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento de la carrera y las oportunidades de avance en la industria del software
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
Top Content
WorkshopFree
2 authors
Usar una biblioteca puede parecer fácil a primera vista, pero ¿cómo eliges la biblioteca correcta? ¿Cómo actualizas una existente? ¿Y cómo te abres camino a través de la documentación para encontrar lo que quieres? En esta masterclass, discutiremos todos estos puntos finos mientras pasamos por un ejemplo general de construcción de un editor de código usando CodeMirror en React. Todo mientras compartimos algunas de las sutilezas que nuestro equipo aprendió sobre el uso de esta biblioteca y algunos problemas que encontramos.
¿Alguna vez has tenido dificultades para diseñar y estructurar tus aplicaciones Node.js? Construir aplicaciones que estén bien organizadas, sean probables y extensibles no siempre es fácil. A menudo puede resultar ser mucho más complicado de lo que esperas. En este evento en vivo, Matteo te mostrará cómo construye aplicaciones Node.js desde cero. Aprenderás cómo aborda el diseño de aplicaciones y las filosofías que aplica para crear aplicaciones modulares, mantenibles y efectivas.
Este masterclass te enseñará los conceptos básicos de cómo escribir pruebas de extremo a extremo utilizando Cypress Test Runner. Cubriremos la escritura de pruebas, abarcando todas las características de la aplicación, estructurando las pruebas, interceptando solicitudes de red y configurando los datos del backend. Cualquier persona que conozca el lenguaje de programación JavaScript y tenga NPM instalado podrá seguir el masterclass.
Platformatic te permite desarrollar rápidamente APIs GraphQL y REST con un esfuerzo mínimo. La mejor parte es que también te permite aprovechar todo el potencial de Node.js y Fastify cuando lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y complementos adicionales. En el masterclass, cubriremos tanto nuestros módulos de código abierto como nuestra oferta en la nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/). En este masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la nube de Platformatic.
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
WebAssembly enables optimizing JavaScript performance for different environments by deploying the JavaScript engine as a portable WebAssembly module. By making JavaScript on WebAssembly fast, instances can be created for each request, reducing latency and security risks. Initialization and runtime phases can be improved with tools like Wiser and snapshotting, resulting in faster startup times. Optimizing JavaScript performance in WebAssembly can be achieved through techniques like ahead-of-time compilation and inline caching. WebAssembly usage is growing outside the web, offering benefits like isolation and portability. Build sizes and snapshotting in WebAssembly depend on the application, and more information can be found on the Mozilla Hacks website and Bike Reliance site.
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.
In the last 10 years, Webpack has shaped the way we develop web applications by introducing code splitting, co-locating style sheets and assets with JavaScript modules, and enabling bundling for server-side processing. Webpack's flexibility and large plugin system have also contributed to innovation in the ecosystem. The initial configuration for Webpack can be overwhelming, but it is necessary due to the complexity of modern web applications. In larger scale applications, there are performance problems in Webpack due to issues with garbage collection, leveraging multiple CPUs, and architectural limitations. Fixing problems in Webpack has trade-offs, but a rewrite could optimize architecture and fix performance issues.
Comments