Português (Brasil)
  • organizações
  • colaboração
  • identidade
  • gerenciamento de usuários
  • autenticação
  • autorização

Estudo de caso: Construir multi-tenantidade com Logto Organizations

Aprenda como configurar uma base sólida e escalável de identidade para multi-tenantidade com Logto Organizations.

Gao
Gao
Founder

Hoje em dia, a multi-tenantidade se tornou uma parte essencial de um aplicativo ou SaaS. Ela frequentemente envolve a complexa relação entre usuários, organizações, papéis e permissões. Por exemplo, um usuário pode ser membro de várias organizações, e vice-versa; um usuário também pode ter diferentes papéis em diferentes organizações.

O problema

Isso pode causar problemas não apenas no início, mas também na manutenção a longo prazo de um aplicativo. O modelo tradicional de controle de acesso baseado em papéis (RBAC) pode resolver parcialmente esse problema, mas rapidamente se torna um pesadelo quando o número de usuários e organizações cresce.

Exemplo de organizações

Por exemplo, no início, você pode ter apenas dois papéis em cada organização: admin e member. Quando você tem 10 organizações, você gerenciará 20 papéis; quando você tem 1.000 organizações, você gerenciará 2.000 papéis.

À medida que o negócio cresce, você pode precisar adicionar mais papéis, como guest, developer, etc. A complexidade do modelo RBAC crescerá exponencialmente.

Tivemos o mesmo problema quando construímos o Logto Cloud. Logo percebemos que é um problema comum na indústria, e precisávamos resolvê-lo. E o Logto Organizations está aqui para resgatar.

Template de organização

Uma pergunta rápida: por que aplicativos SaaS são SaaS? Acreditamos que escalabilidade é uma das razões mais importantes. Em outras palavras, o que funciona para um cliente, deve funcionar para todos os clientes.

Isso leva ao conceito de "template de organização". Um template de organização é um projeto do modelo de controle de acesso para cada organização: ele define os papéis e as permissões que se aplicam a todas as organizações.

Digamos que temos dois papéis para cada organização:

  • admin: pode gerenciar a organização, incluindo adicionar/remover membros, alterar papéis, etc.
  • member: pode acessar os recursos da organização e convidar novos membros.

Podemos criar um template de organização com a seguinte configuração:

Template de organização

Adicionar usuários às organizações

Desde que configuramos o template da organização, gerenciar usuários se torna fácil e natural. Você pode adicionar um usuário a uma organização pelo Logto Console (a interface web) ou via Logto Management API

Veja Configurar organizações para saber mais.

Adicionamos duas organizações com a seguinte configuração:

  • Organização A: Tanto Alice quanto Bob são membros. Alice tem o papel admin, e Bob tem o papel member.
  • Organização B: Apenas Alice é membro, e ela tem o papel member.

Organização A

Organização B

Solicitar tokens de organização no seu aplicativo

No seu aplicativo do cliente, agora você pode solicitar um token de acesso da organização (token de organização) do Logto. O token de organização é um token JWT que contém as informações necessárias para que o seu serviço verifique se o usuário tem a permissão na organização.

Os passos detalhados para solicitar um token de organização estão descritos em Integrar Organizações com seu aplicativo.

Suponha que Alice está conectada ao seu aplicativo, e ela deseja remover um usuário na Organização A. Seu aplicativo pode solicitar um token de organização para a "Organização A" com a permissão remove:member (escopo). O Logto verificará se Alice tem a permissão na organização e retornará um token de organização, pois ela tem o papel admin:

Aqui estão alguns exemplos de casos de erro:

  • Se Bob quiser remover um usuário na Organização A, o Logto retornará um erro, pois ele não tem o papel admin na Organização A.
  • Se Alice quiser remover um usuário na Organização B, o Logto também retornará um erro, pois ela não tem o papel admin na Organização B.
  • Se Bob quiser buscar um token de organização com qualquer permissão na Organização B, o Logto retornará um erro, pois ele não tem a associação na Organização B.

Depois que seu aplicativo receber o token de organização, ele pode chamar seu serviço com o token de organização adicionando-o ao cabeçalho Authorization.

Verificar tokens de organização no seu serviço

Em seu serviço, você pode verificar o token de organização pelo processo padrão de verificação JWT. Veja Verificar tokens de organização para mais detalhes.

Atualizar template de organização

Quando você precisa atualizar o template de organização, por exemplo, adicionar um novo papel chamado developer, você pode fazê-lo no Logto Console ou via Logto Management API. A mudança será aplicada automaticamente a todas as organizações sem qualquer tempo de inatividade.

Novos papéis de organização

Conclusão

Com Logto Organizations, gerenciar e escalar multi-tenantidade se torna padrão e confortável. Você pode se concentrar na sua lógica de negócios e deixar a identidade e o controle de acesso para o Logto.