Skip to Content

Organizaciones B2B Multi-Tenant

El sistema de Organizaciones habilita la multi-tenencia B2B en Auris. Cada organización representa una entidad cliente — una empresa, un equipo o cualquier agrupación lógica — que posee un conjunto de usuarios miembros, tiene sus propias asignaciones de roles y puede configurar su propio proveedor de SSO empresarial. Las organizaciones son independientes entre sí: el rol de un usuario en la Organización A no tiene ningún efecto sobre su acceso en la Organización B.

Este modelo está diseñado para productos SaaS que venden a empresas: tu único tenant de Auris aloja múltiples organizaciones de clientes, cada una con membresía y control de acceso aislados.


Conceptos Fundamentales

Organización: Una entidad con nombre y un slug único. Las organizaciones tienen metadatos, nombres de visualización y configuraciones. Siempre son propiedad de exactamente un usuario (el OWNER).

Miembro de Organización: Un usuario que pertenece a una organización con uno de cuatro roles: OWNER, ADMIN, MEMBER o VIEWER.

Invitación: Una invitación basada en token y con tiempo limitado que permite a un usuario (o una dirección de email no registrada aún) unirse a una organización con un rol especificado.

SSO con ámbito de organización: Cada organización puede configurar su propio proveedor de identidad SAML 2.0 u OIDC. Cuando un usuario inicia sesión con un email que coincide con un dominio verificado, Auris lo redirige automáticamente al IdP de su organización. Ver SSO Empresarial.


Creación de Organizaciones

Las organizaciones pueden ser creadas por cualquier usuario con el permiso adecuado, o programáticamente a través del SDK de Gestión.

POST/api/organizationsRequires: manage:organizations

Crea una nueva organización. Al usuario que la crea se le asigna automáticamente el rol OWNER.

Cuerpo de la solicitud:

{ "name": "Acme Corporation", "displayName": "Acme Corp", "slug": "acme-corp", "metadata": { "plan": "enterprise", "contractId": "CNT-2025-0042" } }

Referencia de campos:

CampoTipoRequeridoNotas
namestringSíNombre interno, único por tenant
displayNamestringNoNombre orientado al usuario que se muestra en la interfaz
slugstringNoIdentificador seguro para URL, se genera automáticamente desde name si se omite
metadataobjectNoJSON arbitrario para datos específicos de la aplicación
GET/api/organizationsRequires: view:organizations

Devuelve una lista paginada de todas las organizaciones en el tenant. Soporta parámetros de consulta search y page/limit.

GET/api/organizations/[id]Requires: view:organizations

Devuelve el registro de la organización incluyendo el recuento de miembros y la configuración básica.

PATCH/api/organizations/[id]Requires: manage:organizations

Actualiza los campos de la organización. Todos los campos son opcionales — solo se actualizan los campos proporcionados.

DELETE/api/organizations/[id]Requires: manage:organizations

Elimina la organización. Los miembros pierden sus asignaciones de roles a nivel de organización. Las cuentas de usuario subyacentes no se ven afectadas.


Roles de Miembros

Las organizaciones usan un sistema de roles jerárquico de cuatro niveles. Los roles superiores heredan todas las capacidades de los roles inferiores.

RolCapacidades
OWNERControl total. Puede gestionar todos los ajustes, miembros, SSO y facturación. Siempre hay exactamente un OWNER. El OWNER no puede ser eliminado por otro OWNER — la propiedad debe transferirse primero.
ADMINPuede gestionar miembros (añadir, eliminar, cambiar roles hasta ADMIN). Puede configurar SSO y ajustes de la organización. No puede eliminar la organización.
MEMBERAcceso estándar. Las concesiones de roles son definidas por la aplicación — Auris no impone restricciones de recursos en este nivel más allá de lo que tu aplicación aplique.
VIEWERAcceso de solo lectura. Puede ver la membresía y los ajustes de la organización pero no puede realizar cambios.

Auris aplica la jerarquía de roles a nivel de API. Un ADMIN no puede asignar el rol OWNER a otro usuario — la transferencia de propiedad requiere una llamada API separada por parte del OWNER actual.


Gestión de Miembros

GET/api/organizations/[id]/membersRequires: view:organizations

Devuelve la lista paginada de miembros de la organización, incluyendo los detalles del usuario y su rol dentro de la organización.

Respuesta:

