下面是我在 kubernetes 集群上安装 bitnami keycloak 的命令
helm install kc --set auth.adminPassword=admin,auth.adminUser=admin,service.httpPort=8180 bitnami/keycloak -n my-namespace
我想将领域(包含用户、组、客户端和角色)导入到我的 keycloak 中,但在执行此操作之前,我需要启用上传脚本标志,你们中的大多数人可能已经知道我们可以通过使用standalone.sh 来做到这一点以下 在独立的 keycloak 安装上
bin/standalone.bat -Djboss.socket.binding.port-offset=10 -Dkeycloak.profile.featur
e.upload_scripts=enabled
有人可以帮助我如何使用 helm install 命令通过传递标志来完成此操作,就像我为
auth.adminPassword=admin,auth.adminUser=admin,service.httpPort=8180
所做的那样
提前致谢
在 Keycloak yaml 文件中,您需要添加字段
extraEnvVars
并设置 KEYCLOAK_EXTRA_ARGS
环境变量,如下例所示:
keycloak:
enabled: true
auth:
adminUser: admin
adminPassword: secret
extraEnvVars:
- name: KEYCLOAK_EXTRA_ARGS
value: -Dkeycloak.profile.feature.upload_scripts=enabled
extraVolumeMounts:
...
但是请记住,
upload_scripts
功能将来将从 Keycloak 中删除。
来自 Keycloak 文档:
不推荐通过管理控制台上传脚本的功能 将在 Keycloak 的未来版本中删除
正如 dreamcrash 所说,
upload_scripts
功能已被弃用。至于替代品是什么,Keycloak 文档说:
管理员应始终使用 JAR 文件将脚本直接部署到服务器,以防止在运行时运行脚本时受到攻击。
这意味着您应该将脚本作为 JAR 文件上传到特定文件夹(如果是 docker 容器,则为
/opt/jboss/keycloak/standalone/deployments/
?),并避免将它们放入真正的导入文件中。更多信息请参见 Keycloak 文档。
在最新版本的 quay images 中,upload_scripts 功能已被弃用。我解决问题的方法是使用以下 docker-compose 配置文件:
keycloak:
image: quay.io/keycloak/keycloak:22.0.1
container_name: keycloak
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
JAVA_OPTS_APPEND: "-Dkeycloak.migration.action=import -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=/opt/keycloak/data/import/realms.json -Dkeycloak.migration.replace-placeholders=true"
ports:
- "9080:8080"
volumes:
- ./keycloak:/opt/keycloak/data/import # Mount the realm JSON file
command: start-dev
最重要的是从realms.json文件中删除所有“type”:“js”的策略/节点。应删除的配置示例如下:
[ { "id" : "a664efcb-8bbb-4650-86da-4d5a27dc65a1", "name" : "Default Policy", "description" : "A policy that grants access only for users within this realm", "type" : "js", "logic" : "POSITIVE", "decisionStrategy" : "AFFIRMATIVE", "config" : { "code" : "// by default, grants any permission associated with this policy\n$evaluation.grant();\n" } }, { "id" : "8c6b3e7a-c591-491b-9bcc-59e144ae65c8", "name" : "Default Permission", "description" : "A permission that applies to the default resource type", "type" : "resource", "logic" : "POSITIVE", "decisionStrategy" : "UNANIMOUS", "config" : { "defaultResourceType" : "urn:krakend-client:resources:default", "applyPolicies" : "[\"Default Policy\"]" } } ]
我在这里给出了相同的解决方案: https://github.com/dasniko/testcontainers-keycloak/issues/83