401 - Não autorizado no Server 2008 R2 IIS 7.5

19

Eu tenho um aplicativo da Web implantado na caixa IIS 2008 IIS 7.5.

Do remoto, esse erro é exibido: 401 - Unauthorized: Access is denied due to invalid credentials . (remote = desktops na mesma LAN)

Já experimentei vários clientes remotos usando diferentes navegadores, o mesmo resultado. (IE, FF e Chrome)

Acertar o aplicativo da área de trabalho do próprio servidor funciona perfeitamente . No entanto, não tentei o Firebug na área de trabalho do servidor. Eu diria que ainda está emitindo um código de status 401 e ainda retorna o conteúdo de qualquer maneira. Veja a Atualização 2.

O aplicativo está usando autenticação anônima.

O aplicativo está escrito em .NET 4.0 Asp.Net usando o framework MVC.

O conteúdo estático funciona bem, por exemplo: link

Sysinternals procmon retorna esses 2 resultados para cada solicitação: FAST IO DISLEOWED e PATH NOT FOUND.

Eu tenho 2 outros aplicativos MVC rodando bem no mesmo servidor. Eu verifiquei a segurança nas pastas e todas elas correspondem.

O aplicativo é executado corretamente em uma caixa do Server 2008 IIS 7.0.

Nada aparece no log de eventos no servidor relacionado a isso.

Puxando meu cabelo aqui, alguma dica de solução de problemas?

UPDATE # 1 : Isso só faz mais WTF quando eu cavar.

Se eu clicar no aplicativo no Gerenciador do IIS - > Páginas de erro - > Editar configurações de recursos selecione Detailed Errors , o aplicativo funciona remotamente. Não deixando isso, então o problema não está resolvido ainda, é apenas mais confuso.

UPDATE # 2 : usando o Firebug, vejo que o status ainda é 401 Unauthorized , mas a resposta está retornando o HTML correto do aplicativo.

UPDATE # 3 Brincando com o Rastreamento de Solicitações com Falha, aqui está o Rastreamento de Solicitação de ADVERTÊNCIA que está causando o 401:

ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 401 
HttpReason Unauthorized 
HttpSubStatus 0 
ErrorCode 0 
ConfigExceptionInfo  
Notification EXECUTE_REQUEST_HANDLER 
ErrorCode The operation completed successfully. (0x0)

Atualização # 4 O log regular do IIS mostra isso:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2010-07-20 19:17:22
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2010-07-20 19:17:22 10.10.1.10 GET /Purchasing/Home - 80 - 10.10.1.12 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.6)+Gecko/20100625+Firefox/3.6.6 401 0 0 4414
    
por mxmissile 29.04.2010 / 17:46

5 respostas

18

Às vezes você tem que dar um passo para trás ... A causa disso foi que eu tive um Html.RenderAction() na minha opinião que chamou um método de ação que foi marcado com o atributo [Authorize] .

    
por 27.09.2010 / 20:44
3

Como funciona localmente, mas não remotamente, parece-me que a conta de usuário anônimo não tem acesso a algo, mas o usuário do Windows sim. Para provar isso, desative a Autenticação do Windows para o site e veja se ele quebra localmente.

O que quer que esteja quebrando provavelmente está sendo executado como a identidade do seu website, em vez da identidade do seu pool de aplicativos, caso contrário, ele seria interrompido local e remotamente. Minha recomendação, se você tiver de 1 a 1 mapeamentos de sites para pools de aplicativos ou se tiver um ambiente altamente confiável, é definir a conta de usuário anônimo para usar a identidade do pool de aplicativos. Então você não precisa se preocupar com um segundo usuário para manter.

Você mencionou o explorador de processos. Isso é bom para encontrar informações de execução, mas a ferramenta que provavelmente descobrirá erros de acesso negado é processmon (também do sysinternals). Experimente, reproduza e capture, depois pesquise a palavra "negada". Ele deve ativar todos os problemas de acesso negado no disco.

    
por 27.07.2010 / 15:57
3

Você terá esse mesmo comportamento quando tiver um filtro para autorização personalizada que herde de AuthorizeAttribute e uma ou mais chamadas para o método OnAuthorization , com uma delas definindo AuthorizationContext.Result como 'HttpUnauthorizedResult'

    
por 07.06.2012 / 17:57
3

Por algum motivo, isso resolveu meu problema.

  1. Clique no site no IIS.
  2. Autenticação de duplo clique
  3. Clique com o botão direito e escolha Configurações avançadas
  4. Desmarque a opção "Ativar autenticação no modo kernel"
por 30.09.2011 / 00:41
1

Você verificou as configurações em Regras de autorização? Se alguém puder acessar essa página (que parece ser seu objetivo), verifique se você tem uma regra de "Permitir" que tem "Todos os usuários" na coluna "Usuários".

Em seguida, em "Autenticação", certifique-se de que não haja conflitos e apenas a autenticação anônima esteja ativada.

Espero que ajude.

    
por 29.04.2010 / 21:17