다음을 통해 공유


Active Directory e Form Authentication em Web Forms

Neste artigo tento demonstrar como implementar segurança para sites em ASP.Net da forma mais completa, para isso foi criado um protótipo que esta disponível no Codplex e possui a seguinte estrutura.

Começando o projeto “framework” que é a biblioteca de classes que possui as classes de acesso ao Active Directory. Diagrama abaixo demonstra a relação entre essas classes.


O segundo projeto é o site que irá utilizar o “framework” para autenticar no Active Directory. Este projeto possui duas páginas onde a página Login.aspx realiza a autenticação e a página Inicio.aspx é a página para onde é redirecionado após a autenticação.
O Trecho de código a seguir é a implementação do evento do botão que faz a autenticação e que está na página Login.aspx

using framework;

......

protected void Button1_Click(object sender, EventArgs e)
{            
   lblMensagem.Text = null;
   //...
   LDAP _autenticar = new LDAP("ldap=<ip AD>;domain=<domínio>");
   AuthenticationStatus _status = _autenticar.validate(txtLogin.Text, txtSenha.Text);
   //...
   if (_status)                                          //Se válido
       this.singIn(_status.user.userName);
   else if (_status == AuthenticationIndex.PasswordFail)//Se login ou senha incorreto
       lblMensagem.Text = "Login ou senha inválido(s)";
   else                                                 //Se qualquer outro erro
       lblMensagem.Text = _status.message;                
}

Outra questão importante de destacar é a configuração do Web.config para a configuração da segurança que no protótipo esta da seguinte forma.

<configuration>
  <system.web>
    ... ... ...
    <authentication mode="Forms">
      <forms
    loginUrl="~/Login.aspx" defaultUrl="~/Inicio.aspx" protection="All"
    timeout="2880" name="frmLogin" path="/" requireSSL="false"
    slidingExpiration="true" enableCrossAppRedirects="false"
      />
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>
    <machineKey
    validationKey="AutoGenerate" decryptionKey="AutoGenerate"
    validation="SHA1"
    />
  </system.web>
</configuration>