Назад | Перейти на главную страницу

Могу ли я настроить Apache httpd для удаления / замены всех заголовков запросов, соответствующих шаблону?

Я использую Apache httpd в качестве обратного прокси перед веб-приложением. Аутентификация выполняется модулем (mod_auth_mellon), который устанавливает различные переменные среды запроса с подробностями об аутентифицированном пользователе (имя пользователя, отображаемое имя и т. Д.).

Я использую mod_headers, чтобы удалить заголовки из входящего запроса и заменить их значением переменных среды запроса, которые были установлены с помощью mod_auth_mellon.

RequestHeader unset mellon_uid
RequestHeader set mellon_uid "%{mellon_uid}e" env=mellon_uid

Таким образом, любой предоставленный клиентом mellon_uid заголовок выброшен. Если mod_auth_mellon считает, что пользователь вошел в систему, то новый mellon_uid Заголовок запроса добавляется к запросу, который отправляется веб-приложению.

Пока что я сделал это управляемым с помощью mod_macro:

Use Attribute uid
Use Attribute display_name
Use Attribute email

... и так далее, где Attribute это макрос, который расширяется до двух RequestHeader директивы выше для предоставленного атрибута.

Однако некоторые данные пользователя имеют многозначные значения, для которых mod_auth_mellon устанавливает несколько переменных среды запроса в форме:

mellon_foo_0 = first
mellon_foo_1 = second
mellon_foo_2 = third
mellon_foo_N = 3

Поскольку количество значений атрибута может варьироваться, я не могу полагаться на статический список переменных для такой обработки.

Я бы не хотел использовать MellonMergeEnvVars, который вместо этого установил бы следующее:

mellon_foo = first;second;third
mellon_foo_N = 3

... потому что это означает, что веб-приложение теперь должно решать сложность правильного синтаксического анализа mellon_foo заголовок запроса, имеющий дело со значениями, которые сами содержат точки с запятой и т. д. Действительно, мне не ясно, что mod_auth_mellon выполняет какое-либо экранирование, что делает невозможным однозначный синтаксический анализ (если я прав ...)

Я думаю, что пока вы смотрите только на первое mellon_foo_N values, здесь не должно быть никакого риска, потому что mod_auth_mellon всегда будет устанавливать эти значения самостоятельно, переопределяя любые значения, которые пользователь может попытаться отправить. Он также должен всегда устанавливать mellon_foo_N, но вы всегда можете сначала отключить его, чтобы быть уверенным.