美文网首页
[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