Apache(2.4)RequireAny with REQUEST_URI

时间:2016-08-03 10:02:50

标签: apache mod-auth-kerb

我一直试图让这个工作,并且不知道它出了什么问题。

在apache配置中,我有以下部分:

<Directory /var/www/html/>
  AuthType Kerberos
  AuthName "Login"
  KrbMethodNegotiate on
  KrbMethodK5Passwd on
  KrbAuthRealms EXAMPLE.LOCAL
  KrbServiceName HTTP/example.local@EXAMPLE.LOCAL
  Krb5KeyTab /etc/httpd/conf/http.keytab
  <RequireAny>
      Require valid-user
      Require local
      Require ip 192.168.2.190
      Require expr %{REQUEST_URI} =~ m#/my/InvalidCredentials#
      Require expr %{REQUEST_URI} =~ m#/my/PublicPage/*#
  </RequireAny>
</Directory>

我试图从身份验证中排除的页面是这样的:

除了Require expr语句之外的所有语句都有效,表达式必定是错误的,但不知道它有什么问题。

1 个答案:

答案 0 :(得分:1)

我相信你应该试试&#34;如果&#34;而在此之前的RequireAny:

<If "%{REQUEST_URI} =~ m#(/my/InvalidCredentials$|/my/PublicPage/)#">
      Require all granted
</If>
<Else>
      <RequireAny>
      #all checks except the require expr
      </RequireAny>
</Else>

对我来说,它看起来更简单,更连贯,对我而言,它就是这样的。

关于您的支票,我不确定为什么它不起作用,文档中的所有示例都用引号括起expr但不确定它只是那个,但希望其他选项有帮助。

在任何情况下,这里都是Require expr示例的链接,以便更快地参考: Require expr