Saltar al contenido principal
Versión: Siguiente

Autenticación Stellar para cuentas de contrato

Descripción general

Las aplicaciones de billeteras inteligentes Stellar crean sesiones autenticadas con anchors de Stellar demostrando que ellas, o sus usuarios, tienen suficiente control sobre una cuenta de contrato. Una vez autenticada, la aplicación de billetera inteligente utiliza un token de sesión proporcionado por el anchor en solicitudes posteriores a los servicios estandarizados del anchor.

Esto es similar a cómo funciona SEP-10, pero con algunas diferencias:

  • El desafío es una lista de entradas de autorización Soroban para una invocación de un contrato SEP-45 que debe ser firmado por los firmantes de la cuenta de contrato.
  • La billetera es responsable de simular la transacción y asegurar que no sea maliciosa.
  • El anchor verifica las entradas de autorización firmadas simulando la transacción en la red.

Se proporciona una implementación del contrato SEP-45 en el repositorio Anchor Platform. Una instancia de este contrato está desplegada en CD3LA6RKF5D2FN2R2L57MWXLBRSEWWENE74YBEFZSSGNJRJGICFGQXMX en testnet.

Habilitar autenticación Stellar para cuentas de contrato

Anchor Platform admite esta forma de autenticación con una configuración mínima por parte del negocio.

Conectar a Stellar RPC

SEP-45 requiere integración con Stellar RPC para simular transacciones. Anchor Platform puede conectarse al servidor Stellar RPC que elijas.

Puedes usar un proveedor público de Stellar RPC, o puedes ejecutar el tuyo propio. Se puede encontrar una lista de proveedores públicos aquí. El siguiente ejemplo usa el RPC testnet de SDF.

# dev.env
STELLAR_NETWORK_RPC_URL=https://soroban-testnet.stellar.org

Habilitar SEP-45

Para habilitar SEP-45, configura las siguientes variables de entorno en tu archivo dev.env.

# dev.env
SEP_45_ENABLED=true
SEP_45_WEB_AUTH_DOMAIN=localhost:8080
SEP_45_WEB_AUTH_CONTRACT_ID="CD3LA6RKF5D2FN2R2L57MWXLBRSEWWENE74YBEFZSSGNJRJGICFGQXMX"
SEP_45_HOME_DOMAINS=localhost:8080
SEP_45_JWT_TIMEOUT=900
SEP_45_AUTH_TIMEOUT=86400

SEP_45_ENABLED habilita SEP-45.

SEP_45_WEB_AUTH_DOMAIN es el dominio donde se ejecuta el servicio de autenticación (WEB_AUTH_ENDPOINT o WEB_AUTH_FOR_CONTRACTS_ENDPOINT). Este podría ser el mismo que el home_domain, un subdominio (por ejemplo, auth.example.com) o un dominio completamente diferente. Se verifica en el desafío para asegurar que el cliente se está comunicando con el endpoint correcto que descubrió a través del home_domain.

SEP_45_WEB_AUTH_CONTRACT_ID es la ID del contrato del SEP-45. Este es el contrato que se usará para construir el desafío.

SEP_45_HOME_DOMAINS es una lista separada por comas de dominios principales que están autorizados a autenticarse con el anchor. Los dominios principales son los dominios que alojan el archivo stellar.toml. Este archivo indica a los clientes dónde encontrar el endpoint de autenticación (WEB_AUTH_FOR_CONTRACTS_ENDPOINT) y qué clave pública (SIGNING_KEY) usará el servidor para los desafíos.

SEP_45_JWT_TIMEOUT es el tiempo en segundos durante el cual el token JWT es válido. El valor predeterminado es 900 segundos (15 minutos).

SEP_45_AUTH_TIMEOUT es el tiempo en segundos durante el cual el desafío de autenticación es válido. El valor predeterminado es 86400 segundos (24 horas).

Modificar un archivo de información Stellar

El archivo stellar.toml creado anteriormente debe actualizarse para incluir el nuevo endpoint de autenticación y la ID del contrato.

# dev.stellar.toml
WEB_AUTH_FOR_CONTRACTS_ENDPOINT = "http://localhost:8080/sep45/auth"
WEB_AUTH_CONTRACT_ID = "CD3LA6RKF5D2FN2R2L57MWXLBRSEWWENE74YBEFZSSGNJRJGICFGQXMX"

WEB_AUTH_FOR_CONTRACTS_ENDPOINT es la URL donde se ejecuta el servicio de autenticación. Esta es la URL que los clientes utilizarán para autenticarse con el anchor.

WEB_AUTH_CONTRACT_ID es la ID del contrato del SEP-45. Este es el contrato que se usará para construir el desafío.