【发布时间】:2019-07-08 21:22:57
【问题描述】:
我刚刚设置了一个keycloak docker容器如下:
docker run --name keycloak --net keycloak-network -e DB_ADDR=mysql -e DB_DATABASE=keycloak -e DB_USER=keycloak -e DB_PASSWORD=mypassword -d -p 8088:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=mypassword -e KEYCLOAK_HOSTNAME="keycloak.example.net" -e PROXY_ADDRESS_FORWARDING=true -e KEYCLOAK_HTTPS_PORT=443 jboss/keycloak
在我的服务器上,我有一个 apache2 网络服务器正在运行,我的站点的以下配置文件可用“keycloak.example.net”:
<virtualhost keycloak.example.net:80>
ServerName keycloak.example.net
Redirect permanent / https://keycloak.example.net/
</virtualhost>
<virtualhost keycloak.example.net:443>
ServerName keycloak.example.net
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/keycloak.example.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/keycloak.example.net/privkey.pem
SSLProxyEngine on
ProxyPreserveHost On
<location />
Order allow,deny
Allow from all
Require all granted
ProxyPass http://localhost:8088/
ProxyPassReverse http://localhost:8088/
</location>
</virtualhost>
我的 apache 网络服务器已经将我(强制 https,如您所见)正确重定向到我的 docker 容器,该容器在我的主机上的 8088 端口上运行,在 docker-containers 内部端口 8080 上。
只要我访问https://keycloak.example.net/auth - 它会尝试将我重定向到正确的 keycloak 站点,但随后会引发此错误:
HTTPS required
我必须改变什么才能让它工作?
【问题讨论】:
-
我今天突然开始看到这个错误。我很困惑,因为我长期以来一直在使用相同的配置和 keycloak 图像。也许有时间依赖性在起作用?
-
我的设置完全是源代码控制的,所以我仍然不明白为什么它坏了。尽管如此,以防它帮助其他人:我将
master领域的sslRequired设置从external更改为none。我还没弄清楚为什么external以前工作过。 -
@Mario 你的设置是什么?您是运行容器还是从源代码构建?
-
你有没有看过这个答案stackoverflow.com/questions/47068266/…这似乎是一个非常相似的案例。
-
@WaldemarEnns 在生产中,我们在 Kubernetes 上运行,但有问题的设置用于本地开发。我们正在运行
jboss/keycloakdocker 镜像。 docker 镜像支持迁移,所以我们使用 JSON 配置文件来设置我们的领域和一些脚本来启用服务帐户。
标签: apache docker https webserver keycloak