Nos bastidores: Como implementamos a colaboração de utilizadores numa aplicação multi-inquilino
Práticas e insights sobre a implementação de uma funcionalidade de gestão de convites e acessos por função, como a colaboração na Logto Cloud, numa aplicação multi-inquilino.
Contexto
Na semana passada, introduzimos a funcionalidade de colaboração na Logto Cloud. Se perdeste, dá uma olhada! Agora, podes convidar colegas e colaboradores para os teus inquilinos Logto existentes, colaborando juntos na manutenção do sistema de identidade para as tuas aplicações.
Nesta versão da funcionalidade, adicionámos dois papéis a cada inquilino Logto:
- Administrador: Acesso total ao inquilino, incluindo gestão de recursos relacionados com identidade, convite e gestão de outros membros, tratamento de faturação e visualização do histórico de faturação.
- Colaborador: Pode gerir recursos relacionados com identidade mas não tem acesso a outras funcionalidades de administrador.
Consistente com o nosso compromisso de usar as nossas próprias ferramentas, utilizámos o nosso RBAC (Controlo de Acessos Baseado em Funções) e a funcionalidade de Organizações na construção da colaboração de utilizadores. Se és novo no RBAC, vê o nosso post anterior para começares.
Neste post do blog, vamos explorar o que foi necessário para implementar esta funcionalidade e como estas práticas te poderão beneficiar se estiveres a desenvolver aplicações multi-organização.
A colaboração na Logto Cloud é construída com as Organizações Logto
Cada inquilino Logto Cloud funciona como uma organização independente no nosso sistema, impulsionado pela nossa própria funcionalidade de Organizações. Para introduzir os papéis de administrador e colaborador do inquilino, criámos dois papéis de organização no modelo de organização, cada um com um conjunto específico de permissões de organização atribuídas.
Manipular convites com a API de Gestão Logto
Disponibilizámos um conjunto de APIs de Gestão relacionadas com convites na funcionalidade de organizações. Com estas APIs, podes, por exemplo:
POST /api/organization-invitations
criar e enviar um convite de organização para um endereço de emailGET /api/organization-invitations
&GET /api/organization-invitations/{id}
obter os teus convitesPUT /api/organization-invitations/{id}/status
aceitar ou rejeitar o convite atualizando o estado do convite
Para mais detalhes, consulta a documentação completa da API.
Conecta-te com o teu conector de email
Como os convites são enviados por email, garante que o teu conector de email está devidamente configurado. Nesta versão, introduzimos um novo tipo de uso de modelo de email, OrganizationInvitation
, que permite a personalização do modelo de email de convite.
Este modelo de email aceitará uma variável {{link}}
por defeito, que é o link para a página de aterragem do Logto Console, onde os utilizadores podem aceitar o convite e juntar-se a um inquilino Logto. Uma das páginas de aterragem na Logto Cloud aparece como na captura de ecrã abaixo:
Consulta a documentação da API para mais detalhes sobre o envio do email de convite através da API de Gestão.
Usa RBAC para gerir permissões de utilizadores
Com as configurações acima, podemos enviar convites por email, e os convidados podem juntar-se à organização com o papel atribuído.
Utilizadores com papéis de organização diferentes terão âmbitos (permissões) diferentes nos seus tokens de acesso. Assim, tanto a aplicação cliente (Logto Console) como os nossos serviços de backend devem verificar estes âmbitos para determinar as funcionalidades visíveis e as ações permitidas.
Tudo bem até agora, mas o que mais nos falta?
Lidar com atualizações de âmbitos nos tokens de acesso
Gerir atualizações de âmbitos nos tokens de acesso envolve:
- Revogar âmbitos existentes: Por exemplo, rebaixar um administrador para colaborador não-administrador reduz automaticamente os âmbitos no novo token de acesso obtido com o token de atualização existente.
- Conceder novos âmbitos: Por outro lado, promover um utilizador a administrador requer desencadear um novo login ou um processo de novo consentimento para refletir a alteração nos tokens de acesso do utilizador.
Na Logto Cloud, o Console verifica ativamente os âmbitos dos utilizadores usando pedidos SWR, e damos consentimento automaticamente sempre que um utilizador é promovido a administrador.
Se estás a implementar uma funcionalidade semelhante com RBAC, precisarás de um mecanismo (e.g., WebSocket ou eventos de push do servidor) para notificar a tua aplicação sobre as atualizações dos âmbitos, permitindo um novo consentimento ou a emissão de novos tokens de acesso conforme necessário. A Logto também disponibilizará mais webhooks para te ajudar com isto em atualizações futuras.
Em resumo
As funcionalidades de multi-inquilino e de colaboração na Logto Cloud utilizam a nossa funcionalidade de Organizações. Se estás a desenvolver uma aplicação semelhante de multi-inquilino, considera utilizar esta funcionalidade com abordagens similares.
Espero que este post do blog se revele útil. Para perguntas ou discussões, junta-te ao nosso canal no Discord.