你好开始构建一个应用程序并使用本地 docker keycloak 对其进行了测试,并且运行良好。
但是生产 keycloak 服务器(两者都有相同的版本 24.0.3)在 apache2 反向代理后面运行。这是配置:
ProxyPass "/" "http://localhost:8080/"
ProxyPassReverse "/" "http://localhost:8080/"
HostnameLookups Off
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS}
UseCanonicalName Off
ProxyPreserveHost On
问题是,输入凭据后,keycloak 不会重定向回客户端应用程序,而不是重定向回他自己的主机。 所以网址看起来像这样
https://public.authserver/login/oauth2/code/my-realm?state=V1p3odUrEhJFClMvx6WmlZxVQCjLCjG82VHCPw-K
它应该是 https://localhost:8080/login/oauth2/code/my-realm?state=V1p3odUrEhJFClMvx6WmlZxVQCjLCjG82VHCPw-K
。
服务器使用以下命令启动:
/opt/keycloak/keycloak-24.0.3/bin/kc.sh start --proxy-headers forwarded
你能告诉我可能是什么问题吗?我还得到了另一个使用 apache2-openid-connect 插件和相同 public.authserver 的应用程序,这工作正常。
谢谢您的帮助
问题是,反向代理覆盖了 keycloaks 响应中的位置标头。 我需要删除
ProxyPassReverse "/" "http://localhost:8080/"
线并且它起作用了。