Eu tenho o Apache / Shibboleth atendendo solicitações para um proxy reverso e diretamente para os clientes da web. Quando um pedido vem através do proxy, eu extraio o endereço IP original e tento enviá-lo para o shibboleth. No entanto, isso não parece estar funcionando corretamente. Ainda me dá um erro que o endereço IP não corresponde ao usado quando autenticado com o IdP.
Eu tenho o seguinte bloco de localização na configuração do meu apache. Eu sei que REMOTE_ADDR é pelo menos enviado para o shibd desde quando eu o configurei como X-Forwarded-Para o erro inclui toda a cadeia de IPs de proxy, mas o seguinte não funciona e apenas mostra o endereço IP do último proxy como não correspondendo ao IP de autoria.
<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>
Tags apache-2.2 shibboleth