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

Можно ли настроить 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 какое-либо экранирование, что делает невозможным однозначный синтаксический анализ (если я прав...)

решение1

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

Связанный контент