Você está na página 1de 11

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 aplicao 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 prprio arquivo Web.Config, e as informaes deste arquivo valem para o diretrio corrente e seus subdiretrios,

Visualizando:

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>

<system.web>

</system.web>

</configuration>

fig r e

e eg r

Autenticao o processo de identificao positiva dos clientes do aplicativo. Esses clientes podem incluir usurios, servios, processos ou computadores. Os clientes autenticados so chamados elementos de segurana. A autenticao ocorre em todas as camadas de um aplic ativo da Web distribudo. Inicialmente os usurios finais so autenticados pelo aplicativo da Web, em geral com um nome de usurio e uma senha. Eles realizam a autenticao para validar e processar a solicitao. Autorizao o processo que controla a qu recursos e operaes o cliente ais autenticado ter permisso de acesso. Esses recursos incluem arquivos, bancos de dados, tabelas, linhas etc., juntamente com os recursos no nvel do sistema, como chaves do Registro e dados de configurao.

Hierarquia:

Modos d aut ntica o do ASP.NET

Os modos de autenticao do ASP.NET so Windows, baseada em formulrio, Passport e Nenhuma.

Aut ntica o do Windows.Nesse modo de autenticao, o ASP.NET depende do IIS para autenticar usurios e criar um smbolo de acesso do Windows visando representar a identidade autenticada. O IIS fornece os seguintes mecanismos de autenticao:

credenciais na forma de nome de usurio e senha para provar sua identidade. As credenciais do usurio s o transmitidas do navegador para o servidor Web em um formato codificado no criptografado Base64. Como o servidor Web obtm as credenciais no criptografadas do usurio, ele pode emitir chamada remota (por exemplo, para acessar computadores e recursos) usando as credenciais do usurio.

semelhante autenticao bsica, exceto que em vez de transmitir as credenciais do usurio no criptografadas do navegador para o servidor Web, ela transmite um hash das credenciais. Conseqentemente, ela mais segura, embora requeira o Internet Explorer 5.0 ou um cliente mais recente e configura es espec ficas do servidor.

Windows (Kerberos ou NTLM dependendo da configurao do cliente e do servidor) usa troca criptogrfica com o Internet Explorer do usurio para confirmar a identidade deste. Somente o Internet Explorer tem suporte para ela (o Netscape Navigator no), assim, ela costuma ser usada apenas em cenrios de Intranet, onde o software cliente pode ser controlado. Ela usada apenas pelo servidor Web se o acesso annimo estiver desativado ou for negado pelas permiss es do sistema de arquivos do Windows.

Au en icao in egrada do Windows. A autenticao integrada do

 

Au

n icao resumida. A autenticao resumida, lanada com o IIS 5.0,



Au



bsica. A autentica

bsica requer que o usurio fornea

Au en icao de certificado. A autenticao de certificado usa os certificados de cliente para identificar positivamente os usurios. O certificado de cliente passado pelo navegador do usurio (ou aplicativo cliente) para o servidor Web. (No caso dos Web Services, o cliente passa o certificado por meio de uma propriedade ClientCertificates do objeto HttpWebRequest). Ento, o servidor Web extrai a identidade do usurio do certificado. Essa abordagem depende de um certificado de cliente estar instalado no computador do usurio e, portanto, ela costuma ser mais usada em cenrios de Intranet ou Extranet, onde a populao de usurios bem conhecida e controlada. O IIS, ao receber um certificado de cliente, pode mape-lo para uma conta do Windows.

Autenticao annima. Caso voc no necessite autenticar os clientes (ou implementar um esquema personalizado de autenticao), o IIS poder ser configurado para a autenticao annima. Nesse caso, o servidor Web cria um s mbolo de acesso do Windows para representar todos os usurios annimos com a mesma conta annima (ou de convidado). A conta annima padro a iusr_nomedamaquina , onde nomedamaquina o nome NetBIOS do computador especificado durante a instalao.

Autenticao Passport. Nesse modo de autenticao, o ASP.NET usa os servios de autenticao centralizados do Microsoft Passport. O ASP.NET fornece uma funcionalidade alternativa conveniente atravs do SDK (kit de desenvolvimento de software) do Microsoft Passport, que deve ser instalado no servidor Web.

