【发布时间】:2020-05-05 14:28:56
【问题描述】:
我在 Tomcat 中实现自己的身份验证过滤器时遇到了一些问题。当我部署项目时,我得到以下日志:
引起:java.lang.ClassCastException:类 com.somename.sec.sso.camunda.KeycloakSSOAuthenticationProvider 不能 上课 org.camunda.bpm.engine.rest.security.auth.AuthenticationProvider (com.somename.sec.sso.camunda.KeycloakSSOAuthenticationProvider 在 加载器 java.net.URLClassLoader @6fc6f14e 的未命名模块; org.camunda.bpm.engine.rest.security.auth.AuthenticationProvider 在 loader的未命名模块 org.apache.catalina.loader.ParallelWebappClassLoader @7a498efa)
这很奇怪,因为我的 KeycloakSSOAuthenticationProvider 实现了 AuthenticationProvider。显然,由于不同的类加载器,转换失败。我想当我定义身份验证过滤器时,我的 web.xml 文件中的转换失败:
<!-- Container Based Authentication filter -->
<filter>
<filter-name>Container Based Authentication Filter</filter-name>
<filter-class>org.camunda.bpm.webapp.impl.security.auth.ContainerBasedAuthenticationFilter</filter-class>
<init-param>
<param-name>authentication-provider</param-name>
<param-value>com.somename.sec.sso.camunda.KeycloakSSOAuthenticationProvider</param-value>
</init-param>
</filter>
有没有办法强制KeycloakSSOAuthenticationProvider 加载与AuthenticationProvider 相同的类加载器?或者我应该如何解决这个问题?
【问题讨论】:
标签: java tomcat casting classloader camunda