ASP.NET - Web.Config : Forms Authentication


Neste artigo irei abordar um assunto de interesse de quase 100% dos analistas e desenvolvedores de sistemas voltados para a WEB, a segurança. A plataforma .Net implementa no ASP .Net uma autenticação revolucionária em aspecto de segurança e formas de fazê-las.

Para poder realizar estes novos recursos, os desenvolvedores podem contar com uma classe inteira para esta função a System.Web.Security.

Apenas como título de comentário a respeito de Autenticação e validação, que são duas coisas muito semelhantes, mas totalmente diferente, as definições a seguir foram retirados do Pequeno Dicionário Enciclopédico Koogan Larousse, autenticar: verificar a legitimidade das informações; validar: é reconhecer a validade das informações.

<authentication mode="Forms">


Existem 4 parâmetros que o authentication mode aceita

None: Não existe nenhuma forma de autenticação do usuário;

Windows: O aplicativo ASP .Net utiliza o IIS (Internet Information Service) para autenticar os usuários e senhas. O IIS trabalha de três formas: Básico, Digest e Integrado com o Windows, sendo que cada um destes a opção de usuário anônimo deverá estar desabilitada e condizente com o aplicativo ASP .Net

Passport: Este tipo de autenticação é utilizado através dos servidores da Microsoft, de forma única e centralizada. O usuário e a senha são as mesmas que o cliente utiliza para acessar o Hotmail e outros sites da Microsoft.

Form: Esta forma é a mais utilizada e a que deixa o programador mais livre para poder implementar o seu código de autenticação muitas vezes esta forma está diretamente ligada com um banco de dados (SQL Server, Oracle,etc).

O authentication mode possui somente o atributo mode para ser implementado, mas possui um outro node, o <form> que possui outros atributos, dentre eles somente irei comentar sobre os quatro principais,
name, loginUrl, timeout e path

name: Este atributo terá o nome do principal Cookie pelo qual o aplicativo ASP .Net fará a autenticação dos usuários

loginUrl: neste atributo é informado qual a página ASPX que será redirecionada após a autenticação caso não tenha ocorrido ou que tenha ocorrida sem sucesso. Este campo é muito interessante, caso o usuário queira acessar alguma página sem passar pela página de login, o mesmo será direcionado para a página neste atributo informado.

timeout: este atributo é responsável por cuidar do tempo que o aplicativo poderá demorar para realizar a autenticação, caso contrário não sairá da página de login. A unidade de medida para este tempo é o segundo.

path: indica qual diretório virtual do IIS que a autenticação será utilizada.

Exemplo:

<autentication mode="Forms">
     <forms name="AutoCookie" loginUrl="Login.aspx" timeout="60" path="/">
     </forms>
</authentication>


Entretanto para que a autenticação seja feita de forma completa não basta somente configurar corretamente o Web.Config é necessário codificar alguns trechos de código nas páginas ASPX, como exemplificarei logo abaixo.

O exemplo de código deverá ser implementado no evento click do botão OK, imaginando-se que esta tela Login.aspx possui dois controles TextBox, dois Labels e dois Buttons, sendo um deles o Button OK.

  a variável iResult deverá receber o código de identificação do usuário, _
' caso o usuário ou senha
‘ sejam inválidos , a variável deverá receber o valor 0 (zero).
 
Dim iResult as Integer
If iResult > 0 Then
     Dim authTicket As New FormsAuthenticationTicket(iResult.ToString, False, 15)
     Dim encryptTicket = FormsAuthentication.Encrypt(authTicket)
Dim authCookie As HttpCookie = New HttpCookie(_
FormsAuthentication.FormsCookieName, encryptTicket)
     Response.Cookies.Add(authCookie)
     Session.Add("Usuario", iResult.ToString)
     FormsAuthentication.RedirectFromLoginPage(iResult.ToString, False)
Else
     Me.txtSenha.Text = ""
     Me.txtUsuario.Text = ""
    
Me.lblMensagem.Text = "Usuário ou Senha incorreta. Tente novamente!"
End If

 


A variável authTicket do tipo FormsAuthenticationTicket é a que faz a maior parte do trabalho de autenticação, uma vez que nesta variável terá armazenado o Name, neste nosso exemplo estou armazenando o valor de identificação do usuário, o segundo parâmetro é se esta variável será persistente ou não, no exemplo não será persistente e o último parâmetro é o timeout de acesso, com a unidade de medida em minutos. Este último é muito interessante, uma vez se o usuário ficar mais que o tempo definido neste parâmetro sem acessar o servidor, o aplicativo redireciona para a página de login.

 

encrypTicket é uma variável do tipo FormsAuthentication.Encrypt que tem como parâmetro no seu construtor uma variável do tipo FormsAuthenticationTicket. Esta variável é de suma importância no que tange o assunto segurança, pelo motivo da criptografia realizada nesta variável.

 

A última variável importante é a do tipo HttpCookie, aonde este possui dois parâmetros no seu construtor, o nome do Cookie e a variável do tipo FormsAuthentication.Encrypt, o primeiro parâmetro é recuperado do próprio Web.Config, do atributo name do note <Form>


Depois da autenticação e da criação das variáveis, a variável do tipo HttpCookie deverá ser enviada para a próxima página, com o
Response

 

Autor do Artigo

 

Jefferson Gobi Barbosa

Líder do GUP .NET

Grupo de Usuários do Paraná – Plataforma .NET

http:://www.gupnet.com.br

 

Colunista do site Linha de Código

http://www.linhadecodigo.com.br

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??


José Carlos Macoratti