Оказывается, проблема конфигурации на стороне защищенного приложения , которая также касается других адаптеров Keycloak, таких как Фильтр сервлетов Java или Spring .
По умолчанию любое защищенное приложение будет игнорировать заголовок X-Forwarded-Proto
.
NodeJS
Используемая веб-платформа (например, Express) должна быть настроена научитывайте заголовки прокси.
Для Express в документации указано, что приложение должно доверять прокси, например:
app.set('trust proxy', 'loopback');
Адаптеры Java
Для Spring очень мало настроек, которые можно сделать как для документов , в application.properties :
server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto
Для фильтра сервлетов Java естьНесколько решений:
Клапан Tomcat может быть добавлен к server.xml :
<Valve className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="127.0.0.1"
remoteIpHeader="x-forwarded-for"
proxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto" />
Возможно также реализовать новый фильтр сервлетов перед Адаптер фильтра Keycloak, зарегистрированный в web.xml , как в в этом примере .