IIS e autenticação do Windows não permitindo páginas de erro

1

Eu tenho tentado isso nos últimos dois dias. Eu não estou começando o que é o problema. Eu procurei na web, mas não encontrei nenhuma solução. Eu tentei todas as configurações do IIS como "Mover negociar, desabilitar outra autenticação", mas não funciona. Então, aqui está o meu problema: eu tenho um aplicativo da web de intranet no asp.net que está usando o nome de usuário e senhas armazenadas no Active Directory. Eu tenho cinco páginas diferentes no meu aplicativo. Todas as páginas são armazenadas em pastas separadas com seus arquivos web.config. Esses arquivos web.config têm nomes dos usuários que têm permissão para visualizar essa página como esta.

<authorization>
<allow users="Domainname\username"/>
</authorization>

Eu quero redirecionar os usuários que não estão na lista acima para outra página de erro com a mensagem apropriada. Eu usei isso

protected void Application_EndRequest(object sender, EventArgs e)
{

    if (HttpContext.Current.Response.Status.StartsWith("401"))
    {
        HttpContext.Current.Response.ClearContent();
        Response.Redirect("~/myerrorpage.aspx?myerrormsg=you are not allowed");
    }
}

Isso está funcionando no localhost, mas quando estou colocando meu aplicativo no IIS, todos os usuários autorizados (aqueles que estão na lista) também estão redirecionando para a página da mensagem de erro.

Fora do IIS, está funcionando corretamente. No entanto, não consigo redirecionar usuários não autorizados para a página de mensagens de erro. Eu também tentei com configurações de páginas de erro do IIS, mas estou tendo o mesmo problema.

Por favor, sugira-me o que devo fazer para corrigir isso. Existe alguma outra maneira de fazer isso?

    
por Rebecca 17.06.2015 / 19:47

2 respostas

0

se você estiver usando a autenticação do Windows, então você deve ter isso em mente: Se você estiver habilitando manualmente a autenticação do Windows no IIS, por favor, não inclua o código abaixo em seu web.config

<authentication mode="Windows" />

se você usar isso, ele causará o mesmo problema que eu disse acima na minha pergunta.

    
por 18.06.2015 / 17:24
0

Não sei ao certo se esse é o problema em seu caso específico, mas, em geral, o processo é:

  1. O navegador tenta conectar anônimo na primeira conexão
  2. O servidor da Web diz "desculpe, você não pode fazer isso, erro 401, aqui está a maneira como o usuário pode autenticar"
  3. O navegador classifica a autenticação (pedindo ao usuário por credenciais, por exemplo)
  4. O navegador faz uma segunda solicitação, com informações do cabeçalho de autenticação incluídas

Meu palpite é que você está falhando na etapa (1) pegando o primeiro 401 antes que o usuário tenha a chance de fornecer credenciais. Você pode verificar isso com ferramentas F12 ou com uma ferramenta como o Fiddler.

    
por 17.06.2015 / 20:21