Autenticação básica no DirectoryIndex somente

3

Estou tentando configurar a autenticação básica para meu arquivo de índice e somente meu arquivo de índice. Eu configurei da seguinte forma:

<Files index.htm>
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthName "Some Auth"
    AuthUserFile "C:/path/to/my/.htpasswd"
    Require valid-user
</Files>

Quando eu visito a página, 401 Authorization Required é retornado como esperado, mas o navegador não solicita o nome de usuário / senha. Algumas outras inspeções revelaram que o Apache não está enviando o cabeçalho WWW-Authenticate .

GET http://myhost/ HTTP/1.1
Host: myhost
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3


HTTP/1.1 401 Authorization Required
Date: Tue, 21 Jun 2011 21:36:48 GMT
Server: Apache/2.2.16 (Win32)
Content-Length: 401
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
</body></html>

Por que o Apache está fazendo isso? Como posso configurá-lo para enviar esse cabeçalho apropriadamente?

Vale a pena notar que este mesmo conjunto de diretivas funciona bem se eu configurá-las para um diretório inteiro. É somente quando eu os configuro para um índice de diretório que eles não funcionam. É assim que conheço o meu .htpasswd e tudo bem.

Estou usando o Apache 2.2 no Windows.

Em outra nota, eu encontrei este listado como um bug no Apache 1.3 . Isso me leva a acreditar que isso é realmente um problema de configuração do meu lado.

    
por Brad 21.06.2011 / 23:54

4 respostas

2

Eu posso reproduzir isso no Apache 2.2 no Fedora. Isto parece ser um inseto. Uma solução alternativa é usar:

<Files ~ "(^index.htm$)|(^$)">

Aqui está outro bug semelhante: link

    
por 27.06.2011 / 20:48
1

Para um caso simples, sua configuração parece boa (veja este post para um exemplo), então eu começaria examinando todos os fatores que poderiam tornar isso um caso não simples e eliminando-os até encontrar o que está causando o problema.

Por exemplo:

  • Você está acessando "index.htm" especificamente ou confiando no DirectoryIndex para carregá-lo automaticamente quando você acessar " link "?
  • O "index.htm" está configurado no DirectoryIndex?
  • Você tentou fazer disso a primeira opção?
  • Já que você está no Windows, tem certeza de que o caso de letras nos nomes de arquivo é o que você acha que é? O Windows manipulará todos os nomes de arquivos em maiúsculas para o caso de sentenças , por exemplo.
  • Você tentou definir esse parâmetro para um arquivo que não está no DirectoryIndex (test.html), para ver se isso está relacionado?

Os documentos do Apache têm uma boa página detalhando como Diretório, arquivos e local trabalho, com alguns exemplos, para referência futura.

    
por 27.06.2011 / 19:27
1

Você pode querer começar ajustando sua diretiva de arquivos (< Files ./index.htm>), caso contrário, ela corresponderá a qualquer arquivo index.htm em toda a estrutura de diretórios sob esse .htaccess.

A configuração que você postou funciona perfeitamente em uma instalação Debian - Apache 2.2. Sugiro tentar ver se o coloco em uma diretiva <Location> e experimentá-lo em dois navegadores diferentes.

    
por 27.06.2011 / 19:29
0

Estou a pensar que existe um conflito entre a directiva:

 allow from all

e a diretiva

 require valid user

Gostaria de saber se você descarta a permissão de todos do registro de configuração, isso pode fazer o que você deseja fazer.

BTW, eu também alteraria o arquivo index.html para Location /index.html.

    
por 27.06.2011 / 21:09