Apache2.2允许来自env=\u变量_

Apache2.2允许来自env=\u变量_,apache,apache2.2,setenvif,Apache,Apache2.2,Setenvif,我已经用LDAP授权设置了Apache2.2,它的工作方式与预期的一样非常好,而且我已经实现了这一点,这样我可以在本地访问它时绕过身份验证 允许从localIP主机名a主机名b等 如果我从服务器curl,我不需要任何身份验证。所以一切都很好,工作如期 我现在需要做的是创建一个特定的URL来绕过授权 我已经尝试了使用setenif的所有常用解决方案 SetEnvIf Request_URI "^/calendar/export" bypassauth=true` Allow from env=by

我已经用LDAP授权设置了Apache2.2,它的工作方式与预期的一样非常好,而且我已经实现了这一点,这样我可以在本地访问它时绕过身份验证

允许从
localIP主机名a主机名b等

如果我从服务器
curl
,我不需要任何身份验证。所以一切都很好,工作如期

我现在需要做的是创建一个特定的URL来绕过授权

我已经尝试了使用
setenif
的所有常用解决方案

SetEnvIf Request_URI "^/calendar/export" bypassauth=true`
Allow from env=bypassauth IP_ADDRESS HOSTNAME_A HOSTNAME_B
但这根本不起作用

  • 本地访问仍然不受限制,但远程访问则不受限制(无更改)
  • 如果我将服务器环境变量转储到该URL的脚本中,我可以看到传递的是
    bypassauth
    变量 我一辈子都搞不明白为什么
    Allow from env=bypassauth
    部分不工作,而它仍然遵守附加的指令参数

    我还尝试了另一个建议,使用位置指令

    <Location /calendar/export>
      Satisfy Any
      Allow from all
      AuthType None
    
      SetEnv WTF 123
    </Location>
    
    
    满足任何
    通融
    AuthType无
    SetEnv WTF 123
    
    同样,我可以看到我的新环境变量(
    WTF
    )出现在这个URL上(当我在脚本中转储服务器环境时),因此我知道
    SetEnv
    setenif
    指令正在工作

    我有没有遗漏什么(Apache2.2有什么怪癖?),因为到目前为止我看到的所有解决方案都不起作用。这就好像我的
    Allow from
    更改在重新启动Apache后没有任何效果。我开始感觉到我的精神错乱了


    满足任何
    命令允许、拒绝
    Auth*
    指令编写指令时,是否也有一个特定的顺序,这可能会影响这一点?

    最终设法解决了!!:)

    似乎我的url正在被
    mod_rewrite
    处理(我的环境变量前缀为
    rewrite
    应该会发出警报),根据这篇文章的说法,
    mod_rewrite
    是在我们的
    setenif
    Allow
    指令之后执行的

    总之,长话短说;我使用重写的/最终的URL和
    位置
    部分绕过使用
    允许任何
    指令的身份验证。所以我改变了

    <Location "/calendar/export">
      Allow from all
    </Location>
    
    
    通融
    

    
    通融
    
    这是最终的URL(重写后),现在可以使用了

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