Autenticao baseada em formulrio . Esse mtodo usa redirecionamento do cliente para encaminhar usurios no autenticados a um formulrio HTML especificado que permite inserir as credenciais (geralmente o nome de usurio e senha). Essas credenciais so validadas e uma permisso de autenticao gerada e retornada ao cliente. A permisso de autenticao mantm a identidade do usurio e, opcionalmente, uma lista de fun es das quais ele membro durante toda a sesso. A autenticao baseada em formulrio algumas vezes usada exclusivamente para a personalizao do site. Nesse caso, necessrio gravar poucos cdigos personalizados, pois o ASP.NET trata a maior parte do processo automaticamente

"

com uma configurao simples. Nos cenrios de personalizao, o cookie precisa manter apenas o nome do usurio. Observao: A autenticao baseada em formulrio envia o nome do usurio e a senha ao servidor Web em texto sem formatao. Portanto, voc deve usar a autenticao baseada em formulrio em conjunto com um canal protegido por SSL. Para uma proteo contnua do cookie de autenticao transmitido nas solicita es subseqentes, necessrio considerar o uso de SSL em todas as pginas do aplicativo e no apenas na pgina de logon.

Nenhuma. Nenhuma indica que voc no quer autenticar usurios ou que est usando um protocolo de autenticao personalizado.

Exemplo: Aut ntica o do Windows

W b.con i :

<?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> Con i u a IIS:

Criar usurios:

1. user1 - 123123 2. user2 - 123123

Como todo arquivo XML,este possui marcas ou tag. A principal destas Tags a <con i uration>, que abrange dentro dela todas as demais configuraes de sua mquina. Dentro do elemento <con i uration>, temos o elemento <system.web>, que contm informaes de como a sua aplicao deve manipular os processos de um aplicativo ASP.NET.

Geral no web.con i

3.

Habilita Autenticao integrada do Windows.

2.

Habilita Autenticao bsica.

1.

Desabilita conta annima.

0 0 ) 7

Algumas opes de <system.web> so: <compilation>, que instrui como a mquina deve compilar o seu programa.NET. Desta forma, a linha <compilationstrict="true" explicit="true" /> instrui o compilador a gerar erros se encontrar alguma varivel no declarada (explicit="true"), e a no fazer converso automtica de tipos de dados (strict="true"). So equivalentes as opes OptionExplicit e OptionStrict das aplicaes VB/Access de versesanteriores. H ainda a opo de gerar informaes de depurao (em outras palavras, executar com debug), atravs da seguinte linha: <compilation debu ="true" /> Note que voc pode inserir vrios atributos na mesma tag. Se voc fosse configurar a sua aplicao com os dois ltimos parmetros apresentados, deveria ter a seguinte linha <compilationstrict="true" explicit="true" debu ="true" /> Um outro elemento bastante utilizado o <customErrors>, que instrui o que programa deve fazer em caso de erros. Para simplesmente redirecionar a aplicao no caso de ocorrer algum erro, basta acrescentar a seguinte linha <customErrorsdefaultRedirect="Pa inaDeErro.aspx" /> que ir redirecionar a execuo da aplicao para a pgina PaginaDeErro.aspx. Note que esta pgina uma pgina ASP.NET como qualquer outra, e atravs 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 execuo para esta pgina no caso de qualquer erro, mas podemos parametrizar este elemento para gerar redirecionamentos para pginas especficas, de acordo com o tipo de erro, conforme o cdigo a seguir:

<customErrors mode="RemoteOnly"> <error statusCode="403" redirect="AcessoRestrito.aspx" /> </customErrors> Esta linha que acabamos de ver tambm 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 mquina local, mas que gerem redirecionamentos especficos para o usurio remoto. Muito til para desenvolvimento. Por ltimo. h ainda a opo customErrors="Off", que faz com que o ASP.NET apresente o erro para qualquer usurio, sem nenhum redirecionamento ou tratamento.

<customErrors ="off"> Esta opo ideal quando estamos na etapa de desenvolvimento, pois no mascara o erro. Importante: No confunda este tratamento de erros com o tratamento Try...Catch...Finnaly, utilizado na codificao. O Try...Catch...Finnaly utilizado para tratamento de erros de exceo 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 aplicao Web para distribuir o controle de sesso para uma outra mquina ou servio

