Para que serve o Web.Config?

Neste artigo vamos mostrar para que e como funciona o arquivo Web.Config.

Web.Config é um arquivo especial que configura o comportamento de sua aplicação ASP.NET e está no formato XML podendo ser editado facilmente com um editor comum, como o bloco de notas.

Cada aplicativo Web que você cria, pode ter o seu próprio arquivo Web.Config, e as informações deste arquivo valem para o diretório corrente e seus subdiretórios.

Visualizando

<?xml version="1.0" encoding="UTF-8" ?> <configuration> <system.web> </system.web> </configuration>

Configurações de segurança

Autenticação é o processo de identificação positiva dos clientes do aplicativo. Esses clientes podem incluir usuários, serviços, processos ou computadores. Os clientes autenticados são chamados elementos de segurança. A autenticação ocorre em todas as camadas de um aplicativo da Web distribuído. Inicialmente os usuários finais são autenticados pelo aplicativo da Web, em geral com um nome de usuário e uma senha. Eles realizam a autenticação para validar e processar a solicitação.

Autorização é o processo que controla a quais recursos e operações o cliente autenticado terá permissão de acesso. Esses recursos incluem arquivos, bancos de dados, tabelas, linhas etc., juntamente com os recursos no nível do sistema, como chaves do Registro e dados de configuração.

Hierarquia

Modos de autenticação do ASP.NET

Os modos de autenticação do ASP.NET são Windows, baseada em formulário, Passport e Nenhuma.

Autenticação do Windows. Nesse modo de autenticação, o ASP.NET depende do IIS para autenticar usuários e criar um símbolo de acesso do Windows visando representar a identidade autenticada. O IIS fornece os seguintes mecanismos de autenticação:

A autenticação baseada em formulário envia o nome do usuário e a senha ao servidor Web em texto sem formatação. Portanto, você deve usar a autenticação baseada em formulário em conjunto com um canal protegido por SSL. Para uma proteção contínua do cookie de autenticação transmitido nas solicitações subseqüentes, é necessário considerar o uso de SSL em todas as páginas do aplicativo e não apenas na página de logon.

Nenhuma. Nenhuma indica que você não quer autenticar usuários ou que está usando um protocolo de autenticação personalizado.

<?xml version="1.0" encoding="UTF-8" ?> <configuration> <system.web> <authentication mode="Windows"/> <authorization> <allow users="server\administrado,server\user1,server\user2" /> <deny users="*" /> </authorization> </system.web> </configuration>

Configurar IIS

  1. Desabilitar conta anônima.
  2. Habilitar Autenticação básica.
  3. Habilitar Autenticação integrada do Windows.

Criar usuários

  1. user1 - 123123
  2. user2 - 123123

Geral no web.config

Como todo arquivo XML,este possui marcas ou tag. A principal destas Tags é a <configuration>, que abrange dentro dela todas as demais configurações de sua máquina.

Dentro do elemento <configuration>, temos o elemento <system.web>, que contém informações de como a sua aplicação deve manipular os processos de um aplicativo ASP.NET. Algumas opções de <system.web> são: <compilation>, que instrui como a máquina deve compilar o seu programa.NET. Desta forma, a linha <compilation strict="true" explicit="true" /> instrui o compilador a gerar erros se encontrar alguma variável não declarada (explicit="true"), e a não fazer conversão automática de tipos de dados (strict="true"). São equivalentes as opções Option Explicit e Option Strict das aplicações VB/Access de versões anteriores. Há ainda a opção de gerar informações de depuração (em outras palavras, executar com debug), através da linha <compilation debug="true" />.

Note que você pode inserir vários atributos na mesma tag. Se você fosse configurar a sua aplicação com os dois últimos parâmetros apresentados, deveria ter a linha <compilation strict="true" explicit="true" debug="true" />.

Um outro elemento bastante utilizado é o <customErrors>, que instrui o que programa deve fazer em caso de erros. Para simplesmente redirecionar a aplicação no caso de ocorrer algum erro, basta acrescentar a seguinte linha: <customErrors defaultRedirect="PaginaDeErro.aspx" /> que irá redirecionar a execução da aplicação para a página PaginaDeErro.aspx. Note que esta página é uma página ASP.NET como qualquer outra, e através do uso de eventos e controles, você pode tratar este erro, gerar um log, enviar um email para o administrador, entre outras coisas. O exemplo acima transfere a execução para esta página no caso de qualquer erro, mas podemos parametrizar este elemento para gerar redirecionamentos para páginas específicas, de acordo com o tipo de erro, conforme o código a seguir:

<customErrors mode="RemoteOnly"> <error statusCode="403" redirect="AcessoRestrito.aspx" /> </customErrors>

Esta linha que acabamos de ver também mostra um outro atributo interessante do elemento <customErrors>, que é o RemoteOnly. Quando você configura este atributo para RemoteOnly, você faz com que os erros continuem surgindo em sua máquina local, mas que gerem redirecionamentos específicos para o usuário remoto. Muito útil para desenvolvimento. Por último. há ainda a opção customErrors="Off", que faz com que o ASP.NET apresente o erro para qualquer usuário, sem nenhum redirecionamento ou tratamento. <customErrors ="off"> esta opção é ideal quando estamos na etapa de desenvolvimento, pois não mascara o erro.

Importante: Não confunda este tratamento de erros com o tratamento Try...Catch...Finnaly, utilizado na codificação. O Try...Catch...Finnaly é utilizado para tratamento de erros de exceção do .NET Framework, enquanto o elemento customErrors é utilizado para manipular os erros HTTP do seu servidor web.

