Guías & Documentación thirdweb

Documentación thirdweb: Infraestructura I

En esta guía, recorreremos el proceso de añadir Auth a una aplicación sencilla

Auth

Auth es un SDK para desarrolladores que te permite integrar autenticación y autorización nativa web3 sin contraseña en tus aplicaciones.

Permite a los usuarios iniciar sesión con sus carteras, lo que permite a las aplicaciones acceder a datos enriquecidos a nivel de blockchain e interactuar con sus usuarios on-chain.

Con Auth, los desarrolladores pueden crear aplicaciones con autenticación web3-first, segura y auto custodiada.

Biblioteca de código abierto

La biblioteca auth es de código abierto. Puede ver el código fuente y contribuir a él en GitHub.

https://github.com/thirdweb-dev/js/tree/main/packages/auth

Instalación

npm

npm install @thirdweb-dev/auth

Yarn

yarn add @thirdweb-dev/auth

pnpm

pnpm add @thirdweb-dev/auth

Aplicaciones

Auth desbloquea una variedad de nuevas posibilidades al permitir la conexión de flujos web2 y web3. Añade la autenticación basada en monedero a las aplicaciones existentes o crea experiencias web3 que utilicen la arquitectura del lado del servidor.

A continuación se indican algunas de las aplicaciones que permite Auth:

  • Autenticación sin contraseña: Permite que los usuarios inicien sesión sin problemas en sus aplicaciones sólo con sus monederos.

  • Verificación de identidad: Verifica de forma segura las identidades en la cadena de los usuarios existentes.

  • Recursos bloqueados: Bloquea el acceso a recursos protegidos basándose en criterios de la cadena, como la propiedad de NFT.

  • Interacción en la cadena: Interactúa con los usuarios en la cadena, por ejemplo enviándoles NFT de recompensa.

  • Pagos on-chain: Permite a los usuarios pagar por tus servicios con activos en la cadena como ETH o tokens ERC20.

  • Acceso a datos on-chain: Acceda a datos enriquecidos en la cadena asociados a tus usuarios.

Frameworks

Auth se integra con una variedad de marcos de desarrollo, tanto del lado del servidor como del lado del cliente. Siempre estamos añadiendo soporte para más frameworks, así que si no ves el tuyo, háznoslo saber, ¡y podemos explorar la posibilidad de añadir soporte!

Frameworks de servidor

Frameworks de cliente

Integraciones

Primeros pasos con Auth

En esta guía, recorreremos el proceso de agregar Auth a una aplicación simple de pila completa para habilitar la autenticación basada en billetera (en este caso, permitiremos que las billeteras EVM se autentiquen, pero configurarlo para billeteras Solana también es una opción).

En concreto, vamos a integrar Auth con una aplicación Next.js, que tiene su propia API integrada, así como un frontend React. Con esta configuración podemos añadir puntos finales de la API de Auth a nuestra aplicación para gestionar la autenticación y autorización, y luego podemos construir un frontend simple para iniciar sesión, mostrar el usuario, y cerrar la sesión.

Si quieres ver el código completo de esta guía, usaremos el siguiente repositorio de ejemplos:

Instalación y configuración

Podemos empezar clonando el repositorio de ejemplo utilizando el comando npx thirdweb create:

npx thirdweb create --template thirdweb-auth-next

Esto utilizará el CLI de Thirdweb para clonar el repositorio de ejemplo e instalar las dependencias necesarias para nosotros de forma automática.

Una vez clonado el repositorio, tendremos que configurarlo añadiendo algunas variables de entorno. Crea un nuevo archivo .env.local en el directorio raíz del repositorio, y copia el formato del archivo .env.example. Necesitaremos añadir una clave privada y un dominio auth para nuestra API Auth.

CONSEJO

Si no quieres utilizar tu propia clave privada para este ejemplo, puede crear una nueva fácilmente ejecutando el siguiente fragmento:

const ethers = require("ethers");
console.log(ethers.Wallet.createRandom().privateKey);

.env.local

