Segurança em ASP.NET Utilizando Forms Authentication

Neste artigo, abordaremos apenas o recurso Autenticação Forms (Forms Authentication).

A segurança é um dos temas de maior importância no desenvolvimento de uma aplicação. Com o crescimento da Internet e o aumento do número de usuários conectados, é cada vez mais eminente o risco de invasão de uma aplicação. Mesmo que o servidor da aplicação esteja protegido por softwares, como o firewall, devemos aumentar ainda mais a segurança e proteger a aplicação também contra acessos indevidos de usuários não-credenciados. Isso quer dizer que um usuário só deverá visualizar uma página se realmente tiver autorização para fazê-lo.

O ASP.NET trouxe um novo modelo de segurança para a sua aplicação Web, que pode ser dividido em duas etapas básicas:

Na autenticação, o usuário será validado de acordo com uma base de usuários residentes em um repositório de usuários Windows, armazenados em arquivo XML ou cadastrados em uma base dados SQL. Independentemente do meio de armazenamento utilizado, caberá ao desenvolvedor definir o melhor mecanismo a ser usado, levando sempre em consideração o cenário de uso da aplicação.

Após a identificação do usuário, ocorre o processo de autorização, que consiste em definir se esse usuário terá ou não acesso ao recurso solicitado. Isso significa que o fato de o usuário inserir as devidas credenciais não garante que ele terá acesso ao recurso solicitado. A Figura 1 demonstra o modelo de segurança e apresenta um outro recurso, que consiste em utilizar a camada SSL (Secure Socket Layer) para tornar mais seguro o tráfego de dados entre o servidor e o cliente. Neste artigo, abordaremos apenas o recurso Autenticação Forms (Forms Authentication).

Figura 1. Modelo de segurança ASP.NET.

Quem trabalhou com ASP sabe muito bem como é difícil implementar segurança na aplicação. Para isso, era preciso no mínimo criar um código e replicá-lo em todas as páginas, utilizando funções juntamente com variáveis Sessions ou Cookies. Normalmente, um site pode conter diversos tipos de páginas de dados, cadastro, relatórios e informações. Ao tentar acessar uma página protegida, o usuário é redirecionado para uma página padrão de login (veja a Figura 2). Após validar a senha, o ASP.NET cria o Cookie de autenticação e o usuário é automaticamente redirecionado para a página solicitada. Esse tipo de autenticação é um dos mais utilizados no ASP.NET devido à sua facilidade de implementação e à compatibilidade com os diversos cenários de intranet e internet.

Figura 2. Visualização Login.aspx

Implementando página Login.aspx

Para criar uma página de login como a da Figura 2, abra o Visual Studio .NET, crie uma aplicação ASP.NET e, no Solution Explorer, adicione um novo formulário (Add / Add Web Form) denominado login.aspx, contendo os seguintes controles: dois TextBox (ID=txtUsuario e ID=txtSenha TextMode=Password), dois Label (Text=Usuário e Text=Senha) e um LinkButton (Text=Confirmar ID=lnkConfirma).

Para inserir o código, dê um duplo clique no LinkButton (ID=lnkConfirma) e digite o código da Listagem 1. Cabe ressaltar que, antes disso, é necessário referenciar o namespace System.Web.Security para que possamos ter acesso à classe Security. Fazemos isto por meio do comando Imports, que é adicionado sempre no início da página. A explicação encontra-se na própria listagem.

Listagem 1. Codificando arquivo login.aspx.vb
 
Utilizar NameSpace: System.Web.Security

Imports System.Web.Security


Public Class login

  Inherits System.Web.UI.Page


Private Sub lnkConfirma_Click(_

   ByVal sender As System.Object, _

   ByVal e As System.EventArgs) _

   Handles btnConfirmar.Click

  'Este código está verificando o usuário e senha

  If txtUsuario.Text = "Convidado" And _

     txtSenha.Text = "1234" Then

     'Em caso de acesso autorizado, chamamos o

     'método abaixo que cria o cookie de autenticação

     'e redireciona usuário para pagina de origem

     FormsAuthentication.RedirectFromLoginPage( _

        txtUsuario.Text, False)

  End If

End Sub
 

End Class
            

Pronto, a página de login já está montada. Como neste exemplo não estamos utilizando nenhum banco de dados, o usuário deve digitar usuário "Convidado" e senha "1234" para ter acesso à aplicação. Para trabalhar com banco de dados, você só precisa incluir o código de validação no banco de dados.

Para que a autenticação entre em ação, basta mais uma simples configuração no arquivo web.config. Para quem não conhece esse arquivo, ele é um novo recurso (em formato XML) oferecido pelo ASP.NET para efetuar as configurações de sua aplicação por meio de elementos, tal como informações de acesso a banco de dados. É possível alterar este arquivo a qualquer momento, mas fique atento para o fato de que o ASP.NET monitora as alterações e reinicializa a aplicação web sempre que detecta uma alteração.

Tabela 1. Antes de ir para o web.config, vamos analisar nosso primeiro elemento, denominado.
(web.config)
Mode Indica o tipo de autenticação a ser utilizada, aceita os seguintes parâmetros: Windows|Forms|Passport|None
Name Nome do cookie. Use qualquer nome, mas para o caso de várias aplicações que utilizam a mesma autenticação, use o mesmo cookie e altere para definir o mesmo algoritmo de codificação usado nas informações no cookie
Path Caminho utilizado para o cookie. Esse parâmetro é case-sensitive e uma configuração errada pode gerar erros; o valor padrão é "/"
LoginUrl Informa a url da página de login. Ex: login.aspx; se for omitido, buscará por default.aspx
Protection Indica o nível de proteção das informações no cookie; o recomendado é "ALL"
Timeout Tempo que o cookie vai expirar no navegador (Browser)

Para implementar a autenticação e a autorização no arquivo web.config, localize as tags e e modifique-as de acordo com a Listagem 2.

Dentro do elemento o atributo "deny" e "?" bloqueia acesso de usuários não autenticados. Para bloquear todos os usuários troque o “?” (interrogação) pelo "*" (asterisco). A partir daí, você pode tentar abrir qualquer página de sua aplicação e o usuário será automaticamente redirecionado para a página de login (login.aspx). Uma vez validadas as credenciais (Usuário=Convidado e Senha=1234), o usuário será redirecionado para a página solicitada. Até aqui sua aplicação já está protegendo o acesso a todas páginas *.aspx.

Finalizando Login com segurança

Para garantir que o usuário finalize a aplicação com segurança, inclua o namespace System.Web.Security e chame o método FormsAuthentication.SignOut em qualquer página para que o ASP.NET remova o cookie de autenticação. Feito isso, basta você usar o comando Response.Redirect (”login.aspx”) para levar o usuário para tela de Login.

Clique aqui para ler todos os artigos desta edição

Artigos relacionados