La autenticación y autorización son problemas serios. A menudo dedicamos mucho tiempo a crear APIs poderosas pero pasamos por alto las medidas de seguridad adecuadas. Vamos a resolverlo con Magic utilizando una solución de identidad basada en claves sobre el estándar DID, donde las identidades de los usuarios son soberanas y se aprovechan de los pares de claves públicas y privadas de la cadena de bloques. En esta charla, veremos las formas adecuadas de asegurar nuestras APIs de Node.js con Tokens de Identidad Descentralizados. Pasaremos desde aprender qué son los estándares de Identidad Descentralizada, cómo las identidades de los usuarios son soberanas y se aprovechan de los pares de claves públicas y privadas de la cadena de bloques, por qué son el futuro de la seguridad de las APIs, y para poner en práctica la teoría construiremos una implementación real utilizando Node.js donde mostraré las mejores prácticas comunes.
Asegurando APIs de Node.js con Tokens de Identidad Descentralizados
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.