Saltar al contenido principal
Versión: Siguiente

Autenticación Stellar para Cuentas de Contrato (SEP-45)

Descripción general

Las aplicaciones de billeteras inteligentes Stellar crean sesiones autenticadas con anchors de Stellar demostrando que ellos, 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 firmada por los firmantes de la cuenta del contrato.
  • La billetera es responsable de simular la transacción y asegurarse de 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 la 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 con 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 ejecutar el tuyo propio. Una lista de proveedores públicos se encuentra aquí. El siguiente ejemplo usa el RPC de 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 puede ser el mismo que el home_domain, un subdominio (p. ej., auth.example.com) o un dominio completamente diferente. Se verifica en el desafío para asegurar que el cliente está hablando con el endpoint correcto que descubrió mediante el home_domain.

SEP_45_WEB_AUTH_CONTRACT_ID es el 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 home que pueden autenticarse con el anchor. Los dominios home 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 cuál clave pública (SIGNING_KEY) usará el servidor para los desafíos.

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

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

Modificar un archivo Stellar Info

El archivo stellar.toml creado anteriormente debe actualizarse para incluir el nuevo endpoint de autenticación y el 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 usarán para autenticarse con el anchor.

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