web-dev-qa-db-ja.com

許可されているものを除くApacheの基本認証

問題:/ var/www/files /の下に、ユーザー/パスワードを必要とせずに特定のIPアドレスからアクセスしたいファイルがいくつかあります。ただし、他のIPアドレスにアクセスするにはログインが必要である必要があります。

これは私のhttpd.confにあります:

<Directory /var/www/files/>
        Order deny,allow
        Deny from all
        Allow from 192.168 
        AuthUserFile /etc/Apache2/basic.pwd 
        AuthName "Please enter username and password" 
        AuthType Basic 
        Require user valid-user 
</Directory>

しかし、私が正しく理解していれば、これは192.168。*から来るすべてのクライアントがそのディレクトリにアクセスできることを意味しますが、そのコンテンツを表示するには有効なユーザーが必要です。また、その他のIPアドレスはすべて拒否されます。正しい?

前もって感謝します。

24
lepe

edit:これは受け入れられる答えかもしれませんが、古いです。 Apacheの新規インストールの場合は、 Briansの回答を使用してください

これを追加: Satisfy Any(つまり、これら2つのいずれかを渡す必要があります)。

そして構文は次のいずれかです:

Require valid-user

または:

Require user <userid>
13
Wrikken

これは、Apache 2.4以降で行われる方法です(Satisfy Anyはサポートされなくなったため)。

<Directory /var/www/files/>

    AuthType Basic
    AuthName "Please enter your username and password"
    AuthUserFile /var/www/files/.htpasswd

    <RequireAny>
      Require ip 22.33.44.55
      Require valid-user
    </RequireAny>

</Directory>

IPアドレスとログイン/パスワードの両方が必要な場合は、<RequireAny><RequireAll>に変更してください。

これが誰かに役立つことを願っています-それを理解するのに時間がかかったので。

49
Brian Smith

サーバーがプロキシの背後にある場合、Require ipに直接依存することはできません。ただし、 Require env :を使用できます。

<Directory /var/www/files/>

    AuthType Basic
    AuthName "Please enter your username and password"
    AuthUserFile /var/www/files/.htpasswd

    SetEnvIF X-Forwarded-For "22.33.44.55" AllowIP

    <RequireAny>
      Require env AllowIP
      Require valid-user
    </RequireAny>

</Directory>

アイデアの源

4
fracz
SetEnvIF X-Forwarded-For "192.168.135.159" AllowIP
SetEnvIF X-Forwarded-For "192.168.135.135" AllowIP

AuthType Basic
AuthName "admin"
AuthUserFile "/var/www/domain.com/cms/.htpasswd"

<RequireAll>
Require env AllowIP
require valid-user
</RequireAll>

İはまた、多くの亜種をチェックしました。このコードは、Apache 100%の2.4バージョンで動作します

1
Seymur