Português (Portugal)
  • saas
  • colaboração
  • organizações
  • rbac
  • multi-inquilino

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.

Charles
Charles
Developer

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.

Papéis de organização
Âmbitos de organização

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 email
  • GET /api/organization-invitations & GET /api/organization-invitations/{id} obter os teus convites
  • PUT /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.

amostra 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:

página de aterragem do convite

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.