У меня на сервере apache есть файл, содержащий имена пользователей и связанные с ними роли /etc/httpd/access_control.txt
Содержимое:
user1@example.com admin
user2@example.com. user
Я хочу передать эту информацию на мой сервер прослушивания с помощью mod_proxy
и mod_rewrite
Это то, что я сделал до сих пор:
<VirtualHost *:443>
...
SSLProxyEngine On
RewriteMap user_roles "txt: /etc/httpd/access_control.txt"
<Proxy *>
RewriteEngine On
RewriteRule .* - [E=USER_ROLE:${user_roles:email}]
RequestHeader set X-Forwarded-User "%{email}e"
RequestHeader set X-Forwarded-Roles "admin" # Works!
RequestHeader set X-Forwarded-Roles "%{USER_ROLE}e" # Doesn't Works
</Proxy>
</VirtualHost>
Я получаю email
в атрибуте запроса, переданного в Apache.Мне удалось передать идентификатор электронной почты в качестве имени пользователя в заголовке X-Forwarded-User
.
Хотя, теперь, когда я пытаюсь получить роли, связанные с конкретным пользователем, это не работает.
Также обратите внимание: если я передаю роль непосредственно в заголовок, аутентификация работает нормально.
RequestHeader set X-Forwarded-Roles "admin"
Может кто-нибудь помочь мне определить, в чем может быть проблема?
ОБНОВЛЕНИЕ :
Я попытался явно передать имя пользователя в RewriteRule
, чтобы проверить, правильно ли настроен RewriteMap
:
RewriteRule .* - [E=USER_ROLE:${user_roles:user1@example.com}]
И это работает.Итак, как мне передать атрибут email
в приведенном выше примере?