【问题标题】:Apache (2.4) RequireAny with REQUEST_URIApache (2.4) RequireAny 与 REQUEST_URI
【发布时间】:2016-08-03 10:02:50
【问题描述】:

我一直在努力让它工作,但不知道哪里出了问题。

在 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 语句之外的所有语句都在工作,表达式肯定是错误的,但不知道它有什么问题。

【问题讨论】:

    标签: apache mod-auth-kerb


    【解决方案1】:

    我认为您应该尝试在 RequireAny 之前使用“If”,如下所示:

    <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

    【讨论】:

      猜你喜欢
      • 2015-03-27
      • 2023-03-25
      • 1970-01-01
      • 2016-05-09
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 2015-04-28
      相关资源
      最近更新 更多