Configura la autorización con Permit.io
Permit.io es una plataforma de autorización que proporciona control de acceso granular para aplicaciones. Puedes usar Logto junto con Permit.io para gestionar la autenticación y la autorización de usuarios.
Para comprender las diferencias clave entre autenticación y autorización, consulta Autenticación vs. autorización.
Esta guía te mostrará cómo conectar Logto con Permit.io para implementar la autorización en tu aplicación.
Requisitos previos
- Una cuenta de Logto Cloud o un Logto autoalojado.
- Una aplicación Next.js con autenticación Logto ya configurada (sigue nuestra guía de Next.js si aún no la tienes).
- Una cuenta de Permit.io. Sigue la guía de inicio rápido de Permit.io para configurar tu proyecto en Permit.io antes de continuar.
Integración
Instala el SDK de Permit.io
Agrega el SDK de Permit.io a tu aplicación:
npm install permitio
Crea un proyecto en Permit.io
- Regístrate para obtener una cuenta gratuita en permit.io
- Crea un nuevo proyecto y obtén tu clave API
- Añade la clave API a tus variables de entorno:
PERMIT_API_KEY=your-permit-api-key
Configura el cliente de Permit.io
Crea un archivo para manejar la integración con Permit.io:
// libraries/permit.js
const { Permit } = require('permitio');
// Inicializa el cliente de Permit.io
const permit = new Permit({
pdp: 'https://cloudpdp.api.permit.io',
token: 'your-permitio-api-key',
});
// Sincroniza un usuario con Permit.io
export const syncUserToPermit = async (userId, email, firstName, lastName, role = 'viewer') => {
// Primero, sincroniza el usuario
await permit.api.syncUser({
key: userId,
email: email || undefined,
first_name: firstName || undefined,
last_name: lastName || undefined,
});
// Luego asigna un rol al usuario
await permit.api.assignRole({
user: userId,
role: role,
tenant: 'default',
});
return true;
};
Crea un webhook de Logto para el registro de usuarios
Logto proporciona webhooks que pueden notificar a tu aplicación cuando ocurren eventos. Usaremos el webhook PostRegister
para sincronizar usuarios con Permit.io cuando se registren.
Crea un endpoint de webhook en tu aplicación:
// pages/api/webhooks/logto.js
import { syncUserToPermit } from '../../../libraries/permit';
export default async function handler(req, res) {
// Registra la carga útil del webhook para depuración
console.log('Webhook payload:', req.body);
const { event, user } = req.body;
// Procesa eventos de registro de usuario
if (event === 'PostRegister') {
try {
// Determina el rol del usuario (puedes implementar tu propia lógica aquí)
let role = 'viewer'; // Rol por defecto
// Sincroniza el usuario con Permit.io
await syncUserToPermit(user.id, user.primaryEmail, user.name, undefined, role);
return res.status(200).json({ success: true });
} catch (error) {
console.error('Error sincronizando usuario:', error);
return res.status(500).json({ error: 'Fallo al sincronizar usuario' });
}
}
return res.status(200).json({ message: 'Evento ignorado' });
}
Configura el webhook en Logto Console
- Ve a la sección Webhooks en tu Logto Console
- Haz clic en "Crear Webhook"
- Asigna un nombre a tu webhook
- Ingresa la URL de tu endpoint (por ejemplo,
https://your-app.com/api/webhooks/logto
) - Selecciona el evento
PostRegister
- Guarda el webhook
Para desarrollo local, puedes usar herramientas como ngrok para exponer tu servidor local a Internet.
Prueba la sincronización de usuarios
Para probar que los usuarios se están sincronizando correctamente:
- Crea una nueva cuenta de usuario en tu aplicación
- Verifica en el panel de Permit.io en "Directory" → "Users" que el usuario fue sincronizado
- Verifica que el rol correcto fue asignado al usuario al registrarse

Usa Permit.io para la autorización
Una vez que los usuarios están sincronizados, puedes usar Permit.io para comprobar permisos:
// Ejemplo de comprobación de un permiso
const isPermitted = await permit.check(userId, 'view', 'reports');
if (isPermitted) {
// El usuario tiene permitido ver los recursos
// Muestra la interfaz de recursos
} else {
// El usuario no tiene permitido ver los recursos
// Muestra un mensaje de acceso denegado
}
Conclusión
Has conectado exitosamente Logto con Permit.io para sincronizar usuarios automáticamente e implementar autorización en tu aplicación. Con esta integración:
- Los usuarios se autentican a través de Logto
- Los nuevos usuarios se sincronizan automáticamente con Permit.io mediante webhooks
- Puedes usar Permit.io para comprobar permisos e implementar control de acceso
Esta configuración proporciona una base sólida para implementar patrones de autorización más avanzados a medida que tu aplicación crece.
Para casos de uso de autorización más avanzados, explora la documentación de Permit.io sobre creación de políticas, aplicación de permisos e implementación de control de acceso basado en roles.