Keycloak中缺少基于JS的策略选项?

6

我正在尝试在Keycloak中创建一个基于JS的策略,文档说明如下:

要创建一个新的基于JavaScript的策略,请在策略列表右上角的下拉列表中选择JavaScript。

但是当我进入MyClient->授权->策略并点击右上角的创建策略下拉菜单时,没有"JS-based policy"选项。

我有什么遗漏吗?列表中唯一的策略是类型为jsDefault Policy,这也让我感到困惑,因为这意味着应该可以使用基于JS的策略。

我正在运行Keycloak 10.0.0版本,但我也尝试过9.0.3版本。

2个回答

10

2
在新版本的Keycloak(>=18.0.0),您需要启用“scripts”功能来构建实例。
我将使用环境变量完成此操作:
...
ENV KC_FEATURES=account-api,account2,authorization,client-policies,impersonation,docker,scripts,upload_scripts
RUN /opt/keycloak/bin/kc.sh build
...

如果有人感兴趣,这是完整的Dockerfile用于构建keycloak镜像:

FROM quay.io/keycloak/keycloak:18.0.0 as builder

ENV KC_HEALTH_ENABLED=true
ENV KC_METRICS_ENABLED=true
ENV KC_FEATURES=account-api,account2,authorization,client-policies,impersonation,docker,scripts,upload_scripts
ENV KC_DB=postgres
# Install custom providers
RUN curl -sL https://github.com/aerogear/keycloak-metrics-spi/releases/download/2.5.3/keycloak-metrics-spi-2.5.3.jar -o /opt/keycloak/providers/keycloak-metrics-spi-2.5.3.jar
RUN /opt/keycloak/bin/kc.sh build
USER root
RUN chown root:root -R /opt/keycloak

FROM quay.io/keycloak/keycloak:18.0.0
COPY --from=builder --chown=keycloak:root /opt/keycloak /opt/keycloak
WORKDIR /opt/keycloak
ENTRYPOINT ["/opt/keycloak/bin/kc.sh", "--verbose", "start", "--import-realm", "--http-relative-path=/auth"]

您还可以将功能作为参数传递:--features=

[更新] 不幸的是,从版本18开始,keycloak取消了从管理员上传JS脚本的支持。因此,您需要将它们部署为.jar(zip)文件。这样做是可行的,但会使JS模块的开发和测试变慢。

有关更多详细信息,请参见启用/禁用功能文档


Kostanos,你有类似的示例吗?https://www.keycloak.org/docs/latest/server_development/#_script_providers我按照这个文档进行了操作,并确认.zip文件中所有内容都已存在。但是在Keycloak仪表板中没有看到策略。 - Noah Kreiger
你需要在管理员中启用该策略(一旦添加了脚本)。 - Kostanos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接