<sessionStatemode="StateServer" stateConnectionStrin ="tcpip=www.OutraMaquina.com" /> <sessionStatemode="StateServer" sqlConnectionStrin ="tcpip=200.246.33.11:42333" /> O primeiro exemplo orienta a aplicao web a utilizar a mquina http://www.outramaquina.com/ para o armazenamento e gerenciamento das sesses. O segundo exemplo, orienta a aplicao para utilizar o SQL Server da mquina 200.246.33.11 (porta 42333) para gerenciar estas sesses. Estes exemplos evidentemente podem tornar a aplicao mais lenta, uma vez que utilizam uma nova comunicao para o gerenciamento do site, mas so excelentes quando voc tem um volume excessivo de conexes simultneas ou necessita de maior segurana de manuteno dos estados de sesso. Perde-se em velocidade, mas ganha-se em segurana. Existem ainda os elementos de autenticao e autorizao de um aplicativo web. Eles so respectivamente os elementos <authentication> e <authorization>. O authentication aceita quatro tipos diferentes de valores: none, Windows, Passport e Forms, como o exemplo a seguir: <authenticationmode="Windows" /> Quando o atributo mode="none", nenhum tipo de autenticao realizada. A autenticao Windows ideal para intranets, pois utiliza do prprio sistema de segurana do Windows para identificar um usurio. , contudo, pouco indicada para a internet, onde temos um nmero muito elevado de usurios. Para esses casos a autenticao baseada em formulrios a ideal, onde voc pode especificar o form que se responsabilizar de identificar do usurio, como o exemplo a seguir: <authenticationmode="Forms"> <formsname="401kApp" lo inUrl="/lo in.aspx" /> </authentication>

Por ultimo, a autenticao Passport bem parecida com a autenticao baseada em forms, mas utiliza os servidores da Microsoft para essa finalidade. A autenticao serve para identificar o usurio, j a autorizao serve para informar o aplicativo se este possui direitos de acesso sobre o recurso solicitado. A autenticao possui dois elementos auxiliares, o <allow> e o <deny>, que como os prprios nomes indicam, servem para habilitar ou desabilitar um usurio (ou grupos de usurios) para um determinado recurso. Um exemplo de autenticao seria:

<authorization> <allowusers="*" /> </authorization> Este exemplo habilita todos os usurios a utilizarem a aplicao. Note que o caracter asterisco significa todos os usurios. H ainda o caracter ponto de interrogao, que significa todos os usurios annimos. O exemplo abaixo nega autorizao a qualquer usurio annimo. <authorization> <denyusers="?" /> </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 impea a utilizao do recurso, ele retorna para a aplicao invalidando o acesso. Desta forma, o exemplo abaixo nega autorizao a qualquer usurio no autenticado. Se ele j estiver autenticado, ento a aplicao permite que ele utilize o recurso, seja l quem ele for. <authorization> <denyusers="?" /> <allowusers="*" /> </authorization>

Existem ainda muitos atributos para os elementos authentication e authorization, pois o uso destes elementos bastante flexvel Um ltimo elemento que eu gostaria de citar o elemento <appSettin s>, tambm localizado abaixo do elemento configuration, que serve para armazenas valores no volteis do seu aplicativo web. Em exemplo seria <appSettin s> <addkey="NomeDoAplicativo" value="Super Aplicativo de Gesto Empresarial" />

</appSettin s> Voc pode ter vrios 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 cdigo como a exemplificado a seguir: Label1.Text = System.Confi uration.Confi urationSettin s.AppSettin s("NomeDoAplicativo") Esta funcionalidade muito semelhante as funes GetSetting e SaveSetting do Visual Basic de verses anteriores. um lugar excelente para voc armazenar informaes de conexo com um banco de dados, por exemplo. <appSettin s> <addkey="ConnectionStrin " value="Data Source=localhost; InitialCatalo =NorthWind" /> </appSettin s>

Por ltimo, gostaria de inserir um exemplo de arquivo web.config simples, apenas para voc ter uma idia geral de como ele se parece: Ex: eral

<?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>

B B

<authorization> <deny users="?" /> </authorization> <httpRuntimeuseFullyQualifiedRedirectUrl="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>