Você está offline; aguardando reconexão

Permissões comuns de solução de problemas e questões relacionadas à segurança no ASP.NET

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 910449
Coluna de voz de suporte do ASP.NET

Solucionando problemas de permissões comuns e problemas de segurança no Microsoft ASP.NET

Para personalizar esta coluna às suas necessidades, gostaríamos de convidá-lo a enviar suas idéias sobre tópicos que te interessam e problemas que você desejaria ver abordados em futuros artigos da Base de Conhecimento e nas colunas de Suporte. Você pode enviar suas idéias e comentários usando o Peça para ele formulário. Há também um link para o formulário na parte inferior desta coluna.
Olá, aqui é A.G de Vignesh da equipe do ASP.NET. Bem-vindo à coluna voz de suporte do ASP.NET! Ter sido forover um Developer Support Engineer dois anos agora na Microsoft e gastei o meu tempo concentrando-se em ASP.NETand Serviços de Informações da Internet da Microsoft (IIS).

O foco desta coluna não será explicar ASP.NETsecurity, mas para destacar algumas dicas e técnicas para solução de problemas que willhelp a isolar e resolver algumas das permissões comuns e scenariosthat de segurança que aqui vemos no Atendimento Microsoft. Permissões e problemas relacionados à segurança no ASP.NET são verywell documentado. Na verdade, haverá um bom número de pessoas que mighthave o mesmo problema antes de você se deparar. Portanto, a intenção é referente a esta coluna ser um bom lugar tofind relevantes e exaustiva informações sobre a segurança do ASP.NET. Isno há melhor se sentindo que corrigir o problema sozinho.

Ferramentas úteis

Antes de tentar corrigir qualquer coisa que for interrompida, você precisa tofamiliarize-se com algumas ferramentas que ajudarão você a reduzir a theissue. Em nosso caso, estamos estaria interessados em ferramentas como o FileMon, RegMon, limites auditoria. Para obter mais informações sobre FileMon, visite o seguinte site da Microsoft:Para obter mais informações sobre RegMon, visite o seguinte site da Microsoft:

Fazer uma busca detalhada para isolar o problema

  • O aplicativo já funcionou alguma vez? Se Sim, depois que changedthat poderia ter feito a quebra de aplicativos? É possível que as atualizações ou de atualizações de software foram aplicadas no servidor. Uma implementação de código também pode havecaused o problema.
  • Páginas simples. HTML e. asp servem do IIS?
  • O aplicativo foi migrado para ofIIS uma versão diferente?
  • Fazer outros aplicativos ASP.NET no momento da falha do servidor com o mesmo erro? Este é o único aplicativo falha?
  • O problema ocorre para todos os usuários ou apenas determinados usuários?
  • É o problema pode ser reproduzido durante a navegação localmente no servidor theWeb ou ser reproduzido para apenas alguns clientes?
  • Se você estiver usando representação, em seguida, o impersonateduser tem o acesso necessário ao recurso?
As perguntas acima são úteis para diagnosticar um problema.Se você estiver lançando o problema em qualquer um dos fóruns do ASP.NET e se youalready têm as respostas para a maioria dessas perguntas, é provável que youwill obter um ponteiro rápido ou solução para seu problema. A chave é lançar o erro de rastreamento de pilha do thewhole ASP.NET, se aplicável, em vez de dizer "eu sou gettingan erro de acesso negado ao tentar executar o aplicativo ASP.NET. Pode anyonehelp?" É muito mais fácil para alguém ver o rastreamento de pilha e permitir que youpointers quando eles podem ver uma mensagem de erro completa. Então você precisa askyourself...

Qual é a mensagem de erro exata?

