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.
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.
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:
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 papelmember
. - Organização B: Apenas Alice é membro, e ela tem o papel
member
.
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.
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.