NEXT_PUBLIC_THIRDWEB_AUTH_DOMAIN=example.com # tu dominio aquí
THIRDWEB_AUTH_PRIVATE_KEY=... # tu clave privada aquí

Backend

Primero echemos un vistazo al código backend de nuestra aplicación. Si miras en la carpeta pages/api, verás dos archivos: pages/api/secret.ts y pages/api/auth/[...thirdweb].ts.

pages/api/auth/[...thirdweb].ts es donde se encuentra el núcleo de nuestra configuración de la API de autenticación, así que podemos verlo primero. En el proyecto de ejemplo, hay un poco de configuración extra que puedes explorar más adelante y que te muestra cómo utilizar algunas de las características más avanzadas de Auth, pero por ahora vamos a echar un vistazo a cómo es la configuración básica de este archivo (ten en cuenta que este fragmento de código está simplificado para excluir la configuración avanzada):

page/api/auth/[...thirdweb].ts

import { ThirdwebAuth } from "@thirdweb-dev/auth/next";
import { PrivateKeyWallet } from "@thirdweb-dev/auth/evm";

// Aquí configuramos thirdweb auth con un dominio y un monedero
export const { ThirdwebAuthHandler, getUser } = ThirdwebAuth({
  domain: process.env.NEXT_PUBLIC_THIRDWEB_AUTH_DOMAIN || "",
  wallet: new PrivateKeyWallet(process.env.THIRDWEB_AUTH_PRIVATE_KEY || ""),
});

// Utiliza ThirdwebAuthHandler como export por defecto para gestionar todas las solicitudes a /api/auth/*.
export default ThirdwebAuthHandler();