A primeira pergunta que solicitamos os clientes é, "O que é o errormessage exato?" Se você tiver uma descrição clara da mensagem de erro gerada pelo Microsoft.NET Framework, você pode ignorar esta seção. Se seu aplicativo mascara o erro real messageand retorna uma mensagem de erro amigável em vez disso, por exemplo, "hasoccurred um erro inesperado. Entre em contato com o administrador do site para obter mais detalhes,"não é o uso de ofmuch para qualquer pessoa. Aqui estão algumas etapas que irá ajudá-lo a obter a mensagem actualerror.
  • Localize e abra o arquivo Web. config no applicationdirectory e altere customErrors para modo = "Off". Salve o arquivo e reproduzir theproblem.
  • Ainda não seria possível ver o errormessage real depois de seguir a etapa acima por causa de erro/evento personalizado handlingdone pelo desenvolvedor do aplicativo. Você pode tentar localizar o evento Application_Errorno arquivo global asax e comente qualquer código que usa a funçãoServer.Transfer("Errors.aspx") para ir para uma página de erro personalizada.
/Global.asax void Application_Error(object sender, EventArgs e)  {  // Code that runs when an unhandled error occurs  //Server.Transfer("Errors.aspx");   } 
Quando você receber a mensagem de erro real, lê-lo para determinar se entradaOcorreu um é causado por falta de permissões em um recurso local ou em um resourcethat remoto que seu aplicativo ASP.NET está tentando acessar.

Dica Entre em contato com o desenvolvedor para saber como ver a mensagem actualerror. É possível que o desenvolvedor pode ser efetuá-lo para um arquivo ou email gettinge notificações. Lembre-se sempre fazer um backup de qualquer arquivo aregoing para alterar. Com um backup disponível, você poderá sempre reverter as alterações.

Problema ocorre devido à falta de permissões em um recurso local que o aplicativo ASP.NET tenta acessar

Se não for possível obter uma descrição clara da problembecause de uma mensagem de erro personalizada, execute FileMon e reproduzir o problema. Stopand salvar a captura como FileMon.xls e abra o arquivo no Microsoft Excel. No menu dados , clique em filtroe, em seguida, clique em AutoFiltro para usar o ofExcel de recursos de filtragem. Agora, selecione a lista suspensa na coluna F e procure por erros de "Acesso negado".

Abaixo é um exemplo de saída de FileMon.
10381 1:01:11 PM w3wp.exe:2320 OPEN				C:\winnt\microsoft.net\framework\v1.1.4322\Temporary ASP.NET				Files\sessiontest\8832e585\275ec327\global.asax.xml ACCESS DENIED NT				AUTHORITY\NETWORK SERVICE
Como você pode ver o filteredresults, podemos ter reduzido a causa do problema. FileMon mostra que a conta de serviço NTAUTHORITY\NETWORK não tem permissões de NTFS na pasta de arquivos ASP.NET theC:\Winnt\Microsoft.net\Framework\v1.1.4322\Temporary.Isso deve ser direta corrigir. Para obter mais informações sobre como usar o FileMon para solucionar problemas de ASP.NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento Microsoft:
890960 Solução de problemas ASP.NET usando FileMon
Dica
Seria uma boa etapa alterar a conta de processo ASP.NET conta de anAdmin para ver se ele corrige o problema. No IIS 5. x, altere onome de usuário "Sistema" na seção de modelo de processo de fileand o Machine. config no IIS 6.0 você alteraria a identidade do IIS AppPool para tosee "Local System" se o aplicativo funciona.

Observação: Isso não deve ser usado como uma solução, butonly como uma etapa de solução de problemas.

A maioria das pessoas poderia tendem a toreinstall o Microsoft.NET Framework ou até mesmo ir para a extensão da reinstalação do sistema theoperating. Isso não é uma etapa de solução de problemas recomendada e faz notguarantee que o problema não ocorrerá novamente. Vou fornecer um exemplo.Problemas intermitentes com freqüência são difíceis de isolar e solucionar problemas. No thisscenario o aplicativo do cliente funcionaria bem por algumas horas e, em seguida, todos os de integridadede um repentino poderia falhar com o erro abaixo. O cliente já tinha tentado reinstallingthe.NET Framework, bem como o sistema operacional. Isso parece corrigir theproblem por alguns dias, mas, em seguida, reapareceu.

Erro de servidor no ' / MyApp'Application

Executando o FileMon não detectou nenhum DENIEDerrors de acesso. Todas as permissões necessárias para a conta ASPNET estavam em vigor. Theonly maneira de solucionar o problema é reinicializar a caixa. Até mesmo um IIS resetwould não ajuda. Você está pensando: "Ah, Software da Microsoft sempre precisa um rebootto recuperar?" Bem, você está errada!

A chave aqui é examinar atentamente a mensagem de erro. O erro diz claramente "não é possível abrir um arquivo para gravação," andnot o habitual erro acesso negado, portanto, estou pensando que se trata de alguns outro processthat está mantendo um bloqueio em um arquivo ou pasta e não permitindo ASP.NET para writeto-lo. Faz sentido que a reinicialização foi eliminar o outro processo e theASP.NET aplicativo começa a funcionar novamente até que o processo de rogue bloqueia o fileagain. A solução lógica seria desativar todos os programas antivírus, spyware de terceiros ou qualquer outro arquivo de software que é executado no servidor de monitoramento. Posso fazer notwant para destacar qualquer software de terceiros específico. Mas, em geral, o software antivírus conhecido por causar muito desgosto para aplicativos IIS e ASP.NET. Anotherknown problema causado por um software antivírus é a perda de sessão devido a AppDomainrecycles quando a pasta Bin ou os arquivos. config são utilizados.

Dica É a maneira mais fácil para desativar serviços de outras empresas:
  1. Clique em Iniciar, clique em Executare digite Msconfig.
  2. Selecione Serviços e marque Ocultar todos os serviços da Microsoft.
  3. Clique em Desativar tudo para interromper os serviços de terceiros.
  4. Clique em Iniciar, clique em Executare digite iisresetpara recarregar o CLR no processo de trabalho.
Monitore seu aplicativo para ver se o problema ocorrer novamente. Se quiser executar vários programas antivírus, use o todetermine método de tentativa e erro qual programa específico está causando o problema.

Observação: Se o mesmo erro for reproduzível 100% do tempo, o seu software antivírus não pode ser a causa. Therecan ser outras causas para esse erro. Tente criar um toisolate do aplicativo de teste ASP.NET simple se o mesmo erro ocorre para uma página Test. aspx. Em caso afirmativo, verifique se a required Access Control Lists (ACLs) estejam em andamento para ASP.NET.

Consulte ASP.NET necessárias (ACLs) de listas de controle de acesso:http://msdn2.microsoft.com/en-us/library/kwzs111e.aspx

Dica A pasta %SystemRoot%\Assembly é o cache global de assemblies. Diretamente você não pode usar o Windows Explorer para editar ACLs para thisfolder. Em vez disso, use um prompt de comando e execute o seguinte comando:
cacls %windir%\assembly. /e/t/p domain\useraccount:r
Como alternativa, antes de usar o Windows Explorer, unregisterShfusion.dll com o comando a seguir para conceder permissões por meio da interface gráfica:
C:\WINDOWS\Microsoft.NET\Framework\VersionNumber>regsvr32-u Shfusion
Depois de definir as permissões com o Windows Explorer, re-registerShfusion.dll com o seguinte comando:
C:\WINDOWS\Microsoft.NET\Framework\VersionNumber>regsvr32shfusion.dll

Problema ocorre devido à falta de permissões em um recurso remoto que o aplicativo ASP.NET está tentando acessar

Quando seu aplicativo ASP.NET estiver acessando um recurso remoto likeMicrosoft SQL Server ou em um compartilhamento de convenção de nomenclatura Universal (UNC, Universal Naming Convention), há muitas coisas que podem dar erradas. Além disso, muitas coisas podem beincorrectly configurar no recurso remoto. Você precisará solucionar esses problemas para que o recurso funcione.Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Base de Conhecimento Microsoft:
891031 Problemas comuns de segurança ao acessar recursos remotos de aplicativos ASP.NET
A primeira etapa seria ver se você pode connectto o servidor remoto através do Windows Explorer.
  1. No servidor remoto, crie uma pasta chamada teste emO compartilhamento e segurança de guias da pasta de teste, adicione a domínio/conta, andalso o processo de conta que é usada pelo seu aplicativo ASP.NET e givethem tanto controle total.

    Observação: Por favor, consulte891031 para orworkarounds técnicas acessar recursos remotos do ASP.NET.
  2. No servidor IIS, faça logon em seu domínio/conta, clique em Iniciar, clique em Executare, em seguida, digite o caminho UNC do compartilhamento do servidor remoto:
    \\RemoteServerName\Test
    Se não for possível acessar essa pasta, contate seu NetworkAdministrator para corrigir esse problema. Só então pode compartilhar seu acessar o aplicativo ASP.NET.
  3. Crie um arquivo chamado CreateUNCFile.aspx com o belowand de código, salve o arquivo no diretório de aplicativos.
    <%@ Page Language="vb" %><%@ Import Namespace="System.IO" %><html>  <head>  <title>Writing to a Text File</title><script runat="server">    Sub WriteToFile(ByVal sender As System.Object, ByVal e As System.EventArgs)        Dim fp As StreamWriter            fp = File.CreateText("\\<RemoteServerName>\Test\" & "test.txt")            fp.WriteLine(txtMyFile.Text)            lblStatus.Text = "The File Successfully created! Your ASP.NET process is able to access this remote share"            fp.Close()    End Sub</script></head><body style="font: 10pt verdana">            <h3 align="center">Creating a Text File in ASP.NET</h3>    <form id="Form1" method="post" runat="server">                        Type your text:                        <asp:TextBox ID="txtMyFile" TextMode="MultiLine" Rows="10" Columns="60" Runat="server" /><br>                        <asp:button ID="btnSubmit" Text="Create File" OnClick="WriteToFile" Runat="server" />                        <asp:Label ID="lblStatus" Font-Bold="True" ForeColor="#ff0000" Runat="server" />    </form></body></html> 
  4. Certifique-se de que você modifique <RemoteServerName></RemoteServerName> na seguinte linha de código
    fp = File.CreateText("\\<RemoteServerName>\Test\" &	"test.txt")
    para que ele reflete o nome do servidor remoto.
  5. Abra o Windows Internet Explorer e procure tohttp: / /NomedoServidorIIS/AppName/CreateUNCFile.aspxfrom um computador cliente que não seja o servidor IIS.
  6. Se o arquivo Test. txt cria com êxito, yourASP.NET aplicativo pode autenticar a recurso remoto.
  7. Se a criação de arquivos falhar de um navegador de cliente do Internet Explorer, mas worksif que você navegar para a mesma página a partir do próprio servidor IIS, é likelythat que você estiver executando em um cenário de "Salto duplo". Se você estiver usando personalizado de Web Parts interna para acessar recursos remotos que exigem autorização e autenticação de usuário, você provavelmente será executado com o problema de "Salto duplo". Para acessar o recurso remoto, talvez seja necessário fornecer as credenciais do usuário final para o recurso de forma que a saída do recurso seja limitada aos dados que o usuário final tem permissão para acessar.
As etapas acima pressupõem que você tenha ativado no IIS a autenticação NTLM. A autenticação básica não usa Kerberos. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Base de Conhecimento Microsoft:
907272 A autenticação Kerberos e como solucionar problemas de delegação
326985 Como solucionar problemas relacionados ao Kerberos no IIS
Para obter mais informações sobre métodos de autenticação do IIS, seethe o seguinte site do Microsoft Developer Network (MSDN) na Web:

Dica Se você pode se conectar ao compartilhamento UNC remoto, mas não pode se conectar ao servidor remoto que esteja executando o SQL Server do aplicativo ASP.NET, você terá que verificar orset os nomes principais de serviço (SPNs) para SQL Server. Tente ativar somente a autenticação básica para yourapplication no IIS e ver se você consegue se conectar ao servidor remoto que esteja executando o SQL Server.Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Base de Conhecimento Microsoft:
319723 Como usar a autenticação Kerberos no SQL Server
316989 Mensagem de erro quando você criar uma conexão de dados confiável do ASP.NET para SQL Server: "Falha de logon do usuário: 'AccountName'"
Dica Nunca recomenda-se para usar unidades mapeadas para conectar-se a uma remoteresource porque os mapeamentos de unidade são uma extensão do comando net use e são criados em uma base por usuário. O conteúdo acessando methodof preferencial para o servidor Web que existe em um computador remoto é usar compartilhamentos que seguem o UNC.Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Base de Conhecimento Microsoft:
257174 Usando unidades mapeadas com o IIS

Problema relacionado ao Code Access Security (CAS)

Mensagens de erro no ASP.NET são detalhadas e, mais freqüentemente que não, saber exatamente o que o problema é. Em alguns casos, FileMon ou RegMon pode notcapture nada útil. Vamos dar uma olhada em um cenário como esse.

Cenário

Ao tentar procurar um aplicativo do ASP.NET, ele falhará com um erro genérico como o seguinte erro terrível:
ApplicationUnavailable de servidor
O log de eventos mostra:
Tipo de evento: erro
Origem do evento: ASP.NET 1.1.4322.0
Categoria do evento: nenhuma
Identificação do evento: 1088
Data: 11/10/2006
Tempo: 10:54:04 PM
Usuário: n/d
Computador: nome_do_computador
Descrição:
Falha ao executar solicitação, pois o domínio de aplicativo não pôde ser criado. Erro: 0x8013150a
Quando é criado um domínio de aplicativo ASP.NET, ASP.NET readsthe valor especificado para o atributo do elemento de configuração de confiança, cria uma instância da classe AspNetHostingPermission com o atributo denível especificado e, em seguida, adiciona a classe para a permissão definida para o domínio do aplicativo. Você verá o erro acima se a relação de confiança níveis areincorrectly configurado ou modificado. Para obter mais informações, see"ASP.NET TrustLevels e arquivos de diretiva" no site da MSDN: Para resolver esse problema, você pode trythis Dica na seção "O problema ocorre devido à falta de permissões em um recurso local que o aplicativo ASP.NET tenta acessar", mas getdisheartened não se o aplicativo não funcionar com um administrador ou SYSTEMaccount. Você precisa verificar ver se o problema pode ser causado por Security.This de acesso de código pode ser feito facilmente desativando Code Access Security usando o utilitário theCaspol.exe.
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 >caspol -s
Microsoft (R).NET Framework CasPol 1.1.4322.573
Copyright (C) Microsoft Corporation 1998-2002. Todos os direitos reservados.

Sucesso

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 >
Onceyou executaramcaspol – s, redefina o IIS e tente procurar o aplicativo. Ifthis passo funciona, o termo "você" e "necessidade de verificar a permissão definida para os grupos de códigos.Você pode acessar os grupos de códigos do Microsoft.NET Framework VersionNumberFerramenta de configuração que está localizada em Ferramentas administrativas.

Nesse cenário, o Conjunto de permissões para o grupo de códigos My_Computer_Zone foi definida como Nothing.Alterá-lo para Confiança total resolveu o problema

Observação: Para acessar o grupo de códigos My_Computer_Zone , siga estas etapas:
  1. No painel de controle, clique duas vezes em Ferramentas administrativas.
  2. Clique duas vezes em de Microsoft.NET Framework<b00> </b00> VersionNumber Configuração.
  3. Clique duas vezes em diretiva de segurança de tempo de execução.
  4. Clique duas vezes em computador.
  5. Clique duas vezes em CodeGroups.
  6. Clique duas vezes em All_Code.
  7. Clique duas vezes em My_Computer_Zone.
Dica Lembre-se de executar caspol-s para ativar CAS depois de você ter problema de fixedthe.

Para obter mais informações, consulte AccessSecurity de código ASP.NET:http://msdn2.microsoft.com/en-us/library/87x8e4d1.aspx

Thereare várias outras causas para a errormessage "Servidor aplicativo indisponível". O log de eventos é a melhor opção para obter mais detalhes sobre o problema de ofyour causa.

Erros relacionados ao IIS

Os logs do IIS são muito úteis em casos de erros relacionados a autenticação do IIS. Um cenário comum é quando o usuário normalmente vê o seguinte:
Você está notauthorized para exibir esta página
O que você precisa procurar é os códigos de status status e sub para esse erro específico.
2006-10-12 22:47:28 W3SVC1 65.52.18.230 OBTER /MyAPP/login.aspx - 80MyDomain65.52.22.58Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+InfoPath.1)401 de \UserID_91 5 3
Vemos um 401 com o status sub 3, que indica "Não autorizado devido a ACL no recurso."

Isso indica NTFSpermissions ausente em um arquivo ou pasta. Este erro pode ocorrer mesmo se corrigir o permissionsare para o arquivo que você está tentando acessar, mas os direitos de usuário e defaultpermissions podem estar faltando em outras pastas do sistema e o IIS. Por exemplo, você verá esse erro se a conta IUSR_ComputerName não não haveaccess para o diretório c:\WINNT\system32\inetsrv..Para obter mais informações sobre códigos de status do IIS, clique no número abaixo para ler o artigo na Base de dados de Conhecimento Microsoft:
318380 Descrição dos códigos de status de Serviços de Informações da Internet da Microsoft (IIS) 5.0 e 6.0
812614 Permissões padrão e direitos do usuário para o IIS 6.0
271071 Como setrequired as permissões de NTFS e direitos de usuário para um servidor Web do IIS 5.0
Dica Clique em Iniciar, clique em Executar, e digite arquivos de log Para abrir a pasta que contém os logs de theIIS. Como alternativa, na página Propriedades do seu site no IIS, clique na guiaNomeDoSite e em formato do log ativo, clique em Propriedades para ver o Log filedirectory e o nome.

Outra coisa interessante aqui é o código de status 5. Você pode usar o toget do comando net helpmsg obter mais informações sobre esse código de status:
C:\Documents and Settings\nome >net helpmsg 5
O acesso é negado.
Vamos tentar outro código status comum, código 50:
C:\Documents and Settings\nome >net helpmsg 50
Não há suporte para a solicitação.
Dica Sempre que você receber outra mensagem genérica infame "500 interno ServerError", ele é uma boa idéia desativar mensagens de erro HTTP amigáveis, para que você receivea detalhado descrição do erro. Não se esqueça de examinar de eventos vieweras, ele também pode conter mais informações.
Para obter mais informações sobre como desativar mensagens de erro HTTP amigáveis, clique no número abaixo para ler o artigo na Base de dados de Conhecimento Microsoft:
294807 Desativar o recurso do Internet Explorer 5. x e 6. x "show friendly HTTP error messages" no lado do servidor
A idéia é usar todos o informationavailable registrado para obter máximo detalhes sobre o problema em questão.

Recursos

Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Base de Conhecimento Microsoft:
306590 Visão geral sobre a segurança do ASP.NET
317012 Processo e identidade de solicitação no ASP.NET
Como criar uma conta de serviço para um aplicativo ASP.NET 2.0
http://msdn2.microsoft.com/en-us/library/ms998297.aspx

Matriz de identidade do ASP.NET
http://msdn2.microsoft.com/en-us/library/aa302377.aspx

Colunas anteriores de voz de suporte do ASP.NET
http://support.microsoft.com/aspnetpsvc
Espero que essas técnicas simples são úteis para ajudá-lo a problemas relacionados ao resolvesecurity e permissões. Lembre-se, o suporte a voz colunas arefor você! Como sempre, fique à vontade para usar aPeça para ele formulário para enviar idéias sobre tópicos que você deseja ver as colunas infuture endereçadas ou no Knowledge Base.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 910449 - Última Revisão: 12/22/2014 23:20:00 - Revisão: 1.0

Microsoft ASP.NET 2.0, Microsoft ASP.NET 1.1

  • kbhowto kbasp kbmt KB910449 KbMtpt
Comentários