全局禁用 https keycloak

Globally disable https keycloak

部署在 AWS 上,我不想通过隧道打开浏览器来禁用它。

似乎存在一个配置:"ssl-required":"none" 可以放在keycloak-server.json 文件中,但我不确定在哪个对象下。我已经在 "realm" 下尝试过,但没有成功。

我不想在适配器级别禁用它,它需要全局禁用,那么 "ssl-required":"none" 到哪里去了,或者 ssh/https 如何全局禁用?

(另外,据我所知,在生产中不推荐这样做。)

在 "master" 领域,在登录选项卡上。将 'Require SSL' 属性 更改为 none.

如果你无法在本地访问keycloak,并且它配置了一个数据库,例如Postgres,那么执行下面的SQL句。

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

需要重启keycloak

我是 运行 de 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

如果你不知道用户 and/ou 密码我推荐 运行:

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

就我而言,我正在使用带有 Spring Boot 的 Keycloak 服务器。 我可以通过代码从 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();
        }
       
...