ssl 全局禁用https keycloak

up9lanfz  于 2023-03-30  发布在  其他
关注(0)|答案(4)|浏览(219)

部署在AWS上,我不想隧道到盒子并打开浏览器来禁用它。
似乎存在一种配置:"ssl-required":"none",可以放在keycloak-server.json文件中,但我不确定在哪个对象下。我在“realm”下尝试过,并且没有运气。
我不想在适配器级别禁用它,它需要全局禁用,那么"ssl-required":"none"在哪里,或者如何全局禁用ssh/https?
(Also,我明白这在生产中是不推荐的。)

fzsnzjdm

fzsnzjdm1#

在“主”领域中,在登录选项卡上。将“需要SSL”属性更改为无。

如果您无法在本地访问keycloak,并且它配置了数据库(例如Postgres),则执行以下SQL语句。

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

有必要重启keycloak

46scxncf

46scxncf2#

我运行了Keycloak admin命令来应用sslRequired=NONE。

$ docker exec -it CONTAINER-ID bash
$ cd /opt/jboss/keycloak/bin/
-- Run authenticate
$ ./kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin
-- Apply sslRequired to none
$ ./kcadm.sh update realms/master -s sslRequired=NONE

如果您不知道用户名和/或密码,我建议您运行:

$ ./add-user-keycloak.sh --server http://localhost:8080/admin --realm master --user admin --password YOUR-PASSWORD
yiytaume

yiytaume3#

在我的例子中,我使用Sping Boot 的Keycloak Server。我可以通过代码从Master Realm更改sslRequired,扩展KeycloakApplication:

public class EmbeddedKeycloakApplication extends KeycloakApplication {
...

public EmbeddedKeycloakApplication() {
        super();        
        changeMasterRealm();
        ...
    }

private void changeMasterRealm() {
        KeycloakSession session = getSessionFactory().create();
        try {
            session.getTransactionManager().begin();
            RealmManager manager = new RealmManager(session);
            manager.getRealm("master").setSslRequired(SslRequired.NONE);
            session.getTransactionManager().commit();
        } catch (Exception ex) {            
            session.getTransactionManager().rollback();
        }
       
...
holgip5t

holgip5t4#

我试过下面。

docker run \
  --name new-keycloak \
  -dti \
  -p 8080:8080 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=admin \
  -e KC_HOSTNAME=localhost \
  -e KC_HOSTNAME_STRICT=false \
  -e KC_HOSTNAME_STRICT_HTTPS=false \
  -e KC_HTTP_ENABLED=true \
  quay.io/keycloak/keycloak:20.0.2 \
  start-dev

但是它仍然需要HTTPS。在搜索了更多之后,我看到了一个答案,可以像下面这样做。
我在启动容器时没有使用任何4个“KC_”环境变量。然后我进入容器并像这样使用kcadm.sh:

cd /opt/keycloak/bin
./kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin
./kcadm.sh update realms/master -s sslRequired=NONE

然后它就像一个魅力。

相关问题