web-dev-qa-db-ja.com

オフィスからApache2.4で接続しない限り、HTTP基本認証?

デモ目的でのみウェブサイトを開設したいと考えています。

  1. HTTP基本認証を介してユーザー名とパスワードを入力することにより、インターネットのどこからでもアクセスできます。
  2. 使いやすさのために、オフィスが202.161.24.210から接続するオフィスからHTTP基本認証を経由する必要がないようにしたいと思います。
  3. デモサイトの特定の部分は、それ自体に対してRESTリクエストを行う必要があるため、127.0.0.1と:: 1もホワイトリストに登録したいと思います。

2と3を達成したようですが、1は思ったとおりに機能しません。ユーザーは、すでに認証されていて、ウェブサイト。ログから、特定のアセットにアクセスすると次のエラーメッセージが表示されることがわかりました。

[Tue Jun 09 10:50:03.442834 2015] [access_compat:error] [pid 5740:tid 140705259312896] [client 78.52.242.163:62774] AH01797: client denied by server configuration: /var/www/docroots/stage/lib/yui/build/moodle-core-checknet/assets/checknet.txt, referer: http://stage.example.org/mod/scorm/player.php

これがApache仮想ホストです:

<VirtualHost *:80>
ServerName stage.example.org

DocumentRoot /var/www/docroots/stage
    <Directory /var/www/docroots/stage>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None

        # Only visible on Office network or anyone with a valid password.
        AuthType Basic
        AuthName "Authorisation Required"
        AuthUserFile "/var/www/htpasswd"
        Require valid-user
        Order allow,deny
        Allow from 202.161.24.210 127 ::1
        Satisfy any
    </Directory>
</VirtualHost>

CentOS7でApache2.4.6を実行しています。構成は正しいですか?私たちの構成は、/var/www/docroots/stageのトップレベルファイルと、その直下にあるサブディレクトリの下にある他の画像、css、およびjavascriptファイルに対して機能するようですが、特定の番号の後にHTTP認証を忘れている可能性がありますサブディレクトリの? SELinuxは許容モードです。

1
Machoke

完全なエラーメッセージ(モジュールとIPアドレスを期待します)がなければ、それは少し推測ですが、Apache 2.4の2つの異なるモジュールからのディレクティブを混合しています Require mod-authz-coreからのディレクティブと "legacy" ディレクティブ Allow および Order = mod-access-compatから。これは、うまくスタックしない可能性があります。

行を置き換えてみてください

Order allow,deny
Allow from 202.161.24.210 127 ::1

以下で

Require ip  202.161.24.210 127 ::1/128

すでに存在するSatisfy anyで、要件を満たす必要があります。

3番目の要件:

デモサイトの特定の部分は、それ自体にRESTリクエストを行う必要があります...

予想どおり、ループバックアドレスからサーバーにアクセスしていない可能性がありますが、http://api.example.com/rest?と同様のFQDNで構成され、代わりにサーバーのパブリックIPアドレスから発信されている可能性があります。

サーバーのパブリックIPアドレスを追加することもできますが、それはApache2.4からはるかに簡単に解決されます。 ローカルプロバイダー 次の条件のいずれかに該当する場合、サーバーへのアクセスを許可します。

  • クライアントアドレスは127.0.0.0/8と一致します
  • クライアントアドレスは:: 1です
  • 接続のクライアントアドレスとサーバーアドレスの両方が同じ

したがって、ループバックIPアドレスをリストする代わりに、次を使用します。

Require valid-user
#  Office Gateway:
Require ip 202.161.24.210 
#  API access from this Host:   
Require local            
#  Only one or more of the above needs to match:
Satisfy any                  
2
HBruijn