У меня Apache / Shibboleth обслуживает запросы к обратному прокси-серверу и напрямую к веб-клиентам. Когда запрос приходит через прокси, я извлекаю исходный IP-адрес и пытаюсь отправить его в shibboleth. Однако это не работает правильно. У меня по-прежнему появляется ошибка, что IP-адрес не соответствует тому, который использовался при аутентификации с помощью IdP.
В моей конфигурации apache есть следующий блок Location. Я знаю, что REMOTE_ADDR, по крайней мере, отправляется в shibd, поскольку, когда я установил его на X-Forwarded-For, ошибка включает всю цепочку IP-адресов прокси, но следующее не работает и просто показывает IP-адрес последнего прокси как не соответствующий авторизованный IP.
<Location />
SetEnvIf X-FORWARDED-FOR "^.+$" DenyRequest
SetEnvIf Remote_Addr "^XXX\.XXX\.XXX\.XXX$" !DenyRequest
Order allow,deny
Deny from env=DenyRequest
Allow from all
SetEnvIf Remote_Addr "^(.+)$" RealAddress=$1
SetEnvIf X-Forwarded-For "^(\d{1,3}+\.\d{1,3}+\.\d{1,3}+\.\d{1,3}+).*" RealAddress=$1
RequestHeader set X-RealAddress %{RealAddress}e
AuthType shibboleth
ShibRequestSetting requireSession 1
ShibRequestSetting REMOTE_ADDR X-RealAddress
Require user
</Location>