以管理员身份登录 Keycloak 时“需要 HTTPS”

问题描述 投票:0回答:9

enter image description here

我在

Keycloak (version 1.0.4.Final)
服务器中使用
JBOSS AS 7.1.1
。服务器位于亚马逊AWS上。

我可以使用 keycloak 启动 jboss 服务器。我可以在点击 URL 时看到 keycloak 默认屏幕 -

ServerIP:8080/auth

但是当我单击

Administration Console
链接转到登录屏幕时。我收到一个页面,上面写着 -
HTTPS required

服务器在AWS上,更改为

"ssl-required" : "none",
在通用适配器配置中没有帮助。

如何解决这个问题?

编辑:我在 keycloak-1.2.0.Beta1 版本中没有遇到此问题。

jboss7.x keycloak
9个回答
57
投票

我在 docker 容器内运行 key cloak,keycloak 命令行工具在 keycloak 容器内可用。

docker exec -it {contaierID} bash
cd keycloak/bin
./kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin
./kcadm.sh update realms/master -s sslRequired=NONE

如果没有创建admin用户,则可以通过此命令创建用户。

./add-user-keycloak.sh --server http://ip_address_of_the_server:8080/admin --realm master --user admin --password adminPassword

更新: 对于较新版本,文件可在以下路径中找到:

/opt/jboss/keycloak/bin


46
投票

如果您想在您的领域禁用它并且无法使用 UI,请直接在数据库上执行此操作:

update REALM set ssl_required='NONE' where id = 'master';

注意 - 重新启动 keycloak 即可生效


20
投票

您可以使用 keycloak 命令行管理工具来更改设置,只要它可以验证本地 IP 地址即可。您可以在本地主机上临时启动 Keycloak 来进行此更改。

kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin
kcadm.sh update realms/realmname -s sslRequired=NONE

显然,请确保根据需要替换域名、用户名、端口等。

有关 Admin CLI 入门的更多信息,请参阅文档:服务器管理:Admin CLI


18
投票

这是相当老的,现在是发布版本(我正在使用 Keycloak 1.9.3 演示/开发者包),但是为了节省一些可怜的灵魂一些时间......

Keycloak 现在对所有外部 IP 地址默认使用 HTTPS。不幸的是,据我所知,演示包附带的 Wildfly 实例不支持 HTTPS。如果您在远程计算机上安装 Keycloak,则这是一个相当疯狂的默认设置,因为实际上无法直接访问 Keycloak 管理控制台。

此时,你有两个选择; 1) 在 Wildfly 中安装 HTTPS 或 2) 通过 SSH 隧道连接到远程计算机并通过它代理您的浏览器,转到管理控制台并关闭 SSL 要求(领域设置 -> 登录 -> 需要 SSL)。这是可行的,因为本地连接不需要 SSL。

记住首先要创建管理员用户,方法是转到 $KEYCLOAK_HOME/keycloak/bin 并运行 ./add-user-keycloak -r master -u <> -p <>。这个添加用户脚本不像 Wildfly 添加用户脚本那样是交互式的,您需要将其全部放在命令行上。

希望这有帮助!


11
投票

有点晚了,但我相信人们会发现这很有用。如果您使用 docker 运行 keycloak,而不是转发端口 8080,而是转发 8443,它的工作方式就像魅力一样。

docker run -p 8443:8443 -e KEYCLOAK_USER=username -e KEYCLOAK_PASSWORD=password jboss/keycloak

1
投票

我在 docker keycloak 中测试: 探测:领域设置 -> 登录 -> 需要 SSL 并关闭。 或 docker exec YOUR_DOCKER_NAME /opt/jboss/keycloak/bin/jboss-cli.sh --connect \ "/subsystem=undertow/server=default-server/http-listener=default:read-resource"


1
投票

如果您在 kubernetes 上部署 keycloak,您可以尝试设置以下 ENV VAR

spec:
  containers:
  - name: keycloak
    env:
    - name:  PROXY_ADDRESS_FORWARDING
      value: "true"

0
投票

尝试连接keycloak数据库并更新表

update REALM set ssl_required='EXTERNAL' where name = 'master';

然后重启docker

docker compose restart

0
投票

只是一个完整的工作 docker-compose:

version: '3'

services:
  keycloak:
    image: jboss/keycloak:latest
    environment:
      - KEYCLOAK_USER=admin
      - KEYCLOAK_PASSWORD=admin
      - PROXY_ADDRESS_FORWARDING=true
      - DB_VENDOR=mysql
      - DB_ADDR=db
      - DB_PORT=3306
      - DB_DATABASE=keycloak
      - DB_USER=keycloak
      - DB_PASSWORD=example
    ports:
      - "8181:8080"
      - "9990:9990"
  db:
    image: mysql:5
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: keycloak
      MYSQL_USER: keycloak
      MYSQL_PASSWORD: example
    volumes:
      - ../data-keycloak:/var/lib/mysql
    ports:
      - "3309:3306"

然后在db中执行:

update REALM set ssl_required='NONE' where name = 'master';

当然,这不适用于生产,除非您在安全的环境中使用。

© www.soinside.com 2019 - 2024. All rights reserved.