簡體   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