Apache 2.4, 기본 파일 인증 무시

Apache 2.4, 기본 파일 인증 무시

내 (Debian 스타일, 분할 파일) 구성에는 다음이 있습니다.

<VirtualHost *>
ServerName www.example.org
DocumentRoot /var/www/example
CustomLog /var/log/apache2/example/access.log combined

<Directory /var/www/example/subdir/admin/>
   AllowOverride All
   AuthType Basic
   AuthName "admins only"
   AuthUserFile /etc/apache2/pass.txt
   Require valid-user
</Directory>

</VirtualHost>

이는 무시됩니다. 즉, 로그인 프롬프트 없이 해당 디렉토리의 파일을 찾아볼 수 있습니다. 설정해놓고 LogLevel debug보니

AH01628: authorization result: granted (no directives)

로그 라인은 에 의해 생성되므로 [authz_core:debug]인증 라인이 존재한다는 것을 인식하는 것처럼 보이지만 실제로 일부 인증을 수행할 필요는 없습니다.

교체해도 valid-user효과 all denied가 없습니다.

필요한 모듈은 모두 있는 것 같습니다.

.htaccess다른 디렉토리에 추가하려고 시도했는데 "여기에서는 인증 유형이 허용되지 않습니다"라고 기록되었습니다.

나는 AllowOverride All그것이 허용되는 거의 모든 곳에서 그것을 가지고 있습니다.

비슷한 문제에 대한 해결책을 아직 찾지 못했습니다. 이 문제를 해결하는 방법을 알려주십시오. 기꺼이 시도해 보고 다시 보고해 드리겠습니다.

답변1

이것은 명확한 답은 아니지만, 제가 어떻게 해결했는지 보고할 수 있습니다.

모든 http 요청은 https로 리디렉션되지만 어디서 수행되는지는 확실하지 않습니다. 이는 *:80에 대한 가상 호스트가 무시되고 *:443에 대한 가상 호스트가 사용된다는 의미입니다. 인증 항목을 *:443 가상 호스트로 옮기고 앞에 "모두 거부 요청"을 추가하면 이제 로그인이 요청됩니다. 가상호스트에 포함된 코드입니다.

<Directory /subdir/>
   Require all denied
</Directory>

<Location /subdir/>
   AllowOverride All
   AuthType Basic
   AuthName "admins only"
   AuthUserFile /etc/apache2/userpass.txt
   AuthGroupFile /etc/apache2/group
   Require group admins
</Location>

누구든지 이것을 개선하거나 단순화할 수 있습니다. 그렇게 하십시오.

답변2

이것은 일반적인 질문입니다. 이것아파치 문서<Location />대신 이 지시문을 사용하는 것이 좋습니다 <Directory />. 다음 예제 VirtualHost는 기능적인 기본 인증을 제공해야 합니다.

<VirtualHost *:80>
        ServerName      example.com

        DocumentRoot "/srv/www/htdocs/"

        <Location />
        AuthType        Basic
        AuthName        "Authorized Access Only"
        AuthUserFile    /etc/apache2/auth/htpass
        AuthGroupFile   /etc/apache2/auth/group
        Require         group myusers
        </Location>

        <Directory "/srv/www/htdocs/">
        Require all granted
        </Directory>
</VirtualHost>

htpass 파일은 htpasswd -c /etc/apache2/auth/htpass myname위의 가상 호스트 예와 관련하여 다음 구문을 사용하여 그룹 파일(선택 사항!)을 사용하여 생성됩니다.

myusers: myname myfriend mycolleague

htpasswd 및 그룹 파일은 Apache를 실행하는 사용자가 읽을 수 있어야 합니다.

답변3

프록시 VM에서는 블록에 인증 코드를 포함할 수 있습니다.

<proxy *>
   AllowOverride All
   AuthType Basic
   AuthName "admins only"
   AuthUserFile /etc/apache2/userpass.txt
   AuthGroupFile /etc/apache2/group
   Require group admins
</proxy>

여전히 작동합니다.

관련 정보