Configura tu servicio de aplicación con la Management API de Logto
Logto ofrece una potente Management API que te permite crear y personalizar tu propio flujo de organización dentro de tu aplicación. Comprender cómo funciona es clave para diseñar tu configuración personalizada. A continuación se presentan los pasos básicos y el esquema para integrar la Management API e implementar tu experiencia de organización.
Si ya conoces lo básico, puedes saltar directamente al tutorial. Una vez que estés familiarizado con la configuración, puedes explorar APIs adicionales para adaptar el resto de los flujos a las necesidades de tu negocio.
Establece una conexión máquina a máquina
Logto utiliza la autenticación máquina a máquina (M2M) para conectar de forma segura tu servicio backend con el endpoint de la Management API de Logto. Tu servicio backend puede entonces usar la Management API para manejar tareas relacionadas con organizaciones como crear organizaciones, agregar o eliminar miembros, y más.
Esto implica:
- Crear una aplicación Máquina a Máquina (M2M) en la Consola de Logto.
- Adquirir un token de acceso M2M de Logto. Aprende más.
- Llamar a las Management APIs de Logto desde tu servicio backend. Por ejemplo, listar todas las organizaciones:
curl \
-X GET https://[tenant_id].logto.app/api/organizations \
-H "Authorization: Bearer $M2M_ACCESS_TOKEN" \
-H "Content-Type: application/json"
Protege tu servidor de aplicaciones
Dado que los usuarios finales pueden realizar ciertas acciones de organización por sí mismos, es importante añadir una capa de autorización entre el usuario final y tu servidor de aplicaciones. Puedes aplicar esta capa globalmente o a nivel de organización, dependiendo de qué endpoints de la Management API de Logto utilices y cómo esté estructurada la API de tu producto. El servidor debe mediar cada solicitud, validar el token de organización del usuario y los alcances requeridos, y solo entonces usar una credencial M2M mantenida en el servidor para invocar la Management API.
Cuando un usuario presenta un token de organización para solicitar una acción (por ejemplo, crear una organización), el servidor primero valida los alcances en el token. Si el token incluye el alcance necesario, como org:create, autoriza la solicitud y llama a la Management API de Logto mediante el flujo M2M para crear la organización.
Si el token no contiene los alcances requeridos, devuelve un 403 Forbidden y omite la lógica M2M. Esto asegura que los usuarios sin los privilegios apropiados no puedan crear organizaciones.
A continuación se muestran patrones comunes de autorización.
Usando permisos de organización
Primero, asegúrate de haber definido permisos y roles de organización en tu plantilla de organización en la sección anterior.
Luego, asegúrate de que UserScope.Organizations (valor: urn:logto:organization) esté incluido en la configuración de Logto. Tomando el SDK de React como ejemplo:
// src/App.js
import { UserScope } from '@logto/react';
const config = {
endpoint: 'https://<tenant-id>.logto.app/', // Tu endpoint de Logto
appId: '40fmibayagoo00lj26coc', // Tu app id
resources: [
'https://my.company.com/api', // Tu identificador global de recurso de API
],
scopes: [
UserScope.Email,
UserScope.Phone,
UserScope.CustomData,
UserScope.Identities,
UserScope.Organizations, // Solicita un token de organización
],
};
Esto asegura que al llamar a getOrganizationToken(organizationId), el SDK del cliente solicite un token de organización que contenga los permisos de organización asignados al usuario. Tu servicio backend puede entonces validar el token y autorizar solicitudes posteriores basándose en estos permisos.
Para detalles sobre cómo proteger permisos de organización (no de API), consulta la guía completa.
Usando permisos a nivel de API
Esto aplica cuando tus recursos de API y permisos están registrados globalmente, pero los roles se definen a nivel de organización (puedes asignar permisos a nivel de API a roles de organización en la plantilla de organización).
La implementación es la misma que en la sección anterior. Siempre proporciona el ID de la organización y llama a getOrganizationToken(organizationId) para obtener un token de organización; de lo contrario, los permisos de organización no se incluirán.
Para detalles sobre cómo proteger permisos de API a nivel de organización, consulta la guía completa.
Usando RBAC global
En este caso, puedes usar la Management API de Logto para implementar el control de acceso a nivel de sistema.
En un entorno multi-tenant, un patrón común es tener un rol de superusuario o super admin. Por ejemplo, si estás construyendo una plataforma SaaS con Logto, podrías querer un superusuario que pueda gestionar todas las organizaciones de clientes directamente dentro de tu propia aplicación, sin necesidad de iniciar sesión en la Consola de Logto.
Este superusuario puede realizar acciones de alto nivel, como crear o eliminar organizaciones en masa, que requieren permisos a nivel de sistema más allá del contexto de cualquier organización individual. Para habilitar esto, registra un recurso de API en Logto mientras aprovechas la Management API de Logto y usa RBAC global para gestionar estos permisos.
Para más detalles sobre cómo integrar y gestionar el control de acceso para RBAC, consulta la guía completa.