Estudio de caso: Construir multi-tenencia con Logto Organizations
Aprende cómo configurar una base de identidad sólida y escalable para la multi-tenencia con Logto Organizations.
Hoy en día, la multi-tenencia se ha convertido en una parte esencial de una aplicación o SaaS. A menudo, implica la compleja relación entre usuarios, organizaciones, roles y permisos. Por ejemplo, un usuario puede ser miembro de múltiples organizaciones y viceversa; un usuario también puede tener diferentes roles en diferentes organizaciones.
El problema
Esto puede llevar a dolores de cabeza no solo al principio, sino también en el mantenimiento a largo plazo de una aplicación. El modelo tradicional de control de acceso basado en roles (RBAC) puede resolver parcialmente este problema, pero rápidamente se convierte en una pesadilla cuando el número de usuarios y organizaciones crece.
Por ejemplo, al principio, podrías tener solo dos roles en cada organización: admin
y member
. Cuando tienes 10 organizaciones, gestionarás 20 roles; cuando tienes 1,000 organizaciones, gestionarás 2,000 roles.
A medida que el negocio crece, puedes necesitar añadir más roles, como guest
, developer
, etc. La complejidad del modelo RBAC crecerá exponencialmente.
Tuvimos el mismo problema cuando construimos Logto Cloud. Pronto nos dimos cuenta de que es un problema común en la industria, y necesitamos solucionarlo. Y Logto Organizations está aquí para rescatarte.
Plantilla de organización
Una pregunta rápida: ¿por qué las aplicaciones SaaS son SaaS? Creemos que la escalabilidad es una de las razones más importantes. En otras palabras, lo que funciona para un cliente debería funcionar para todos los clientes.
Esto lleva al concepto de "plantilla de organización". Una plantilla de organización es un modelo del control de acceso para cada organización: define los roles y permisos que aplican a todas las organizaciones.
Digamos que tenemos dos roles para cada organización:
admin
: puede gestionar la organización, incluyendo añadir / eliminar miembros, cambiar roles, etc.member
: puede acceder a los recursos de la organización e invitar a nuevos miembros.
Podemos crear una plantilla de organización con la siguiente configuración:
Añadir usuarios a las organizaciones
Dado que configuramos la plantilla de organización, gestionar usuarios se vuelve fácil y natural. Puedes añadir un usuario a una organización mediante Logto Console (la interfaz web) o a través de Logto Management API
Consulta Configurar organizaciones para aprender más.
Añadimos dos organizaciones con la siguiente configuración:
- Organización A: Tanto Alice como Bob son miembros. Alice tiene el rol
admin
, y Bob tiene el rolmember
. - Organización B: Solo Alice es miembro, y ella tiene el rol
member
.
Solicitar tokens de organización en tu aplicación
En tu aplicación para clientes, ahora puedes solicitar un token de acceso a la organización (token de organización) desde Logto. El token de organización es un token JWT que contiene la información necesaria para que tu servicio verifique si el usuario tiene el permiso en la organización.
Los pasos detallados para solicitar un token de organización se describen en Integrar Organizaciones con tu aplicación.
Supongamos que Alice ha iniciado sesión en tu aplicación y quiere eliminar un usuario en la Organización A. Tu aplicación puede solicitar un token de organización para "Organización A" con el permiso remove:member
(alcance). Logto verificará si Alice tiene el permiso en la organización y devolverá un token de organización ya que ella tiene el rol admin
:
Aquí hay algunos ejemplos de casos de error:
- Si Bob quiere eliminar un usuario en la Organización A, Logto devolvería un error ya que no tiene el rol
admin
en la Organización A. - Si Alice quiere eliminar un usuario en la Organización B, Logto también devolvería un error ya que ella no tiene el rol
admin
en la Organización B. - Si Bob quiere obtener un token de organización con cualquier permiso en la Organización B, Logto devolvería un error ya que no tiene la membresía en la Organización B.
Después de que tu aplicación reciba el token de organización, puede llamar a tu servicio con el token de organización agregándolo en el encabezado Authorization
.
Verificar tokens de organización en tu servicio
En tu servicio, puedes verificar el token de organización mediante el proceso estándar de verificación JWT. Consulta Verificar tokens de organización para más detalles.
Actualizar la plantilla de organización
Cuando necesites actualizar la plantilla de organización, por ejemplo, añadir un nuevo rol llamado developer
, puedes hacerlo en Logto Console o a través de Logto Management API. El cambio se aplicará automáticamente a todas las organizaciones sin tiempo de inactividad.
Conclusión
Con Logto Organizations, gestionar y escalar la multi-tenencia se vuelve estándar y cómodo. Puedes centrarte en la lógica de tu negocio y dejar la identidad y control de acceso a Logto.