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 jar 应该有相同的版本
b) 添加 pom.xml
中提供的范围
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
<version>17.0.0</version>
<scope>provided</scope>
</dependency>
我是 运行 带有 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 jar 应该有相同的版本
b) 添加 pom.xml
中提供的范围<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
<version>17.0.0</version>
<scope>provided</scope>
</dependency>