Um outro elemento que pode ser bastante útil é o <sessionState>. Com o sessionState, podemos configurar a aplicação Web para distribuir o controle de sessão para uma outra máquina ou serviço

<sessionState mode="StateServer" stateConnectionString="tcpip=www.OutraMaquina.com" /> <sessionState mode="StateServer" sqlConnectionString="tcpip=200.246.33.11:42333" />

O primeiro exemplo orienta a aplicação web a utilizar a máquina http://www.outramaquina.com/ para o armazenamento e gerenciamento das sessões. O segundo exemplo, orienta a aplicação para utilizar o SQL Server da máquina 200.246.33.11 (porta 42333) para gerenciar estas sessões. Estes exemplos evidentemente podem tornar a aplicação mais lenta, uma vez que utilizam uma nova comunicação para o gerenciamento do site, mas são excelentes quando você tem um volume excessivo de conexões simultâneas ou necessita de maior segurança de manutenção dos estados de sessão. Perde-se em velocidade, mas ganha-se em segurança.

Existem ainda os elementos de autenticação e autorização de um aplicativo web. Eles são respectivamente os elementos <authentication> e <authorization>. O authentication aceita quatro tipos diferentes de valores: none, Windows, Passport e Forms, como esse exemplo: <authentication mode="Windows" />.

Quando o atributo mode="none", nenhum tipo de autenticação é realizada. A autenticação Windows é ideal para intranets, pois utiliza do próprio sistema de segurança do Windows para identificar um usuário. É, contudo, pouco indicada para a internet, onde temos um número muito elevado de usuários. Para esses casos a autenticação baseada em formulários é a ideal, onde você pode especificar o form que se responsabilizará de identificar do usuário, como o exemplo a seguir:

<authentication mode="Forms"> <forms name="401kApp" loginUrl="/login.aspx" /> </authentication>

Por ultimo, a autenticação Passport é bem parecida com a autenticação baseada em forms, mas utiliza os servidores da Microsoft para essa finalidade.

A autenticação serve para identificar o usuário, já a autorização serve para informar o aplicativo se este possui direitos de acesso sobre o recurso solicitado. A autenticação possui dois elementos auxiliares, o <allow> e o <deny>, que como os próprios nomes indicam, servem para habilitar ou desabilitar um usuário (ou grupos de usuários) para um determinado recurso.

Um exemplo de autenticação seria:

<authorization> <allow users="*" /> </authorization>

Este exemplo habilita todos os usuários a utilizarem a aplicação. Note que o caracter asterisco significa todos os usuários. Há ainda o caracter ponto de interrogação, que significa todos os usuários anônimos. O exemplo abaixo nega autorização a qualquer usuário anônimo.

<authorization> <deny users="?" /> </authorization>

Você pode combinar mais de um elemento allow e deny dentro do elemento authorization. O .NET lê os elementos allow e deny de cima para baixo, de forma que se encontrar qualquer regra que impeça a utilização do recurso, ele retorna para a aplicação invalidando o acesso. Desta forma, o exemplo abaixo nega autorização a qualquer usuário não autenticado. Se ele já estiver autenticado, então a aplicação permite que ele utilize o recurso, seja lá quem ele for.

<authorization> <deny users="?" /> <allow users="*" /> </authorization>

Existem ainda muitos atributos para os elementos authentication e authorization, pois o uso destes elementos é bastante flexível. Um último elemento que eu gostaria de citar é o elemento <appSettings>, também localizado abaixo do elemento configuration, que serve para armazenas valores não voláteis do seu aplicativo web. Em exemplo seria

<appSettings> <add key="NomeDoAplicativo" value="Super Aplicativo de Gestão Empresarial" /> </appSettings>

Você pode ter vários elementos add dentro do seu elemento appSettings, de forma que eles funcionam como constantes globais do seu aplicativo. Para utilizar estes valores, você pode ter um código como a exemplificado a seguir:

Label1.Text = System.Configuration.ConfigurationSettings .AppSettings("NomeDoAplicativo")

Esta funcionalidade é muito semelhante as funções GetSetting e SaveSetting do Visual Basic de versões anteriores. É um lugar excelente para você armazenar informações de conexão com um banco de dados, por exemplo.

<appSettings> <add key="ConnectionString" value="Data Source=localhost; Initial Catalog=NorthWind" /> </appSettings>

Por último, gostaria de inserir um exemplo de arquivo web.config simples, apenas para você ter uma idéia geral de como ele se parece:

<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="ConnectionString" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MySystem\Database.mdb;Persist Security Info=False" /> </appSettings> <system.web> <compilation debug="true" defaultLanguage="vb" explicit="true" batch="true" batchTimeout="15" maxBatchSize="1000" maxBatchGeneratedFileSize="3000" numRecompilesBeforeAppRestart="15" strict="false" /> <authentication mode="Forms"> <forms name=".ASPXAUTH" protection="All" timeout="60" loginUrl="default.aspx" path="/" /> </authentication> <authorization> <deny users="?" /> </authorization> <httpRuntime useFullyQualifiedRedirectUrl="true" executionTimeout="90" maxRequestLength="4096" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" /> <deviceFilters> <filter name="isJScript" compare="javascript" argument="true" /> <filter name="isPocketIE" compare="browser" argument="Pocket IE" /> <filter name="isHTML32" compare="preferredRenderingType" argument="html32" /> </deviceFilters> <customErrors mode="Off" /> </system.web> </configuration>
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados