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.
Assim, 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.
Para integrações através do MS Teams, essa consulta ao LDAP é mais frequente, ocorrendo a cada interação/mensagem do usuário. Para otimizar esse processo, que pode envolver múltiplas consultas ao 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 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 determinado, 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;
-
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
-
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). -
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.