apache - разобрать атрибут в mod_rewrite - PullRequest
0 голосов
/ 22 апреля 2019

У меня на сервере 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 в приведенном выше примере?

...