Posso usar o Active Directory para segurança em nível de usuário em um aplicativo do Access? Por favor, por favor

4

Minha empresa faz uso bastante extenso de um aplicativo Access + MySQL que provavelmente veria algum tráfego significativo no WTF diário se eu publicasse o código-fonte. O gerenciamento de usuários e suas permissões está ficando fora de controle e eu passo mais e mais tempo lidando com ajustes ou tentando descobrir por que alguém não consegue ver o que eles deveriam ver.

Ele foi originalmente configurado para ser usado por três usuários em um único depósito. Ele agora é usado por mais de vinte usuários em quatro estados, com mais a ser adicionado em breve, e os recursos foram adicionados em uma proporção de aproximadamente 10 para 1 com os usuários ... O aplicativo principal real não é ruim, mas gerenciar usuários é uma dor. Access faz um bom front-end para os dados em si, que é armazenado em um backend MySQL em nossa sede. Os usuários têm caixas Cisco VPN em filiais satélites, e isso também é sólido. O escopo se espalhou de um simples registro de envio para um CRM / ERP completo ... bem, eu não suponho que você possa chamar isso de uma solução. Uma emulsão, talvez. Se eu tivesse o orçamento, ligaria para a SAP e diria a eles para fazer isso. Isso, receio, está fora do campo de possibilidades no futuro previsível.

Seguindo as instruções do Google (nem sempre a coisa mais segura a fazer) eu usei o 'Assistente de Segurança em Nível de Usuário' no Access para atribuir nomes de usuários e senhas a vários usuários, o que foi bom quando comecei com um total de 4-5 usuários 3 usuários ativos. Mas agora é bem pesado. Meu mais profundo desejo e desejo é que haja alguma maneira de autenticar usuários e atribuir funções de privilégio com base no nome de usuário e senha do Active Directory. Me disseram que isso é impossível. Algumas pesquisas no Google não deram em nada.

Suponho que seja possível obter algum tipo de estrutura de autenticação usando o Active Directory, pois o VBA possui links para todos os tipos de APIs no Windows. No entanto ... vale a pena o tempo e o problema? Alguém já fez isso funcionar, ou sou capaz de explodir não apenas meu aplicativo digno de WTF, mas também o domínio?

    
por atroon 21.01.2010 / 19:51

2 respostas

4

Eu sei que é possível, mas poucos desenvolvedores do Access parecem estar fazendo isso. Se alguém escreveu o código, eu mesmo o usaria, mas não preciso disso o suficiente para escrevê-lo sozinho.

O conceito-chave é que você pode acessar informações do AD por meio de uma consulta LDAP usando o ADO. Não há como impor permissões a objetos do Access com isso, mas você certamente poderia controlar o fluxo / a apresentação do aplicativo com base na associação ao AD. Consulte este tópico como ponto de partida. Além disso, há um artigo sobre um MS Knowledge Base sobre isso que explica a abordagem LDAP.

BTW, desde que você não precise de funcionalidades específicas do AD (como unidades organizacionais), não será necessário usar o AD. Você pode usar chamadas de API regulares para obter informações de associação ao grupo. Veja este post de Stackoverflow para algum código sugerindo a direção a seguir (I Não é possível verificar esse código, pois ele parece bastante elíptico, ou seja, não declarações de API, mas fornece o conceito básico).

    
por 21.01.2010 / 20:47
1

Não é possível interagir diretamente com o AD nesse nível. O melhor que você pode fazer diretamente é atribuir permissões de arquivo com base nas contas do AD. Seria preciso um pouco de esforço para fazer isso através do VBA, mas certamente não fora do alcance da compreensão. Eu diria que você deve fazer uma análise de ROI bastante sólida antes de abordar.

    
por 21.01.2010 / 20:31