Keycloak:缺少脚本验证器?

Keycloak: Script Authenticator missing?

到目前为止,在我们的系统中,我们一直在使用 Keycloak 3.4.3 和 Script Authenticator 身份验证提供程序功能作为基于浏览器的身份验证的一部分。现在,在升级到 Keycloak 4.6.0.Final 后,我们注意到 Script Authenticator 的选项已从列表中消失。

此功能在 Keycloak 4.5 中仍然存在。0.Final。由于 Keycloak 4.6.0.Final 中已修复的功能,我们无法选择使用 4.5.0.

我们使用 Script Authenticator 功能 "whitelist" 我们的用户基于 LDAP 属性。现在,由于删除了脚本选项,我们无法再使用 Keycloak。

知道为什么脚本验证器被删除了吗?或者它可能已经被移动到 Keycloak 管理控制台中的另一个地方?

只是添加一些细节:

您可以通过以下方式启动服务器来启用此功能:

-Dkeycloak.profile.feature.scripts=enabled

或者您可以通过添加以下内容在 profile.properties 文件(在配置文件夹中)中永久设置:

feature.scripts=enabled 

您还需要启用 upload_scripts 作为 :

-Dkeycloak.profile.feature.scripts=enabled -Dkeycloak.profile.feature.upload_scripts=enabled

但此功能 "upload_scripts" 自 Keycloak 7.0 以来已弃用。1.Final

要获得最佳解决方案,您必须使用 JavaScript Providers

首先感谢提供 profile.feature 解决方案的人。

其次,我想添加一些输入 - 如果您将 keycloak 与 docker 一起使用,您将需要 运行 带有 java_opts 参数的容器,这样您就可以这样做:

-e JAVA_OPTS_APPEND="-Dkeycloak.profile.feature.scripts=enabled
-Dkeycloak.profile.feature.upload_scripts=enabled -server -Xms64m -Xmx512m 
-XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true 
-Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true"

请注意,您还需要其他参数,例如 -server-Xms64m 等(您可以根据需要进行调整)。

注意: 从 v16 开始,随着 WildFly [JBoss] 的弃用 (dev Roadmap 2021-2022),v17 的情况可能会发生变化 (dev Roadmap 2021-2022)。

对于 bitnami 图像,环境变量应该是 KEYCLOAK_EXTRA_ARGS,而不是 JAVA_OPTS_APPEND 并且 不要添加 SINGLE/DOUBLE 引用参数 !这是 docker-compose.yaml

中的一个片段
  keycloak:
    image: docker.io/bitnami/keycloak:16.1.0-debian-10-r0
    environment:
      - KEYCLOAK_EXTRA_ARGS=-Dkeycloak.profile.feature.scripts=enabled -Dkeycloak.profile.feature.upload_scripts=enabled -Dkeycloak.profile.feature.token_exchange=enabled -Dnashorn.args=--no-deprecation-warning