Video Summary and Transcription
Esta charla introduce el concepto de asegurar una API de Node.js utilizando un token de identidad descentralizado. El token se codifica como una cadena Base64 y consta de una prueba y una afirmación. La API está construida utilizando Express y protegida utilizando Magic. La aplicación tiene múltiples rutas, siendo la ruta secreta protegida por middleware. Se verifica el encabezado de autorización y se valida el token DID para acceder a las rutas protegidas.
1. Introducción a los Tokens de Identidad Descentralizados
Bienvenidos a esta charla sobre cómo asegurar una API de Node.js utilizando un token de identidad descentralizado. Aprenderemos qué es un token de identidad descentralizado, construiremos una API de Node utilizando Express y la protegeremos utilizando Magic. El token DID está codificado como una cadena Base64, una tupla de cadena JSON, aprovechando el algoritmo de la cadena de bloques de Ethereum y la criptografía de curva elíptica. Consiste en una prueba y una afirmación, siendo la afirmación la representación de los datos del usuario y la prueba firmada utilizando el algoritmo de firma personal de Ethereum. La forma más sencilla de comenzar con Magic es utilizando el SDK del cliente y llamando a la función de inicio de sesión con correo electrónico. Construyamos la API ejecutando npx makemagic seleccionando la plantilla de API de Express.
Bienvenidos a esta charla, donde aprenderemos más sobre cómo asegurar una API de Node.js utilizando un token de identidad descentralizado. Mi nombre es Mohamed Shabaz Alam, un defensor del desarrollo en Magic. En esta charla, aprenderemos qué es un token de identidad descentralizado, construiremos una API de Node utilizando Express y luego protegeremos esa API utilizando Magic. Entonces, ¿qué es un token DID? El token DID creado por Magic se adapta a tecnologías anteriores como JWT y el protocolo W3 DID. Está codificado como una cadena Base64, una tupla de cadena JSON que representa una prueba y una afirmación. Utiliza el algoritmo de la cadena de bloques de Ethereum y la criptografía de curva elíptica para generar una prueba verificable de autenticación y autorización. Estas pruebas son firmas digitales livianas que se comparten entre el cliente y el servidor para gestionar permisos, proteger rutas y recursos y autenticar usuarios.
Un DID típico consta de una prueba y una afirmación. La afirmación es los datos sin firmar que representan los datos del usuario. Y la prueba se realiza firmando eso utilizando el algoritmo de firma personal de Ethereum y utilizando la clave privada del usuario. Y luego obtienes el token DID llamando a B2A y utilizando una cadena de tupla JSON en base64.
Así es como se ve un token DID básico, que consta de emisión, vencimiento, sujeto, DID, tiempo de no antes y todo tipo de información aquí. La emisión es donde usamos la clave pública del usuario en la afirmación. Y cuando firmamos utilizando la función de firma, utilizamos la clave privada del usuario, que nuevamente, no miramos esos datos. Y luego codificamos el token DID para que se pueda transportar fácilmente a través de HTTP. Y la forma más sencilla de comenzar con Magic es utilizando el SDK del cliente de Magic. El SDK del cliente es donde obtienes el token DID. Entonces usas eso, pasas la clave de la API, que son dos tipos de clave de API. Una es la clave publicable y la otra es la clave secreta. La clave secreta se utiliza para el servidor. La clave publicable es para aplicaciones cliente. Llamas a una función llamada inicio de sesión con correo electrónico y luego pasas el correo electrónico del usuario. De forma predeterminada, obtendrás un token DID con una duración de 15 minutos, pero si quieres más que eso, puedes llamar a la función getIDtoken para obtenerlo. El flujo de autenticación es que un usuario llama al cliente autenticándose, obtienen el token DID y lo intercambian en la cabecera de autorización con el servidor, y el servidor valida ese token y luego permite la ruta protegida. Así que construyamos la API. La forma más sencilla de comenzar es ejecutar npx makemagic seleccionando la plantilla de API de Express. Ya he hecho esto, y verán que ejecuté una aplicación. Solo mostraré cómo se ve. Por ejemplo, npx makemagic template express API, te pedirá el nombre de tu aplicación, prueba API, y luego puedes usar la clave secreta publicable. Por ejemplo, puedes obtener esta clave secreta iniciando sesión en Magic y registrándote.
2. Securing the Application
Si no puedes ver esto, selecciona tu aplicación y revela la clave secreta. Una vez hecho esto, tu aplicación estará abierta en el puerto 8080 con múltiples rutas. La ruta básica está desprotegida, mientras que la ruta secreta está protegida por un middleware. La función isAuthorized verifica el encabezado de autorización, extrae el token DID y lo valida. Puedes obtener el token DID ejecutando NPX make magic y seleccionando la siguiente plantilla. Pasa la clave secreta para acceder a las rutas protegidas. Siéntete libre de explorar la documentación en magic y comunicarte si tienes alguna pregunta o problema.
Es gratis hacer eso y copiar la clave secreta de la carpeta de la aplicación. Si no puedes ver esto, selecciona esto y selecciona tu aplicación, y luego revela la clave secreta. Solo pégala aquí y luego selecciona tu aplicación, eso es todo. Y una vez que eso esté hecho, estará abierto y se verá algo así. Tu aplicación se está ejecutando en el puerto 8080, por lo que esto te da múltiples rutas. La ruta normal es la ruta básica, que te da una ruta desprotegida. Otra es la ruta secreta, que está protegida por un middleware que hemos escrito, que siempre puedes ver en el ejemplo. Ya he creado una aplicación llamada jsnationnav. Solo mira esta función, verás que no está sucediendo mucho, pero esta es una API muy básica, donde estamos usando la clave secreta de magic de la variable de entorno, también estamos usando una variable de puerto, y luego estamos instanciando magic aquí. Luego, esta es una lista de tareas por hacer, que simula la base de datos, pero obviamente necesitarías una base de datos adecuada. Esta es una ruta desprotegida, esta es una ruta protegida, la proteges llamando a isAuthorized. Mostraré cómo se ve la función isAuthorized. Entonces, este es el middleware y estas tareas por hacer son como rutas de API no protegidas, es una solicitud GET y obtiene un id, como obtener uno, como la primera tarea por hacer o la segunda tarea por hacer. Estas no están protegidas, por lo que otra forma de usar la ruta protegida o el middleware es usar app.use() y pasar las funciones de autorización, lo que hemos llamado isAuthorized, y luego todas estas rutas están protegidas por defecto porque las estamos usando aquí. Entonces, si queremos usarlo de la manera anterior, tendríamos que pasarlo a todas las funciones aquí. Veamos cómo se ve isAuthorized, acepta solicitud, respuesta y siguiente. Verificamos primero si el encabezado de autorización no está definido y luego extraemos el token DID del encabezado y luego llamamos a magic.token.validate(), que muestra si hay un error, dirán que hay un error y, de lo contrario, continuaremos llamando a siguiente y viceversa. Puedes encontrar más detalles cuando ejecutes NPX make magic y esta plantilla. Entonces, la forma más fácil de ver esto es obtener un token DID. La forma más fácil de obtener el token DID nuevamente es ejecutar NPX make magic y usar la plantilla next. Ejecutarán tu servidor y una vez que inicies sesión te dará un token DID.
Así que una vez que hagas eso, solo pasa la clave secreta aquí y he pegado esto y verás que esto está solicitando que estamos permitidos y si no lo estamos, diremos que esto ha fallado y tiene actualizaciones, put, delete y todo tipo de verbos HTTP restful. Así que puedes encontrar más información sobre eso. Entonces, la forma más fácil de ejecutarlo es obtener el token DID desde el frontend ejecutando este comando en particular: npx make magic y seleccionando una plantilla next. Por defecto, next no te dará mucha ayuda en términos de token DID. Entonces, lo que he hecho es que he tomado un DID aquí y luego llamando a la función get DID token y luego mostrando el token DID. Siéntete libre de explorar la documentación en magic y sí, estos son los recursos que puedes encontrar y aprender más sobre ellos y si tienes algún problema, simplemente ejecuta npx mdspzalm, mi nombre de usuario y luego habrá un montón de información. No dudes en comunicarte conmigo si tienes alguna pregunta. Así que sí, gracias de nuevo a JS Nation por tenerme y por una maravillosa conferencia. ¡Adiós!
Comments