Я пытаюсь использовать модуль аутентификации OpenID Apache. В соответствии с эта страница, Я смогу использовать REMOTE_USER
Переменная Apache для идентификации пользователя. Я бы хотел передать это как заголовок вышестоящему приложению (я использую Apache для аутентификации и обратного прокси).
Конфигурация моего сайта Apache выглядит следующим образом:
<VirtualHost *:80>
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
<Location />
AuthType OpenID
require valid-user
AuthOpenIDAXRequire email http://axschema.org/contact/email @muller\.io$
AuthOpenIDAXUsername email
RequestHeader set x-username $REMOTE_USER
</Location>
</VirtualHost>
Я искал и искал, но больше всего я могу найти, как использовать переменную среды в этом контексте. Я проверил, что жестко запрограммированная строка работает (на самом деле приведенная выше строка передает строку "$REMOTE_USER"
к моему приложению).
Если mod_auth_openid
устанавливает REMOTE_USER
переменная внутри Apache, как я могу передать это в свое приложение?
Покопав еще немного, я обнаружил эта страница со следующим кодом:
RewriteEngine On
RewriteCond %{REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1]
RequestHeader set REMOTE_USER %{RU}e
Это была волшебная пуля, которая исправила это для меня. Я читал некоторые страницы, которые предполагают, что это может быть неверно (и действительно выглядит неуклюжим), поэтому, пожалуйста, не стесняйтесь порекомендовать что-то получше.