Skip to main content

Integração com domínio (AD LDAP)

Visão geral

A aplicação MD2 Interactive Intelligence permite que a autenticação e autorização de usuários sejam realizadas através da integração com um controlador de domínio Active Directory (LDAP).

Durante o processo de autenticação, a aplicação consulta o servidor LDAP para validar as credenciais do usuário (login e senha). Após a validação, ocorre a etapa de autorização, na qual são obtidos os grupos aos quais o usuário pertence dentro do domínio corporativo.

Esses grupos são então mapeados internamente para perfis de acesso (roles) definidos na aplicação. Esse mapeamento é configurável, permitindo que cada grupo do domínio corresponda a um determinado papel dentro do sistema, por exemplo "Administrador do sistema", "Administrador de pessoas", "Administrador de IA" e "Chat".

Quando um usuário interage com a aplicação via interface web, a camada de autenticação identifica seu login, consulta o LDAP para verificar sua identidade e, em seguida, atribui dinamicamente os perfis de autorização correspondentes.

Nas integrações via Microsoft Teams, esse processo de consulta ao LDAP tende a ser mais frequente, ocorrendo a cada interação ou mensagem enviada pelo usuário. Para otimizar esse fluxo, que pode gerar múltiplas consultas ao servidor LDAP em um curto intervalo de tempo, o sistema implementa um mecanismo de cache em memória com tempo de vida configurável (TTL).

Esse cache reduz a necessidade de consultas repetidas ao controlador de domínio, diminui a latência de resposta e melhora significativamente o desempenho em cenários de alta interação.


Funcionamento do cache

A aplicação permite a configuração de um mecanismo de cache em memória para otimizar o desempenho das operações de autenticação e autorização de usuários provenientes do controlador de domínio LDAP, para interações que ocorrem via MS Teams. Esse mecanismo visa reduzir a latência das consultas ao diretório corporativo, diminuir a carga sobre o servidor LDAP e aumentar a responsividade das rotinas de validação de acesso.


1. Origem dos dados

As informações armazenadas no cache são obtidas por meio de consultas ao controlador de domínio LDAP durante a operação de resolução de grupos e permissões (autorização). Após a primeira consulta bem-sucedida, os dados retornados são mantidos em memória por um tempo configurável, evitando a necessidade de repetição da chamada LDAP até o término do período configurado.

2. Estrutura interna
  • O cache é inteiramente residente em memória (RAM);

  • Não há persistência em disco;

  • Cada entrada no cache é identificada por uma chave única, normalmente derivada do identificador de usuário (ex.: login, e-mail, DN);

  • O valor armazenado contém as informações relevantes de autenticação e/ou autorização (por exemplo, DN, grupos, permissões, atributos personalizados).

3. Tempo de vida (TTL)

O Tempo de Vida (TTL – Time To Live) de cada entrada define o período máximo durante o qual a informação armazenada é considerada válida. Após o vencimento do TTL, a entrada é automaticamente expirada e removida do cache, forçando uma nova consulta ao LDAP na próxima solicitação correspondente.


Configuração

O valor do TTL é parametrizado no arquivo ".env", que contém as configurações globais do ambiente da aplicação.

Exemplo:

# Tempo de vida do cache LDAP (em minutos)
CACHE_LDAP_MAX_TIME=5
Observações:
  • O valor deve ser informado em minutos;

  • Em ambientes de alta disponibilidade, recomenda-se um valor entre 1 e 30 minutos, balanceando desempenho e atualização de dados. O valor 0 (zero) desabilita o cache;

  • Alterações neste parâmetro exigem reinicialização da aplicação para surtirem efeito.


Comportamento em Tempo de Execução

Situação Comportamento do cache
Primeira mensagem de um usuário Consulta o LDAP, armazena os dados em memória, e define o TTL.
Nova mensagem dentro do TTL Retorna os dados diretamente do cache, sem nova consulta LDAP.
Expiração do TTL A entrada é removida, e a próxima solicitação força uma nova consulta LDAP.
Reinício da aplicação Todo o cache é destruído; o mecanismo recomeça vazio e é reconstituído sob demanda.


Considerações

  1. Persistência volátil:
    O cache é apenas em memória, todas as informações são perdidas em caso de reinício da aplicação (manual ou inesperado).

  2. Dados dinâmicos de permissão:
    Alterações imediatas no LDAP (ex.: inclusão/remoção de usuários em grupos) só serão refletidas após a expiração do TTL ou reinício do serviço.