O comportamento que você está descrevendo é lado do cliente e não tem nada a ver com o Apache, por si só.
Veja o que realmente acontece:
- O navegador envia uma solicitação
- O servidor da Web responde com 401
- O navegador solicita credenciais ao usuário
- O navegador reenvia a solicitação com credenciais
Se o acesso for concedido, o Apache responde com 200, se o acesso não for concedido, ele volta para a etapa 2 e continua. Cabe ao usuário-agente (ou seja, seu navegador) quantas vezes ele vai tentar. Seu navegador aparentemente pára em 3 tentativas. Depois disso, ele mantém o resultado em cache e apenas mostra a página de erro.
Os navegadores costumam armazenar em cache os resultados desse tipo de operação, o que é normal. Você saiu do seu navegador antes de tentar novamente? Isso deve limpar o resultado em cache.
Se você quiser ver exatamente como o Apache está se comportando "in the raw", use o seguinte:
Pedido não autenticado:
curl -D - http://yourserver/page.html
Pedido autenticado *:
curl -u user:pass -D - http://yourserver/page.html
Você verá os cabeçalhos no topo da saída de como o Apache responde a solicitações autenticadas vs não autenticadas. Você deve sempre ver um 401 para unauth e 200 para auth. Se esse não é o caso, então ele não está configurado corretamente ou há algo mais acontecendo.
* curl
pode fazer a autenticação do kerberos passando --negotiate
, mas nunca fiz isso e não tenho um ambiente de teste válido para experimentar. Leia o manual curl(1)
para obter mais informações.