2017-05-17 10 views
0

から許可私は予想通り素晴らしく働いているLDAP認証、とセットアップのApache 2.2を持って、それをローカルにアクセスするとき、私は、認証をバイパスすることができるようにもしてきました。のApache 2.2は、ENV = _variable_

Allow fromlocalIPhostnameAホスト名2、等...

サーバからのI curl場合、私は任意の認証に必要を得ることはありません。だからすべての良いと期待どおりに動作します。私が今必要なもの

は、認可をもバイパスする一つの特定のURLを作ることです。

私はSetEnvIfを使用して、すべての通常の解決策を試してみました。

SetEnvIf Request_URI "^/calendar/export" bypassauth=true` 
Allow from env=bypassauth IP_ADDRESS HOSTNAME_A HOSTNAME_B 

これは機能していません。

  1. のローカルアクセスはまだ無制限ではありませんが、リモートではない(そこに何の変化)
  2. 私はそのURLのスクリプトに私のサーバー環境変数をダンプした場合、私は私のbypassauth変数が渡されて見ることができます。

Allow from env=bypassauthの部分がなぜ機能しないのか理解できていないだけですが、それでも追加の指示パラメータに従います。

は、私はまた、 Locationディレクティブを使用して、別の提案を試してみました。

<Location /calendar/export> 
    Satisfy Any 
    Allow from all 
    AuthType None 

    SetEnv WTF 123 
</Location> 

繰り返しますが、私は(WTF)私の新しい環境変数を見ることができます(私はスクリプトでサーバーENVSをダンプしたとき)、このURLに表示されますので、私はSetEnvSetEnvIfディレクティブが働いていることを知っています。

私がこれまでだけで動作していない見てきたすべてのソリューションとして、私は(任意のApache2.2の癖を?)欠けているものは、あります。あたかも私のAllow fromの変更がApacheを再起動しても効果がないかのようです。私は自分の正気を失い始めている。

Satisfy AnyOrder allow, denyAuth*ディレクティブのディレクティブを書くときにも特別な順序がありますが、これが影響していますか?

答えて

0

は、最後にそれを把握するために管理しました! :)

は私のURLは、この記事https://stackoverflow.com/a/23094842/4800587によると、mod_rewriteは、私たちのSetEnvIfAllowディレクティブの後に実行されるmod_rewriteREWRITE_が付けされている私の環境変数が警鐘を鳴らされている必要があります)、によって処理されていたようです。

とにかく、短いストーリーです。私は書き換えられた/最終URLとLocationセクションを使用して、Allow anyディレクティブを使用した認証をバイパスしました。だから私は変更しました...

<Location "/calendar/index.php/export"> 
    Allow from all 
</Location> 

最終的なURL(書き換え後)です。現在は動作しています。

関連する問題