Wildfly部署KEYCLOAK认证应用提示认证机制不存在如何修复?
问题修复方案
你遇到的报错核心原因是应用默认关联的Wildfly安全域没有加载KEYCLOAK认证机制,按以下步骤操作即可修复:
- 步骤1:在应用的
WEB-INF目录下新增jboss-web.xml配置文件,将应用绑定到Keycloak适配器创建的专属安全域,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <jboss-web xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_13_0.xsd" version="13.0"> <security-domain>KeycloakDomain</security-domain> </jboss-web>
- 步骤2:修改Wildfly的
standalone.xml配置,将undertow默认站点关联到Keycloak的HTTP认证工厂,找到undertow子系统下的default-host配置段,修改为如下内容:
<host name="default-host" alias="localhost" http-authentication-factory="keycloak-http-authentication">
你也可以在Docker构建阶段直接通过jboss-cli完成该配置修改,避免手动改配置文件。
- 步骤3:如果仍有类加载相关的隐藏问题,可在应用的
WEB-INF目录下新增jboss-deployment-structure.xml文件,显式引入Keycloak适配器的依赖模块,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <dependencies> <module name="org.keycloak.keycloak-adapter-spi" /> <module name="org.keycloak.keycloak-adapter-core" /> <module name="org.keycloak.keycloak-wildfly-elytron-oidc-adapter" /> </dependencies> </deployment> </jboss-deployment-structure>
完成以上操作后重新打包war包,重启Wildfly容器再重新部署应用即可解决报错。
内容的提问来源于stack exchange,提问作者Iman
相关产品推荐
相关产品推荐

