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

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

Tenho tentado isso nos últimos dois dias. Não estou entendendo qual é o problema. Pesquisei na web mas não encontrei nenhuma solução. tentei todas as configurações do IIS como "Mover negociação para baixo, desabilitar outra autenticação", mas não funcionou. Então aqui está o meu problema: eu tenho um aplicativo da web de intranet em ASP.NET que usa nome de usuário e senhas armazenados no Active Directory. Tenho cinco páginas diferentes em meu aplicativo. Todas as páginas são armazenadas em pastas separadas com seus arquivos web.config. Esses arquivos web.config possuem nomes de usuários que têm permissão para visualizar aquela página desta forma.

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

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 coloco minha aplicação 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. Também tentei com as 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?

Responder1

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

  1. O navegador tenta se conectaranônimona primeira conexão
  2. O servidor Web diz "desculpe, você não pode fazer isso, erro 401, aqui estão as maneiras pelas quais o usuário pode autenticar"
  3. O navegador classifica a autenticação (pedindo credenciais ao usuário, 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) ao capturar o primeiro 401 antes que o usuário tenha a chance de fornecer credenciais. Você pode verificar isso com as ferramentas F12 ou com uma ferramenta como o Fiddler.

Responder2

se você estiver usando a autenticação do Windows, lembre-se disso: se estiver habilitando manualmente a autenticação do Windows no IIS, não inclua o código abaixo em seu web.config

<authentication mode="Windows" />

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

informação relacionada