{ "data": [ { "userId": "usr_01HX...", "email": "[email protected]", "firstName": "Alice", "lastName": "Rossi", "role": "ADMIN", "joinedAt": "2025-01-15T10:00:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 12, "totalPages": 1 } }
POST/api/organizations/[id]/membersRequires: manage:organizations

Añade directamente un usuario (por userId) a la organización con un rol especificado. El usuario ya debe existir en Auris.

{ "userId": "usr_01HX...", "role": "MEMBER" }
PATCH/api/organizations/[id]/members/[userId]Requires: manage:organizations

Actualiza el rol del miembro dentro de la organización.

DELETE/api/organizations/[id]/members/[userId]Requires: manage:organizations

Elimina al usuario de la organización. La cuenta de Auris del usuario no se elimina ni se deshabilita.


Invitaciones

Las invitaciones te permiten añadir usuarios a una organización por email, incluso si aún no tienen una cuenta de Auris. El flujo de invitación:

  1. Un ADMIN o OWNER envía una invitación a una dirección de email.
  2. Auris genera un token único y de tiempo limitado y envía un email con un enlace de aceptación.
  3. El invitado hace clic en el enlace. Si ya tiene una cuenta de Auris, se añade a la organización inmediatamente. Si no, se le pide que cree una cuenta, tras lo cual se acepta la invitación.
  4. Las invitaciones caducan después de 7 días si no se aceptan.
POST/api/organizations/[id]/invitationsRequires: manage:organizations

Crea y envía una invitación a una dirección de email.

{ "email": "[email protected]", "role": "MEMBER", "message": "Has sido invitado a unirte a Acme Corp en nuestra plataforma." }
GET/api/organizations/[id]/invitationsRequires: manage:organizations

Lista todas las invitaciones pendientes, aceptadas y caducadas de la organización.

DELETE/api/organizations/[id]/invitations/[invitationId]Requires: manage:organizations

Cancela una invitación pendiente. Las invitaciones caducadas no pueden aceptarse pero no necesitan cancelarse manualmente.

Estados de invitación:

EstadoSignificado
PENDINGEnviada y esperando aceptación
ACCEPTEDEl usuario aceptó y ahora es miembro
EXPIREDEl período de 7 días pasó sin aceptación
CANCELLEDCancelada manualmente por un ADMIN o OWNER

Uso del SDK

import { useOrganization } from '@auris/react' function PanelOrganizacion() { // Devuelve el contexto de la organización de la sesión del usuario autenticado. // La organización se deriva de los claims del access token. const { organization, members, isLoading } = useOrganization() if (isLoading) return <div>Cargando...</div> if (!organization) return <div>Sin organización</div> return ( <div> <h1>{organization.displayName}</h1> <p>Miembros: {members.length}</p> <ul> {members.map((member) => ( <li key={member.userId}> {member.email} — {member.role} </li> ))} </ul> </div> ) }

Metadatos de Organización

Al igual que los usuarios, las organizaciones admiten metadatos JSON arbitrarios. Úsalos para almacenar datos específicos de la aplicación junto al registro de la organización sin migraciones de esquema.

{ "metadata": { "plan": "enterprise", "contractId": "CNT-2025-0042", "maxSeats": 250, "billingEmail": "[email protected]", "features": ["advanced-analytics", "custom-domains", "audit-export"] } }

Los metadatos se devuelven en cada respuesta de la API de organizaciones y son accesibles en el SDK de Gestión.


Casos de Uso

Multi-tenencia SaaS: Cada uno de tus clientes es una organización. Tu aplicación lee la organización del usuario desde su JWT o sesión y limita todas las consultas de datos a esa organización. Los nuevos clientes se incorporan creando una organización e invitando a su administrador.

Incorporación de clientes empresariales: Crea la organización, añade al administrador de TI del cliente como OWNER y deja que gestione sus propios usuarios y configure su SSO corporativo. Tu equipo mantiene la visibilidad a nivel de tenant a través de la Consola de Administración.

Soluciones de marca blanca: Cada organización de cliente final puede configurar su propio SSO, verificación de dominio y nombre de visualización. La página de Inicio de Sesión Alojado se adapta a la marca de cada organización cuando el email de un usuario coincide con un dominio verificado.

Equipos de producto internos: Separa líneas de producto o unidades de negocio en organizaciones distintas para la gestión de roles aislada, sin mantener instancias de tenant de Auris separadas.


Permisos Requeridos

OperaciónPermiso
Listar / obtener organizacionesview:organizations
Crear / actualizar / eliminar organizacionesmanage:organizations
Gestionar miembrosmanage:organizations
Enviar / cancelar invitacionesmanage:organizations

Páginas Relacionadas