Após analisar a documentação do LogBack sobre o registro de IPs do cliente e o correspondente código para o servlet MDCInsertingServletFilter , você deve usar o X-Forwarder-For
header.
Substituímos ClientIP
por X-Forwarder-For
no balanceador de carga, atualizamos httpd.conf
LogFormat
para log X-Forwarder-For
e, em seguida, atualizamos o arquivo logging.xml
do Shibboleth da seguinte forma para os registros de auditoria:
<appender name="IDP_AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>/app/shibboleth-idp/logs/idp-audit.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>/app/shibboleth-idp/logs/idp-audit-%d{yyyy-MM-dd}.log</FileNamePattern>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<charset>UTF-8</charset>
<Pattern>%msg|%X{req.xForwardedFor}|%n</Pattern>
</encoder>
</appender>
Também fizemos alterações semelhantes no processo idp e não precisou atualizar o log do Tomcat .
Espero que isso ajude os outros.
Editar 1: registro do Tomcat
Acontece que, depois de um tempo, o endereço IP X-Forwarded-For
parou de aparecer nos registros de IdP do Shib. Acabamos adicionando o RemoteIpValve
no tomcat e reiniciando. Parece que é necessário depois de tudo:
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
trustedProxies="--IPs here--"
protocolHeaderHttpsValue="https" />