Detrás de escena: Cómo implementamos la colaboración de usuarios dentro de una aplicación multiinquilino
Prácticas y conocimientos sobre la implementación de una función de gestión de acceso por invitación y roles como la colaboración en Logto Cloud en una aplicación multiinquilino.
Antecedentes
La semana pasada, presentamos la función de colaboración en Logto Cloud. ¡Si te lo perdiste, échale un vistazo! Ahora, puedes invitar a colegas y compañeros de trabajo a tus inquilinos ya existentes de Logto, colaborando juntos en el mantenimiento del sistema de identidad para tus aplicaciones.
En esta versión de la función, hemos agregado dos roles a cada inquilino de Logto:
- Administrador: Acceso completo al inquilino, incluida la gestión de recursos relacionados con la identidad, la invitación y gestión de otros miembros, la gestión de facturación y la visualización del historial de facturación.
- Colaborador: Puede gestionar recursos relacionados con la identidad, pero no tiene acceso a otras funciones de administrador.
Consistentes con nuestro compromiso de usar nuestras propias herramientas, hemos aprovechado nuestra funcionalidad RBAC (Control de Acceso Basado en Roles) y la función de Organizaciones en la construcción de la colaboración de usuarios. Si eres nuevo en RBAC, revisa nuestra publicación anterior para comenzar.
En esta entrada de blog, echemos un vistazo a lo que implicó implementar esta función, y cómo estas prácticas podrían beneficiarte si estás desarrollando aplicaciones multi-organización.
La colaboración en Logto Cloud se construye con Logto Organizaciones
Cada inquilino de Logto Cloud funciona como una organización independiente en nuestro sistema, impulsado por nuestra propia función de Organizaciones. Para introducir los roles de administrador de inquilino y colaborador, creamos dos roles de organización en la plantilla de la organización, cada uno asignado con un conjunto específico de permisos de organización.
Maneja las invitaciones con la API de Gestión de Logto
Hemos proporcionado un conjunto de API de Gestión relacionadas con invitaciones en la función de organizaciones. Con estas API, puedes, por ejemplo:
POST /api/organization-invitations
crear y enviar una invitación de organización a una dirección de correo electrónicoGET /api/organization-invitations
&GET /api/organization-invitations/{id}
obtener tus invitacionesPUT /api/organization-invitations/{id}/status
aceptar o rechazar la invitación actualizando el estado de la invitación
Para obtener más detalles, consulta la documentación completa de la API.
Conéctate con tu conector de correo electrónico
Dado que las invitaciones se envían por correo electrónico, asegúrate de que tu conector de correo electrónico esté correctamente configurado. En esta versión, introdujimos un nuevo tipo de uso de plantilla de correo electrónico, OrganizationInvitation
(Invitación de Organización), que permite la personalización de la plantilla de correo electrónico de invitación.
Esta plantilla de correo electrónico aceptará una variable {{link}}
por defecto, que es el enlace a la página de aterrizaje del Logto Console, donde los usuarios pueden aceptar la invitación y unirse a un inquilino de Logto. Una de las páginas de aterrizaje en Logto Cloud se ve como la captura de pantalla a continuación:
Consulta la documentación de la API para más detalles sobre cómo enviar el correo electrónico de invitación a través de la API de Gestión.
Usa RBAC para gestionar los permisos de los usuarios
Con las configuraciones anteriores, podemos enviar invitaciones por correo electrónico, y los invitados pueden unirse a la organización con el rol asignado.
Los usuarios con diferentes roles en la organización tendrán diferentes ámbitos (permisos) en sus tokens de acceso. Así, tanto la aplicación cliente (Logto Console) como nuestros servicios backend deberán verificar estos ámbitos para determinar las funciones visibles y las acciones permitidas.
De acuerdo, hasta ahora, todo parece estar conectado, ¿y qué más nos falta?
Maneja las actualizaciones de los ámbitos en los tokens de acceso
Gestionar las actualizaciones de ámbitos en los tokens de acceso implica:
- Revocar ámbitos existentes: Por ejemplo, degradar a un administrador a un colaborador no administrador reduce automáticamente los ámbitos en el nuevo token de acceso obtenido con el token de actualización existente.
- Otorgar nuevos ámbitos: Por el contrario, promocionar a un usuario a administrador requiere desencadenar un proceso de nueva autenticación o nuevo consentimiento para reflejar el cambio en los tokens de acceso del usuario.
En Logto Cloud, la Console revisa activamente los ámbitos de usuario utilizando solicitudes SWR, y otorgamos automáticamente el consentimiento siempre que un usuario es ascendido a administrador.
Si estás implementando una función similar con RBAC, necesitarás un mecanismo (por ejemplo, WebSocket o eventos push desde el servidor) para notificar a tu aplicación sobre las actualizaciones de ámbito, lo que permitirá otorgar nuevo consentimiento o emitir nuevos tokens de acceso en consecuencia. Logto también proporcionará más webhooks para ayudarte con esto en futuras actualizaciones.
En resumen
Las características de multiinquilino y colaboración de Logto Cloud aprovechan nuestra función de Organizaciones. Si estás desarrollando una aplicación multiinquilino similar, considera utilizar esta función con enfoques similares.
Espero que esta entrada de blog sea útil. Para preguntas o debates, no dudes en unirte a nuestro canal de Discord.