Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 06 de Outubro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
66 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Login Integrado ao Active Directory
Publicado por admin : Quinta, Fevereiro 17, 2011 - 11:37 GMT-3 (1779 leituras)
Comentários 3 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Rodrigo Santos O Active Directory é um serviço da Microsoft, lançado no Windows 2000, que utiliza o protocolo LDAP para armazenar informações de usuários em uma determinada rede. Com ele, o administrador de redes tem todas as informações necessárias para controlar cada usuário da rede, como: nome, login e senha, bem como a criação de políticas de grupos de usuários.

Atualmente, há uma grande necessidade de se ter um login unificado dentro de uma organização, para que o usuário não tenha que ficar "decorando" login e senha de cada sistema e para que os desenvolvedores e o suporte técnico ganhem tempo, uma vez que não haverá mais tantos cadastros espalhados pela empresa. Sendo assim, vamos demonstrar neste artigo como integrar o login de sua aplicação no Active Directory.

Primeiramente, vamos criar um novo projeto: File/New/VCL Forms Application - Delphi. Neste exemplo, criei uma tela básica de Login, como segue:


Figura 1 - Exemplo da Interface

Configure os componentes da seguinte forma:

Componente

Nome

Valor

TLabel

lblLogin

LOGIN

TLabel

lblUsuario

Usuário:

TLabel

lblSenha

Senha:

TEdit

edtUsuario

 

TEdit

edtSenha

 

TButton

btnLogin

Entrar

O Active Directory Service Interfaces (ADSI) nos dá uma interface COM para interagirmos com o Active Directory, portanto, vamos adicionar a unit ActiveX na uses list para utilizarmos esta interface.

Para que possamos validar o login e a senha do usuário, necessitamos utilizar uma interface requerida em objetos ADSI para capturar algumas propriedades e um método para comparar estas informações com os objetos do Active Directory. Para tanto, adicionemos em nossa aplicação as units ActiveDs_Tlb e Adshlp, as quais se encontram no final deste artigo, juntamente com o código fonte deste projeto-exemplo, não se esquecendo de adicioná-las também à aplicação.

Configure o evento onClick do btnLogin, como segue:

procedure TfrmLogin.btnLoginClick(Sender: TObject);
var
  adObject: IADs;
begin
  ///Inicialização do COM
  CoInitialize(nil);
  try
    ADsOpenObject('<provider>://<nome_dominio_rede>',
                  LowerCase(edtUsuario.Text), 
                  edtSenha.Text, 
                  ADS_SECURE_AUTHENTICATION, 
                  IADs, 
                  adObject);
    ShowMessage('Login válido!');
  except
    on e: EOleException do
    begin
      if Pos('Falha de logon', e.Message) > 0 then
        ShowMessage('Login inválido!')
      else
        ShowMessage(e.Message);
    end;
  end;
  CoUninitialize;
end;

Como podemos ver, inicializamos o COM e depois utilizamos um método para comparação de nosso login e senha com os objetos do Active Directory. Neste método, passamos o provider WinNT ou LDAP, o nome do domínio da rede que estamos conectados, o login e senha que o usuário digitou, a forma de autenticação ao Active Directory, a interface e um objeto IADs que criamos localmente. Se houver erro nesta comparação, significa que o login e senha digitados não foram encontrados em nenhum objeto do Active Directory ou há algum problema na comunicação ou conectividade da rede.

Clique aqui para baixar o código fonte do exemplo (323 KB)

* Este projeto-exemplo foi construído com Delphi 2009 e testado em redes que possuem servidores Windows Server 2003/2008 com Active Directory, portanto,  o mesmo só será executado normalmente se estas condições de rede forem atendidas.

Por: Rodrigo Alves dos Santos
Contato: rod.alves88@gmail.com



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: flexsystems (suporte@flexsystems.info) : Jan 24, 2013 - 05:13
(Informações sobre o membro | Enviar uma mensagem) http://www.flexsystems.info
Muito bom artigo, utilizei e funcionou! Obrigado.


por: cleber.balota (cleberbalota@gmail.com) : Mai 06, 2014 - 02:35
(Informações sobre o membro | Enviar uma mensagem)
Utilizei a solução e funcionou muito bem para D7. Apenas comentei a linha
//Application.MainFormOnTaskbar := True;

Não entendi porque o edit box perde o contorno quando coloco o form em outro projeto. No projeto original e recompilado em D7, o edit box fica com contorno.Por que?

Abraço e Parabéns.


por: lperrelli (luiz.perrelli@gmail.com) : Mar 27, 2017 - 11:14
(Informações sobre o membro | Enviar uma mensagem)
Muito bom, amigo. Parabéns!
Essa solução funciona bem tanto no windows 32bits como no windows 64bits. E o download do projeto pronto com o código ajudou bastante.
A outra solução que eu tinha, usando uma conexão ADO para acessar o LDAP, estava ok para o windows 32bits, mas no 64bits não funcionava corretamente (sempre retornar true, mesmo para um login inválido).
Abs!
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados