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

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

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

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

Теперь я пытаюсь добавить некоторые условные ограничения, используя директивы "If", но оставляю /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.

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

0 ответов

Другие вопросы по тегам