到目前为止,在我们的系统中,我们一直在使用Key斗篷3.4.3和Script Authenticator身份验证提供程序功能,作为基于浏览器的身份验证的一部分。现在,在升级到Key斗篷4.6.0.Final之后,我们注意到Script Authenticator
的选项已从列表中消失。
这个功能在Keycloft 4.5.0.Final中仍然存在。由于Keycloft 4.6.0.Final已经修复了这个功能,我们没有使用4.5.0的选项。
我们使用Script Authenticator功能根据LDAP属性将用户"列入白名单"。现在,由于脚本选项被删除,我们无法再使用Keycloft。
你知道为什么删除了脚本验证器吗?或者可能是它被移到了Keycloft管理控制台的另一个地方?
只是添加一些细节:
- Keycloft发行说明中没有提及删除此功能
- Key斗篷4.6.0的Key斗篷文档中仍然提到了脚本验证器
- 现在在Keycloft问题跟踪器Keycloak-8872中也报告了一个问题
您可以通过以下方式启动服务器来启用此功能:
-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"在Keycloft 7.0.1.Final 之后就被弃用了
为了获得最佳解决方案,您必须使用JavaScript提供商
首先感谢拥有profile.feature
解决方案的人。
第二,我想添加一些输入-如果您使用带有docker的keycloft,您将需要运行带有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开始,v17可能会随着WildFly[JBoss]的弃用而发生变化(dev Roadmap 2021-2022(。
对于bitnami图像,env var应该是KEYCLOAK_EXTRA_ARGS
,而不是JAVA_OPTS_APPEND
,并且不要在参数周围添加SINGLE/DOUBLE QUOTE!以下是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