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

これは一般的な質問です。これApacheドキュメント<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>

それでも動作します。

関連情報