Apache + OpenID, условный доступ для <Location>с использованием директив <If>в сочетании с неограниченным <Location>? - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь использовать Apache с OpenID Connect (mod_auth_openidc) для ограничения доступа, но по определенным путям я хочу неограниченный доступ.Мой httpd.conf содержит что-то вроде этого

    <Location />
        Require valid-user
    </Location>
    <Location /myPath>
        Require all granted
    </Location>

, и / myPath действительно имеет неограниченный доступ, т.е. неавторизованные пользователи получают доступ.

Теперь я пытаюсь добавить некоторые условные ограничения, используя «Если»директивы, но оставьте / myPath по-прежнему неограниченным, например,

    <Location />
        <If someBoolean>
            Require valid-user
        </If>
    </Location>
    <Location /myPath>
        Require all granted
    </Location>

. В этом случае я получаю неограниченный доступ к / myPath только в том случае, если someBoolean имеет значение «false».Если это "true", для доступа к / myPath требуется действительный пользователь, а это не то, что я хочу.Путь по умолчанию "/" работает просто отлично, то есть он требует действительного пользователя тогда и только тогда, когда someBoolean имеет значение "true".

Теперь я попытался провести дополнительное тестирование: когда я добавляю директиву Else, например

    <If someBoolean>
        Require valid-user
    </If>
    <Else>
        Require valid-user
    </Else>

, который в моем понимании должен быть эквивалентен простому использованию

    Require valid-user

Я никогда не получаю неограниченный доступ к /myPath.

Как я могу получить желаемое поведение?

...