美文网首页
[keycloak][case系列] 解决导入realm文件的问

[keycloak][case系列] 解决导入realm文件的问

作者: 无事忙忙 | 来源:发表于2021-01-23 15:57 被阅读0次

    现象

    我遇到 的问题和网上这个issue基本一致

    https://github.com/codecentric/helm-charts/issues/163

    问题基本如下Script upload is disabled

    16:51:04,392 WARN [org.keycloak.services] (ServerService Thread Pool -- 68) KC-SERVICES0005: Unable to import realm quarkus from file /realm/realm.json.: java.lang.RuntimeException: Script upload is disabled

    官网从keycloak7版本后官方已经禁止掉了通过script脚本来import realm 文件的功能

    更坑的是,我发现通过官方的api接口也没办法上传scirpt。报同样的错。

    解决思路

    简单的看了下源码,需要在启动keycloak时设置一个环境变量keycloak.profile.feature.upload_scripts=enabled,本来感觉应该是很简单的配置。但我在docker环境下怎么设置都感觉没生效。于是简单的看了下起动脚本的源码。

    有兴趣的可以看一下。https://github.com/amu007/blog/blob/master/keycloak/case/docker-entrypoint.sh

    细细看了下。原来是代码最后两行。所有应用的系统 变量不是在程序里面去读的。而是放在SYS_PROPS这个变量里面。

    exec /opt/jboss/keycloak/bin/standalone.sh $SYS_PROPS $@

    而SYS_PROPS就根本不会处理变量keycloak.profile.feature.upload_scripts。所以不管怎么设置,keycloak都使用不了这个值

    结论

    找到问题根源,解决起来就比较容易了

    通过类似于注入的方式,把(keycloak.profile.feature.upload_scripts)的声明和赋值注入到某个脚本中支持的变量中去。

    KEYCLOAK_IMPORT="/data/keycloak/realm-export.json -Dkeycloak.profile.feature.upload_scripts=enabled"

    大家参考一下我的 k8s yaml相关部分的起动脚本

    containers: \n

    - name: keycloak

      image: hub.kce.ksyun.com/autodl/keycloak:11.0.2

      imagePullPolicy: Always

      env:

        - name: KEYCLOAK_USER

          value: admin

        - name: KEYCLOAK_PASSWORD

          value: KEYCLOAK_PASSWORD

        - name: KEYCLOAK_IMPORT

          value: "/data/test-realm-config/test-realm.json -Dkeycloak.profile.feature.upload_scripts=enabled"

    写文章不容易。如果对你有帮助。打个赏再走吧

    相关文章

      网友评论

          本文标题:[keycloak][case系列] 解决导入realm文件的问

          本文链接:https://www.haomeiwen.com/subject/sqkuzktx.html