繁体   English   中英

带有 Tomcat 的 Keycloak:org.keycloak.KeycloakPrincipal 不能转换为 org.keycloak.KeycloakPrincipal

[英]Keycloak with Tomcat: org.keycloak.KeycloakPrincipal cannot be cast to org.keycloak.KeycloakPrincipal

我正在使用 Tomcat 适配器运行 Keycloak。 但是,当我尝试获取 KeycloakPrincipal 时,它会出错;

java.lang.ClassCastException: org.keycloak.KeycloakPrincipal 无法转换为 org.keycloak.KeycloakPrincipal

我的代码非常简单,我的环境设置与 KeyCloak 文档所说的完全一样。

{
    HttpServletRequest request = (HttpServletRequest)getApp().getFromUserStorage(HttpServletRequest.class.getName());
    KeycloakPrincipal kcp = (KeycloakPrincipal) request.getUserPrincipal();
}

关于这里有什么问题的任何想法? 我通过谷歌搜索找到的唯一解决方案与 Maven 配置有关,但此处未使用 Maven。

从WEB-INF 目录移除keycloak 适配器解决了这个问题。

我发现了这个问题。 我的一个库引起了冲突。

我也遇到了同样的问题。

解决方案:

a) Project/maven keycloak jar 和 tomcat/lib keycloak jars 应该有相同的版本

b) 添加 pom.xml 中提供的 scope

<dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-core</artifactId>
        <version>17.0.0</version>
        <scope>provided</scope>
    </dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM