Autorización y tokens de acceso en Open Payments con NAP
Clase 11 de 16 • Curso de Pagos Abiertos con Interledger
Resumen
Domina la autorización en Open Payments con claridad y confianza. Aquí verás cómo NAP conecta concesiones, tokens de acceso y firmas digitales para habilitar pagos seguros y controlados, desde pagos entrantes y cotizaciones hasta pagos salientes, con participación opcional del usuario y validación mediante claves asimétricas.
¿Qué es NAP y cómo autoriza en Open Payments?
NAP, protocolo de negociación y autorización de concesiones, otorga permisos a una aplicación cliente para acceder al API y operar en la cuenta de un usuario con seguridad. El cliente solicita una concesión al servidor de autorización especificando recursos y acciones, y al aprobarla, se emiten tokens de acceso que representan esos permisos.
- Concesión: define recursos (pago entrante, cotización, pago saliente) y acciones (crear, leer, actualizar).
- Tokens de acceso: emitidos por el servidor de autorización. Validados por el servidor de recursos.
- Múltiples concesiones: se pueden pedir en una sola solicitud. Habilita pagos recurrentes o con fechas futuras.
- Concesiones no interactivas: acceso automatizado entre servicios. El usuario final no participa.
- Concesiones interactivas: el proveedor de identidad valida al usuario, obtiene consentimiento y redirige al cliente. Este paso es la solicitud de continuación de concesión.
¿Qué recursos y acciones soporta NAP?
- Recursos: pago entrante, cotización, pago saliente.
- Acciones: crear, leer, actualizar.
- Control de frecuencia: una sola vez, repetido, mensual o semanal.
¿Cómo fluye una concesión con tokens de acceso?
Cuando el servidor de autorización aprueba, devuelve uno o más tokens de acceso. El servidor de recursos valida esos tokens y solo si son válidos permite interactuar con los recursos protegidos. Así, el cliente puede ejecutar operaciones autorizadas en el API de Open Payments.
¿Cuál es la secuencia típica para un pago?
- Solicitar concesión de pago entrante al servidor del receptor. Crear el recurso de pago entrante.
- Solicitar concesión de cotización al servidor del emisor. Crear la cotización.
- Solicitar concesión interactiva de pago saliente. Crear el recurso de pago saliente.
¿Qué elementos prácticos debes configurar?
- walletAddress: dirección pública de la billetera para operar y ver depósitos y balance.
- paymentPointer: creado desde la billetera para requerir dinero y revisar el balance total.
- Claves de desarrollador: asociadas a direcciones de moneda. Verifican identidades y solicitudes.
¿Qué seguridad aplican las firmas digitales y claves?
La identidad del cliente se valida con el proveedor de identidad. La integridad se garantiza con firmas digitales y secretos compartidos. Cada cliente se identifica con una clave única registrada; los servidores consultan la clave pública en Wallet mediante JSON para verificar que el cliente es quien dice ser.
- Claves asimétricas: una pública y una privada. La privada nunca se comparte.
- Firma digital: los datos se convierten en un hash. Ese hash se cifra con la clave privada para generar la firma. El servidor verifica con la clave pública.
- Verificación: el servidor hashea los datos recibidos, descifra la firma con la clave pública y compara hashes. Si coinciden, la firma es válida.
- Solicitud HTTP: encabezado signature input con el ID de la clave. Encabezado signature generate con la clave privada. En el body, la dirección de billetera.
- Identificación consistente al AS: incluir signature input (con keyId) y signature (generada desde signature input con el algoritmo EPSA), más el body con walletAddress.
¿Cómo inicializar un cliente autenticado?
Usa una función como createAuthenticatedClient con los parámetros clave. Con eso obtienes un cliente listo para crear pagos entrantes, cotizaciones y pagos salientes.
const client = createAuthenticatedClient({
walletAddress, // dirección pública de la billetera
privateKey, // clave privada del cliente para firmar
keyId // identificador registrado de la clave
});
¿Cómo se relacionan Open Payments, ILP e Interledger?
Open Payments decide si se realiza la transferencia. ILP envía las instrucciones de cómo ejecutarla y los proveedores financieros acuerdan cómo mover el dinero. Con Interledger se logra estandarización, bajos costos y estabilidad, habilitando casos como microtransacciones.
¿Te gustaría ver un ejemplo de concesión para pagos recurrentes o con fecha futura, o prefieres practicar la firma digital paso a paso? Comparte tus dudas o escenarios y los exploramos juntos.