O subdiretório web do Apache protegido pede senha duas vezes

1

Eu tenho um servidor Apache com diretório da web protegido por senha. Esse diretório tem um subdiretório, que requer outra senha, mas qualquer pessoa que possa acessar o subdiretório também deve ter acesso ao diretório pai. Isso é:

  • / stuff - usuários "coisas" e "admin" permitidos
  • / stuff / admin - somente usuário "admin" permitido

Portanto, configurei-o dessa forma na configuração do Apache:

<Directory "/stuff">
   [AuthType Basic, AuthName, etc.]
   Require user stuff
   Require user admin
</Directory>

<Directory "/stuff/admin">
   [AuthType Basic, AuthName, etc.]
   Require user admin
</Directory>

Isso funciona no sentido de que eu posso navegar para / stuff e fazer o login como "admin" ou "stuff". No entanto, as páginas em / stuff / admin referenciam algumas imagens do diretório pai. Eu acho que quando eu navego diretamente para / stuff / admin e faço login como "admin", o navegador ainda me pede outra senha para carregar essas imagens. (Eu sei que é o prompt para / stuff, porque o valor AuthName é diferente.)

Como posso evitar isso e permitir que um usuário que tenha acesso a / stuff / admin faça login apenas uma vez (como "admin"), não duas vezes?

    
por EMP 27.09.2009 / 05:02

4 respostas

5

O problema acabou sendo o valor AuthName diferente para os dois diretórios. Eu pensei que o seu único objetivo é fornecer um aviso significativo para o usuário. Depois de ler novamente a documentação , acontece que ela tem outra finalidade: o navegador tentará automaticamente mesmas credenciais para diretórios com o mesmo AuthName.

Então, o que estava acontecendo no meu caso foi que, depois de ter autenticado / stuff / admin , o navegador solicitaria / stuff / something-else , ele receberia um " 401 "Resposta não autorizada, mas nem sequer tentaria as mesmas credenciais. Depois que mudei o AuthName para ser o mesmo, ele automaticamente respondeu ao 401 repetindo com o nome de usuário "admin" com o qual eu me autentiquei anteriormente, o que funcionou.

    
por 03.10.2009 / 03:34
1

Você tentou inverter a ordem das estrofes no seu htaccess para que o caso mais específico seja o primeiro? Isso pode afetar a correspondência e resolver seu problema de solicitação dupla.

Outra coisa a verificar é se você pode usar Realms ou Grupos para simplificar, talvez para especificar que vários contêineres usam o mesmo back-end de autenticação.

Este (AAA) é diferente entre o Apache e o Apache2, então verifique o que você tem. Aqui estão os dois conjuntos de documentos:

link link

hth,

adric

    
por 28.09.2009 / 04:55
0

Eu não tentei, mas seria necessário mudar ambos para requerer um usuário válido e apontar o admin.htaccess para um grupo .htpasswd que era o subconjunto do admin e o diretório base .htaccess para um .htpasswd arquivo com o superconjunto maior?

    
por 27.09.2009 / 06:10
0

Eu acredito que quando você lista coisas em linhas separadas, há um "e" implícito. Tente listar os usuários na mesma linha para um "ou" implícito:

<Directory "/stuff">
   [AuthType Basic, AuthName, etc.]
   Require user stuff admin
</Directory>
    
por 27.09.2009 / 07:16