Este archivo es una ruta Next.js catch all, que capturará cualquier petición a los endpoints /api/auth/*. La función ThirdwebAuth toma la configuración de tu API Auth. Tiene muchos parámetros opcionales que no se usan aquí (puedes leer más sobre ellos en la página Auth Next.js), pero los dos parámetros obligatorios son domain y wallet.

domain se utiliza para prevenir ataques de phishing a tus usuarios - puedes aprender más sobre esto en la sección cómo funciona auth, pero lo importante es que este dominio coincida con el dominio que configuraremos más tarde en el frontend.

wallet te permite configurar el monedero de administración que emitirá y verificará los JWTs para tus usuarios. En este ejemplo, estamos usando un monedero simple de clave privada, pero también puedes usar monederos más avanzados, como se indica en la sección de configuración de monederos.

La función ThirdwebAuth nos devuelve un ThirdwebAuthHandler, que configura automáticamente varios puntos finales de autenticación para que los utilicemos para gestionar los inicios de sesión, la autenticación y los cierres de sesión (como se explica en la descripción general de la API de autenticación). También devuelve una función getUser, que podemos utilizar en otros puntos finales para autenticar al usuario que envió una solicitud.

Esto es exactamente lo que usaremos en el endpoint /api/secret, que es un endpoint simple que devuelve un mensaje secreto si el usuario está autenticado. Podemos ver que usamos la función getUser para obtener el usuario de la petición, y luego devolver el mensaje secreto si el usuario está autenticado:

pages/api/secret.ts

import { getUser } from "./auth/[...thirdweb]";
import { NextApiRequest, NextApiResponse } from "next";

const handler = async (req: NextApiRequest, res: NextApiResponse) => {
  // Obtener el usuario de la solicitud
  const user = await getUser(req);

  // Comprobar si el usuario está autentificado
  if (!user) {
    return res.status(401).json({
      message: "Not authorized.",
    });
  }

  // Devolver el mensaje secreto al usuario autenticado
  return res.status(200).json({
    message: `This is a secret for ${user.address}.`,
  });
};

export default handler;

Frontend

Ahora podemos echar un vistazo al frontend que interactúa con estos endpoints. El frontend también tiene sólo dos archivos importantes.

Primero, veamos el archivo pages/_app.tsx. Aquí queremos configurar el SDK @thirdweb-dev/react para utilizarlo con el paquete Auth. Para ello, tenemos que envolver nuestra aplicación con el componente ThirdwebProvider y añadir authConfig a la misma para que nuestro frontend sepa que tenemos una configuración Auth backend.

pages/_app.tsx

function MyApp() {
  return (
    <ThirdwebProvider
      activeChain="ethereum"
      authConfig={{
        // Este dominio debe coincidir con el backend
        domain: process.env.NEXT_PUBLIC_THIRDWEB_AUTH_DOMAIN || "",
        // Pasa la URL de los puntos finales de autenticación
        authUrl: "/api/auth",
      }}
    >
      <Component {...pageProps} />
    </ThirdwebProvider>
  );
}

Aquí, nos aseguramos de que el domain utilizado para el anti-phishing coincide con el que configuramos en nuestro backend, y también establecemos el authUrl a la URL donde configuramos nuestros puntos finales de la API Auth.

Ahora, el último paso es construir nuestro Auth UI real que nos permite conectar nuestra cartera, iniciar y cerrar sesión, lo que hacemos en el archivo pages/index.tsx:

pages/index.tsx

const Home: NextPage = () => {
  const address = useAddress();
  const connect = useMetamask();
  const { login } = useLogin();
  const { logout } = useLogout();
  const { user, isLoggedIn } = useUser();
  const [secret, setSecret] = useState();

  const getSecret = async () => {
    const res = await fetch("/api/secret");
    const data = await res.json();
    setSecret(data.message);
  };

  return (
    <div>
      {isLoggedIn ? (
        <button onClick={() => logout()}>Logout</button>
      ) : address ? (
        <button onClick={() => login()}>Login</button>
      ) : (
        <button onClick={() => connect()}>Connect</button>
      )}
      <button onClick={getSecret}>Get Secret</button>

      <pre>Connected Wallet: {address}</pre>
      <pre>User: {JSON.stringify(user, undefined, 2) || "N/A"}</pre>
      <pre>Secret: {secret || "N/A"}</pre>
    </div>
  );
};

Parece que hay varias cosas en marcha, así que vamos a dividirlo en unos pocos componentes simples:

  1. En primer lugar, añadimos la posibilidad de que los usuarios conecten sus carteras con MetaMask, e inicien sesión en nuestra aplicación utilizando los hooks useMetaMask y useLogin del paquete @thirdweb-dev/react. Usamos el hook useAddress para comprobar si el usuario está actualmente conectado con su monedero obteniendo su dirección de monedero conectado, y mostramos la dirección del monedero conectado.

  2. A continuación, usamos el hook useUser para comprobar si el usuario ha iniciado sesión en nuestro backend, y mostramos la dirección del usuario en nuestra página. También usamos el hook useLogout para que el usuario cierre la sesión en nuestro backend.

  3. Por último, utilizamos la función getSecret para realizar una petición autenticada a nuestro endpoint /api/secret, y mostramos la respuesta de la API en nuestra página.

Ejecución de la App

Ahora que hemos revisado todo el código relevante, podemos ejecutar nuestra aplicación y verla en acción, ejecutando el siguiente comando:

npm

npm run dev

Yarn

yarn dev

pnpm

pnpm run dev

Si ejecutas la aplicación y navegas a localhost:3000, o donde sea que la aplicación se esté ejecutando para ti localmente, deberías ver un simple botón de ConnectWallet. Si haces clic en él y conectas tu MetaMask, verás una pantalla como esta:

getting-started-1

Así que puedes ver que hemos conectado nuestro monedero pero no hay ningún usuario conectado. Si intentas obtener el Secret, verás que aún no estás autorizado para acceder al backend:

getting-started-2

Sin embargo, si hacemos clic en iniciar sesión y firmamos el mensaje que aparece, podremos iniciar sesión en el backend. Ahora, si hacemos clic en el botón Get Secret, podemos ver que estamos autorizados a acceder al backend:

getting-started-3

Por último, si cierras la sesión y vuelves a obtener el secret, deberías ver que ya no estás conectado.

getting-started-2

¡Llegados a este punto, hemos implementado un sistema de autenticación totalmente funcional utilizando Auth! Podemos iniciar sesión, acceder a puntos finales protegidos y cerrar sesión, al igual que un flujo de autenticación tradicional, ¡pero utilizando sólo nuestra cartera!

Guía de actualización

CONSEJO

Esta guía le ayudará a actualizar de Auth v2 a Auth v3, para personas que estaban usando @thirdweb-dev/auth@^2. Si es la primera vez que utiliza Auth, sigue los pasos previos en esta guía.

Hay algunos cambios importantes de la actualización de Auth v2 a v3. En las siguientes secciones, veremos cómo realizar las actualizaciones necesarias en el código para poder utilizar Auth v3.

React

Para actualizar, primero podemos eliminar la propiedad loginRedirect de authConfig en nuestro componente ThirdwebProvider en el nivel superior de la aplicación, ya que Auth ya no utiliza redirecciones en el inicio o cierre de sesión (de hecho, Auth nunca redirigirá a tus usuarios ahora):

import { ThirdwebProvider } from "@thirdweb-dev/react";

export default function MyApp({ Component, pageProps }) {
  return (
    <ThirdwebProvider
      // Required configuration for the provider, but doesn't affect Auth.
      activeChain="ethereum"
      authConfig={{
        domain: "example.com",
        authUrl: "/api/auth",
        // We no longer need the loginRedirect option
      }}
    >
      <Component {...pageProps} />
    </ThirdwebProvider>
  );
}

Si estás utilizando el componente de botón ConnectWallet para gestionar Auth, y no estás utilizando los hooks useLogin y useLogout, entonces este es el único cambio que tendrá que hacer. Sin embargo, si utiliza estos hooks, deberá realizar un cambio más. En Auth v2, estos hooks solían devolver sus respectivas funciones, pero en Auth v3, devuelven objetos que contienen funciones así como estados isLoading. Así que puede utilizar los nuevos ganchos desestructurándolos de la siguiente manera:

import { useLogin, useLogout } from "@thirdweb-dev/react";

export default function Component() {
  const { login, isLoading: loginIsLoading } = useLogin();
  const { logout, isLoading: logoutIsLoading } = useLogout();

  return (
    <div>
      <button onClick={login} disabled={loginIsLoading}>
        Login
      </button>
      <button onClick={logout} disabled={logoutIsLoading}>
        Logout
      </button>
    </div>
  );
}

Para una visión más completa de cómo utilizar Auth con React, consulta la guía completa Auth y React.

Next

Si utilizas Next.js como backend de Auth, también tendrás que actualizar la configuración de tu backend de Auth. El principal cambio es que Auth ya no acepta una privateKey en su configuración, y en su lugar acepta la propiedad de cartera más genérica y flexible del tipo GenericAuthWallet. Así es como puedes actualizar tu archivo pages/api/auth/[...thirdweb].ts:

import { ThirdwebAuth } from "@thirdweb-dev/auth/next";
import { PrivateKeyWallet } from "@thirdweb-dev/auth/evm";

export const { ThirdwebAuthHandler, getUser } = ThirdwebAuth({
  domain: "example.com",
  wallet: new PrivateKeyWallet(process.env.THIRDWEB_AUTH_PRIVATE_KEY || ""),
});

export default ThirdwebAuthHandler();

Este es el principal cambio que tendrás que hacer en la configuración de Auth de tu backend. Para obtener más información sobre cómo utilizar Auth con Next.js, consulta la guía completa sobre Auth y Next.

Express

Si está utilizando Express para tu backend Auth, también tendrás que actualizar la configuración de su backend Auth. Auth ya no acepta una privateKey en su configuración, y en su lugar acepta la propiedad de cartera más genérica y flexible del tipo GenericAuthWallet.

Además, la configuración de ThirdwebAuth ahora expone middleware y un enrutador para que los utilices con tus aplicaciones express para seguir un patrón más idiomático con express. Así es como puedes actualizar tu archivo pages/api/auth/[...thirdweb].ts:

import { ThirdwebAuth } from "@thirdweb-dev/auth/express";
import { PrivateKeyWallet } from "@thirdweb-dev/auth/evm";
import express from "express";

const PORT = 8000;
const app = express();

const { authRouter, authMiddleware, getUser } = ThirdwebAuth({
  domain: process.env.THIRDWEB_AUTH_DOMAIN || "",
  wallet: new PrivateKeyWallet(process.env.THIRDWEB_AUTH_PRIVATE_KEY || ""),
});

// Añade el router auth a nuestra aplicación para configurar los endpoints /auth/*.
app.use("/auth", authRouter);

// Añadir el middleware auth al resto de nuestra aplicación para permitir la autenticación de usuarios en otros puntos finales.
app.use(authMiddleware);

app.listen(PORT, () => {
  console.log(`Server listening on port ${PORT}`);
});

Con esta configuración, deberías estar listo para utilizar Auth y Express. Para obtener más información sobre cómo utilizar Auth con Express, consulta la guía completa sobre Auth y Express.

Cómo funciona Auth

En esta sección, cubriremos los fundamentos de cómo Auth habilita la autenticación y autorización nativa de web3. Empecemos repasando brevemente los conceptos básicos de autenticación y autorización.

Panorama general

¿Qué son la autenticación y la autorización?

La autenticación es el proceso de verificar la identidad de un usuario. Mientras tanto, la autorización es el proceso de verificar a qué tiene acceso un usuario específico y qué se le permite hacer.

Ser capaz de autenticar y autorizar usuarios es una parte crítica de cualquier aplicación web. Nos permite almacenar, manipular y acceder a datos específicos del usuario, y nos permite restringir el acceso a determinadas funciones en función de la identidad del usuario. Son capacidades esenciales para todas las aplicaciones, incluidas las aplicaciones web3.

¿Cómo funciona la autenticación?

Un método común de autenticación web2 implica el uso de JSON Web Tokens (JWTs) para enviar datos de autenticación entre clientes y servidores. Un flujo JWT estándar tiene el siguiente aspecto:

how-auth-works-1

Normalmente, el flujo se inicia cuando un usuario envía una solicitud para iniciar sesión en una aplicación. Esta solicitud debe contener algunos datos que demuestren al servidor que el usuario es quien dice ser, lo que llamaremos una prueba de identidad. Un ejemplo de prueba de identidad es que un usuario envíe al servidor un nombre de usuario y una contraseña.

A continuación, el servidor tiene que ser capaz de verificar esta prueba de identidad, tras lo cual puede identificar con éxito al usuario autenticado. Este proceso de verificación es lo que se conoce como autenticación. Sin embargo, sería ineficaz que los usuarios tuvieran que presentar una prueba de identidad cada vez que quisieran acceder a un recurso.

Para evitarlo, necesitamos una forma de que el servidor recuerde que un usuario ya se ha autenticado antes y, en consecuencia, recuerde la identidad de un usuario.

Esto es exactamente para lo que se utilizan los JWT. Cuando un servidor autentica con éxito a un usuario, puede emitir un JWT firmado al usuario. Este JWT contiene la identidad del usuario, que éste puede enviar al servidor en posteriores solicitudes de acceso a recursos.

Y lo que es más importante, dado que el JWT ha sido firmado por el servidor, éste puede verificar que ya ha autenticado previamente al usuario y acceder instantáneamente a su identidad sin tener que autenticarlo de nuevo.

Esta es la intuición básica detrás de cómo funcionan los flujos de autenticación JWT estándar. Auth también utiliza la autenticación JWT, pero con algunas diferencias clave que la hacen óptima para aplicaciones web3.

¿Qué hace que auth sea único?

Hay tres factores clave que diferencian a Auth y lo convierten en el flujo de autenticación web3 ideal:

  1. Auth utiliza la identidad web3

  2. Auth utiliza la prueba de identidad web3

  3. Auth utiliza la autoridad web3

Identidad

Toda aplicación necesita una forma de identificar a sus usuarios. En las aplicaciones web2 tradicionales, los usuarios suelen identificarse con un nombre de usuario o una dirección de correo electrónico únicos a los que se asocian todos los datos específicos de la aplicación.

Sin embargo, con este patrón, las identidades de usuario son siempre específicas de cada aplicación y, por tanto, sólo pueden asociarse a datos específicos de la aplicación y no son portables entre aplicaciones. Además, los usuarios tienen que crear una nueva identidad para cada nueva aplicación a la que quieran acceder. Tampoco hay una forma obvia de asociar la identidad de un usuario con sus identidades en la cadena para acceder a los datos de la cadena.

Auth resuelve todos estos problemas utilizando identidades web3. Con Auth, los usuarios se identifican con la dirección de su monedero, en lugar de con nombres de usuario o correos electrónicos. Esto significa que las identidades de los usuarios son universales en todas las aplicaciones y pueden asociarse con datos ricos a nivel de ecosistema. Además, las aplicaciones pueden utilizar las direcciones de monedero de sus usuarios para acceder a los datos de la cadena.

Prueba de identidad

Para iniciar sesión en una aplicación, los usuarios tienen que demostrar que son quienes dicen ser. En web2, esto significaba proporcionar la contraseña asociada a su nombre de usuario, para demostrar que eres el propietario del nombre de usuario. Esto obliga a los usuarios a recordar constantemente varias contraseñas en sus aplicaciones, lo que crea la necesidad de gestores de contraseñas, preguntas de seguridad y otros métodos complejos de gestión de contraseñas.

Sin embargo, en web3, los usuarios disponen de una forma mucho más sencilla de demostrar que son propietarios de una identidad concreta: las firmas digitales. Simplemente firmando un mensaje y enviándolo al servidor, los usuarios pueden demostrar que poseen una dirección de monedero específica de forma segura, sin contraseñas. El servidor puede entonces utilizar ese mensaje firmado para verificar la dirección del monedero del usuario.

Este es exactamente el patrón especificado en los estándares Sign-in with Ethereum (EIP4361) y Sign-in with Wallet (CAIP122), que son los que Auth implementa para permitir a los usuarios iniciar sesión de forma segura con sus monederos.

Así que con esta información, podemos actualizar el primer diagrama simplificado que hicimos anteriormente para aclarar cómo funciona Auth:

how-auth-works-2

Autoridad

Por último, como hemos mencionado antes, Auth utiliza JWTs para ayudar al servidor a "recordar" cuando un usuario ya se ha autenticado con éxito y ha demostrado su identidad anteriormente. Estos JWTs deben ser firmados por la autoridad del lado del servidor para que el servidor pueda verificar posteriormente que el JWT es válido.

En los flujos web2 estándar, esta emisión y verificación de tokens JWT suele estar a cargo de un servicio de terceros como auth0, que gestiona la clave privada de firma y los JWT para sus usuarios. Esto conlleva una dependencia de servicios externos de terceros para la autenticación de tus aplicaciones.

Sin embargo, Auth elimina esta dependencia de terceros utilizando web3 wallets en el backend para emitir y verificar los tokens JWT. En lugar de dejar que un servicio de terceros gestione y firme los JWT de sus usuarios, puede utilizar su propia cartera web3 como la autoridad que firma y verifica los JWT para su propia aplicación.

Esto permite un flujo de autenticación verdaderamente auto custodiado sin dependencias externas. Con esta información, ahora podemos visualizar el flujo Auth con mayor precisión:

how-auth-works-3

Conclusión

Mediante el uso de la identidad web3, la prueba de identidad y la autoridad, Auth permite un flujo de autenticación auto custodiado y nativo de web3 para sus aplicaciones que permite a los usuarios iniciar sesión con sus carteras.

Esto nos permite acceder de forma segura a la identidad en cadena de los usuarios en el lado del servidor, desbloqueando la conexión entre las experiencias web2 y web3.

Auth API

Así que ahora que entendemos cómo funciona Auth y los detalles de los bloques de construcción que lo hacen posible, vamos a poner toda esa información junta para entender lo específico de cómo funciona la API de Auth.

La API de Auth es un conjunto de puntos finales REST que implementan todos los complementos de servidor del SDK de autenticación. Permiten la autenticación y autorización basadas en monedero para cualquier API a la que se añadan. La Auth API ofrece tres puntos finales clave:

  • POST - /login

  • GET - /user

  • POST - /logout

Veamos con más detalle cómo es cada uno de estos puntos finales y cómo funcionan todos juntos.

Login

auth-api-1

El endpoint /login es el inicio de todo el flujo Auth. Es un punto final POST que espera recibir el payload de inicio de sesión con monedero del cliente. El propósito principal de este endpoint es comprobar que el usuario ha realizado una petición válida de inicio de sesión con monedero, y emitirle un JWT firmado si lo tiene para que se autentique en otros endpoints.

El endpoint /login realiza los siguientes pasos para lograr esto:

  1. Comprueba que la solicitud de inicio de sesión con monedero es válida, segura y no ha caducado, como se especifica en la sección de inicio de sesión con monedero.

  2. Generar un JWT firmado para que el usuario se autentique en otros puntos finales, como se especifica en la sección JWT.

  3. Devuelve el JWT firmado al cliente tanto en la respuesta como en las cookies, para compatibilidad entre clientes con y sin navegador.

User

auth-api-2

El punto final /user es un punto final GET que permite al cliente comprobar periódicamente si el usuario sigue conectado y obtener cualquier dato de usuario asociado que sea relevante para el cliente (como datos de perfil, por ejemplo).

Esto se puede lograr siguiendo los siguientes pasos:

  1. Comprobar que el usuario ha enviado un JWT válido en las cookies o cabeceras de la petición, como se especifica en la sección JWT.

  2. Si el usuario no ha enviado un JWT válido, devolver null.

  3. Rellenar cualquier dato de sesión almacenado en el JWT en el objeto de usuario y cualquier dato externo asociado al usuario en el objeto de usuario (como datos de una base de datos).

  4. Devuelve el objeto de usuario al cliente

Logout

auth-api-3

El endpoint /logout es el más simple de todos. Su objetivo es simplemente invalidar el JWT del usuario y cerrar su sesión en la aplicación. Esto se consigue borrando cualquier cookie del cliente con el JWT, y opcionalmente invalidando el JWT si se utiliza una base de datos.

Endpoints protegidos

auth-api-4

Por último, podemos echar un vistazo a cómo Auth se puede utilizar para proteger puntos finales adicionales, que es una de sus funciones más importantes, ya que esto comprende su función de autorización.

Autorizar al usuario en un endpoint implica el siguiente proceso simple:

  1. Obtener la identidad del usuario autenticado mediante un método similar al del endpoint /user (es decir, leyéndola del JWT, si hay alguno presente).

  2. Conceder permiso al usuario basándose en su identidad

En todos los plugins de autenticación, esto se gestiona mediante una sencilla función de ayuda que puedes añadir a tus endpoints para no tener que preocuparte de los detalles del proceso.

Sign-in with Wallet

JSON Web Tokens

Configuración de Wallet

Auth hace uso de un monedero del lado del servidor para firmar y verificar JWTs, como se explica en la sección cómo funciona auth. Puedes configurar este monedero usando una variedad de opciones de gestión de monederos, dándote la libertad de elegir la configuración más conveniente y segura para tu proyecto.


Recursos adicionales


Suscríbete para recibir las guías, tutoriales y noticias de @thirdweb en español


Si tienes alguna pregunta, únete a los más de 36.000 creadores de nuestra comunidad de Discord, o ponte en contacto directamente con el equipo para obtener más información sobre cómo empezar con thirdweb.

Y si quieres empezar a construir aplicaciones web3, empieza con las herramientas web3 y SDKs de thirdweb - ¡son gratis!

Loading...
highlight
Collect this post to permanently own it.
thirdweb ES logo
Subscribe to thirdweb ES and never miss a post.
#thirdweb#thirdweb_es#documentacion-thirdweb
  • Loading comments...