【问题标题】:Globally disable https keycloak全局禁用 https 密钥斗篷
【发布时间】:2016-11-15 05:27:52
【问题描述】:

部署在 AWS 上,我不想通过隧道连接到盒子并打开浏览器来禁用它。

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

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

(另外,我知道不建议在生产中这样做。)

【问题讨论】:

    标签: ssl https keycloak


    【解决方案1】:

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

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

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

    需要重启keycloak

    【讨论】:

    • 如果您只有 SSH 访问权限并且 Keycloak 与嵌入式 DB 一起运行,您可以使用本机 DB 客户端,例如对于 H2: java -cp .jar org.h2.tools.Shell -url "jdbc:h2:file:" -user -password -sql "update REALM set ssl_required='NONE' 其中 id = 'master'"
    • 例如java -cp modules/system/layers/base/com/h2database/h2/main/h2-1.4.193.jar org.h2.tools.Shell -url "jdbc:h2:./standalone/data/keycloak" -user sa -password sa -sql "update REALM set ssl_required='NONE' where id = 'master'"
    【解决方案2】:

    我运行 de Keycloak 管理命令来应用 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
    

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

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

    【讨论】:

    • 在 docker 容器内。我收到此错误:bash: cd: keycloak/bin: No such file or directory
    • keycloak bin的正确路径作为写此评论的时间kecloak is 12.0.4/opt/jboss/keycloak/bin的最新版本@
    【解决方案3】:

    我的情况是,我将 Keycloak Server 与 Spring Boot 一起使用。 我可以通过代码从 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();
            }
           
    ...
    

    【讨论】:

    • 或者你可以用这个来获取Realm:manager.getKeycloakAdminstrationRealm().setSslRequired(SslRequired.NONE);
    猜你喜欢
    • 2021-10-30
    • 2021-08-02
    • 2018-07-08
    • 2023-02-10
    • 2023-01-13
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多