You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wildfly 11迁移至26.01:Keycloak登录模块CLI配置求助

适配Wildfly 26 Elytron的Keycloak安全域配置

问题根源

Wildfly 26中旧版security子系统已被弃用,必须使用Elytron子系统。你之前的命令存在两个核心问题:一是沿用了旧版Keycloak LoginModule类名,二是Elytron的CLI配置结构与旧系统不同。


1. 安装Keycloak Elytron适配器

Wildfly 26需要使用Keycloak Elytron专属适配器,而非旧版JBoss适配器,先安装对应模块:

JBOSS_CLI="/opt/wildfly/bin/jboss-cli.sh --connect"
# 替换XXX为与Wildfly26兼容的Keycloak版本(建议19+)
$JBOSS_CLI --command="module add --name=org.keycloak.keycloak-elytron-adapter --resources=keycloak-elytron-adapter-XXX.jar --dependencies=javax.api,javax.security.auth.message.api,javax.servlet.api,org.jboss.elytron,org.jboss.logging,org.keycloak.keycloak-common,org.keycloak.keycloak-core,org.keycloak.keycloak-adapter-core"

2. 创建Elytron安全域

替换旧版security子系统的安全域,创建Elytron安全域并配置Classic认证:

# 创建基础安全域
$JBOSS_CLI --command="/subsystem=elytron/security-domain=myAPP:add(default-realm=ApplicationRealm, permission-mapper=default-permission-mapper)"

# 配置Classic认证,使用Elytron版本的Keycloak LoginModule
$JBOSS_CLI --command="/subsystem=elytron/security-domain=myAPP/authentication=classic:add(login-modules=[{\"code\" => \"org.keycloak.adapters.elytron.KeycloakLoginModule\",\"flag\" => \"required\"}])"

重点:此处LoginModule类名是org.keycloak.adapters.elytron.KeycloakLoginModule,而非旧版的org.keycloak.adapters.jboss.KeycloakLoginModule,这是你之前命令失败的核心原因。

3. 绑定到Undertow子系统

Elytron中Web应用的认证需通过HTTP认证工厂绑定到Undertow:

# 创建HTTP认证工厂
$JBOSS_CLI --command="/subsystem=elytron/http-authentication-factory=myAPP-http-auth:add(security-domain=myAPP, http-server-mechanism-factory=global, mechanism-configurations=[{mechanism-name=KEYCLOAK, mechanism-realm-configurations=[{realm-name=ApplicationRealm}]}])"

# 将认证工厂绑定到Undertow应用安全域
$JBOSS_CLI --command="/subsystem=undertow/application-security-domain=myAPP:add(http-authentication-factory=myAPP-http-auth)"

4. 验证配置

执行以下命令检查配置是否生效:

$JBOSS_CLI --command="/subsystem=elytron/security-domain=myAPP:read-resource"
$JBOSS_CLI --command="/subsystem=undertow/application-security-domain=myAPP:read-resource"

额外配置(可选)

若你的应用需要自定义Keycloak参数(如Realm、Client ID等),可在LoginModule中添加module-options:

$JBOSS_CLI --command="/subsystem=elytron/security-domain=myAPP/authentication=classic:add(login-modules=[{\"code\" => \"org.keycloak.adapters.elytron.KeycloakLoginModule\",\"flag\" => \"required\", \"module-options\" => {\"realm\" => \"your-realm\", \"auth-server-url\" => \"https://your-keycloak/auth\", \"resource\" => \"your-client-id\", \"credential\" => \"your-client-secret\"}}])"

内容的提问来源于stack exchange,提问作者Cstewa20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:15:33