Segurana um assunto muito discutido atualmente. Com a popularizao da Internet, muitos foram os sistemas migrados para esta nova plataforma, mas infelizmente, na maioria das vezes, o aspecto Segurana foi deixado em segundo plano, seja por negligncia, por falta de conhecimento do novo modelo de aplicaes que a Web trouxe e suas implicaes no que se refere Segurana ou at mesmo por falta de ferramentas adequadas que facilitassem esse trabalho complexo. O fato que o desenvolvimento de aplicaes Web um mundo totalmente novo e diferente do mundo das aplicaes desktop, onde o ambiente no qual a aplicao seria executada era um ambiente controlado e mais seguro (pelo menos, teoricamente).
Como j foi dito, Segurana um assunto complexo e tambm muito abrangente (e porque no dizer, tambm muito interessante). Neste artigo, abordarei uma pequena rea, que engloba a Autenticao e Autorizao de usurios em uma aplicao Web desenvolvida em C#/ASP.NET. Explicarei quais so os tipos de autenticao disponveis no ASP.NET e veremos como o .NET Framework nos fornece vrias classes prontas para serem usadas, sem a necessidade de desenvolvermos nada do zero, sendo necessrio somente configurarmos algumas propriedades, poupando-nos tempo e, o mais importante, evitando erros que poderiam comprometer a Segurana de nossa aplicao.
Definindo Autenticao e Autorizao
Antes de prosseguirmos, precisamos definir dois conceitos fundamentais quando se fala de Segurana: Autenticao e Autorizao. Autenticao o processo de validar a identidade de um usurio para termos certeza de que ele quem realmente ele diz ser. Autorizao o processo de garantir direitos e restries a um determinado usurio, aps sua identificao feita no momento da autenticao.
O ASP.NET oferece algumas alternativas para a Autenticao. O mtodo de Autenticao que uma aplicao ASP.NET utiliza fica configurado no arquivo web.config, que um arquivo XML utilizado para diversas configuraes de aplicaes Web do .NET Framework e que fica na pasta do seu projeto. Veremos a seguir os diversos mtodos de Autenticao suportados pelo ASP.NET
Sem Autenticao
a forma mais simples de Autenticao, pois nenhuma Autenticao necessria, ou seja, todos os usurios tm acesso a qualquer parte da aplicao. Para configurar esse tipo de Autenticao em sua aplicao ASP.NET, altere a tag authentication do arquivo de configurao web.config para que fique conforme abaixo:
<authentication mode="None" />
Autenticao Windows
A Autenticao Windows permite autenticar um usurio baseado numa conta de usurio do Windows. Este tipo de Autenticao s tem sentido em ambientes controlados, como em uma Intranet. Para configurar esse tipo de Autenticao em sua aplicao ASP.NET, altere a tag authentication do arquivo de configurao web.config para que fique conforme abaixo:
<authentication mode="Windows" />
Neste caso, o verdadeiro responsvel pela autenticao do usurio o IIS (Internet Information Server - servidor Web da Microsoft). Por isso importante saber como configurar a Autenticao do IIS, que nos oferece quatro opes:
Anonymous Authentication: o IIS no faz nenhum tipo de autenticao, permitindo que qualquer usurio acesse a aplicao ASP.NET; Basic Authentication: o usurio tem que fornecer uma conta de usurio do Windows e senha, que so enviados em claro (sem criptografia) pela rede, o que a torna um tanto insegura. Digest Authentication: neste tipo de Autenticao, o usurio tambm tem que fornecer uma conta de usurio do Windows e senha, mas um algoritmo de hash (uma espcie de criptografia) aplicado na senha antes de ser enviada pela rede. Esse tipo de autenticao requer Internet Explorer 5.0 ou superior e que todas as contas de usurios do Windows estejam no Active Directory. Windows Integrated Authentication: neste tipo de Autenticao, a senha nunca transmitida pela rede, mas os usurios precisam de uma conta de usurio do Windows. a mais segura das opes.
Vamos um exemplo bem simples de Autenticao do IIS. Inicie o Visual Studio .NET, v ao menu File e escolha New New Project (ou pressione Ctrl + Shift + N). A janela New Project ser apresentada. Escolha Visual C# Projects e depois o template ASP.NET Web Application, conforme figura abaixo. O nome do nosso projeto ser SegASPNET. Depois de tudo configurado, clique em OK.
Abra o arquivo web.config da sua aplicao e procure pela tag authentication. Perceba que o padro a autenticao Windows do ASP.NET.
Agora, abra o Painel de Controle do Windows e d um duplo clique em Administrative Tools e depois um duplo clique em Internet Information Services. Ser aberto o gerenciador do IIS. No lado direito da tela, expanda os ns da Tree View at encontrar a pasta do projeto SegASPNET, que acabou de ser criado. Clique com o boto direito sobre a pasta e escolha Properties. Clique na guia Directory Security e na seo Anonymous access and authentication methods, clique no boto Edit. A janela abaixo ser mostrada:
Desmarque as opes Anonymous access e Integrated Windows authentication. Agora, marque a opo Basic Authentication. Voc receber uma mensagem explicando que este tipo de autenticao no seguro. Clique em Yes para continuar. Clique em OK duas vezes para fechar a janela de configurao.
Volte para o Visual Studio .NET e execute a aplicao SegASPNET. Ser apresentada uma tela pedindo um usurio do Windows e senha, conforme figura abaixo:
Volte novamente ao gerenciador do IIS e desfaa a alterao na Autenticao, voltando para a situao original, ou seja, com as opes Anonymous access e Integrated Windows authentication habilitadas. Execute novamente a aplicao e perceba que agora a janela que pedia usurio e senha no aparece mais.
Autenticao Passport
Este tipo de autenticao utiliza o servio Passport da Microsoft. Quando voc utiliza este tipo de Autenticao, todo processamento ocorre nos servidores do Passport. Este um servio pago e maiores detalhes sobre ele podem ser obtidos em http://www.passport.net. Para configurar esse tipo de Autenticao em sua aplicao ASP.NET, altere a tag authentication do arquivo de configurao web.config para que fique conforme abaixo:
<authentication mode=" Passport" />
Um maior aprofundamento deste tipo de Autenticao foge do escopo deste artigo.
Concluso
Nesta primeira parte do artigo vimos os conceitos de Autenticao e Autorizao. Tambm vimos trs tipos de Autorizao do ASP.NET: nenhuma, Windows (e os mtodos utilizados pelo IIS) e Passport. Na segunda parte deste artigo, explicarei sobre o mtodo de Autenticao do ASP.NET que est faltando e o mais utilizado no desenvolvimento de aplicaes Web: Forms Authentication.
Referncias
ASP.NET Web Application Security http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaspnetwebapplicationsecurity.asp
ASP.NET Authentication http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconASPNETAuthentication.asp
Sobre o Autor
Ricardo Oneda Pereira de Toledo (ropt@hotmail.com) formado em Processamento de Dados pela Faculdade de Tecnologia de So Paulo e MCAD - Microsoft Certified Application Developer, com nfase em aplicaes Web com C# e Banco de Dados SQL Server 2000. Atualmente trabalha como Analista de Sistemas, desenvolvendo aplicaes Web nas linguagens C e C++.