使用 keycloak 9.0.2,我们必须在客户端中使用脚本映射器来添加标头请求中的特定声明,但映射器类型中缺少脚本映射器。
这是我们的 docker-compose 文件的摘录:
version: '3.4'
services:
keycloak:
image: jboss/keycloak:latest
command:
- "-b 0.0.0.0"
- "-Djboss.socket.binding.port-offset=1000"
- "-Dkeycloak.profile.feature.scripts=enabled"
env_file:
- ./keycloak.env
ports:
- 9080:9080
- 9443:9443
- 10990:10990
Run Code Online (Sandbox Code Playgroud)
在日志中,我们在启动时看到这一行:
09:31:55,437 INFO [org.keycloak.common.Profile](ServerService 线程池 - 69)启用预览功能:脚本
但是当我们创建一个新的客户端并添加映射器时,在映射器类型中我们看不到脚本映射器。我们尝试过不使用 docker 的独立版本,但遇到了同样的问题。
我们有什么错?
谢谢。
我会使用环境文件在 docker compose 文件中设置一些变量,以选择要使用的环境:dev、qualif、prod,...但是变量替换无法按我的预期工作。这是我的 docker compose 文件的摘录:
version: '3.4'
x-propertyfile: &propertyfile dev.env
services:
registry:
image: sensor-registry
env_file: *propertyfile
container_name: ${REGISTRY_NAME}
...
other-services:
...
Run Code Online (Sandbox Code Playgroud)
我的 dev.env 文件:
REGISTRY_NAME=registry
... other values
Run Code Online (Sandbox Code Playgroud)
但是当我启动我的 docker-services 时
docker-compose -f compose-file.yml up
Run Code Online (Sandbox Code Playgroud)
我收到消息:
WARNING: The REGISTRY_NAME variable is not set. Defaulting to a blank string.
Run Code Online (Sandbox Code Playgroud)
我尝试设置 env_file 而不使用自定义属性:
services:
registry:
image: sensor-registry
env_file: dev.env
container_name: ${REGISTRY_NAME}
Run Code Online (Sandbox Code Playgroud)
那是行不通的。同上,如果我直接设置变量:
services:
registry:
image: sensor-registry
environment:
- REGISTRY_NAME: registry
container_name: ${REGISTRY_NAME}
Run Code Online (Sandbox Code Playgroud)
但如果我使用默认的环境文件 (.env),那就可以了。我可以通过以下方式启动我的服务:
cat dev.env > .env && docker-compose …Run Code Online (Sandbox Code Playgroud)