java.lang.IllegalStateException :Current user principal is not of type when i try to integrate keycloak with spring boot web + spring security project

标签 java spring-boot spring-security thymeleaf keycloak

我创建了一个要部署在应用程序服务器中的 Spring Boot Web 项目 (.war)。我想将 keycloak sso 与 spring security 集成。到 keycloak 登录页面的重定向工作正常。但之后它会在浏览器中抛出错误。

浏览器中抛出的错误

There was an unexpected error (type=Internal Server Error, status=500). Current user principal is not of type [org.keycloak.KeycloakPrincipal]: org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken@450ca8a1: Principal: da02ad1b-32c1-4dde-a6f4-b56a06d7dc2e; Credentials: [PROTECTED]; Authenticated: true; Details: org.keycloak.adapters.springsecurity.account.SimpleKeycloakAccount@20e00226; Not granted any authorities

应用程序服务器控制台出错

2019-11-12 14:29:38.306 ERROR 6280 --- [nio-8089-exec-5] o.s.b.w.servlet.support.ErrorPageFilter : Forwarding to error page from request [/] due to exception [Current user principal is not of type [org.keycloak.KeycloakPrincipal]: org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken@f4a97409: Principal: da02ad1b-32c1-4dde-a6f4-b56a06d7dc2e; Credentials: [PROTECTED]; Authenticated: true; Details: org.keycloak.adapters.springsecurity.account.SimpleKeycloakAccount@11f292bf; Granted Authorities: KeycloakRole{role='user-premium'}, KeycloakRole{role='user'}]

java.lang.IllegalStateException: Current user principal is not of type [org.keycloak.KeycloakPrincipal]: org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken@f4a97409: Principal: da02ad1b-32c1-4dde-a6f4-b56a06d7dc2e; Credentials: [PROTECTED]; Authenticated: true; Details: org.keycloak.adapters.springsecurity.account.SimpleKeycloakAccount@11f292bf; Granted Authorities: KeycloakRole{role='user-premium'}, KeycloakRole{role='user'} at org.springframework.web.servlet.mvc.method.annotation.ServletRequestMethodArgumentResolver.resolveArgument(ServletRequestMethodArgumentResolver.java:166) ~[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletRequestMethodArgumentResolver.resolveArgument(ServletRequestMethodArgumentResolver.java:121) ~[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE] at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:126) ~[spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:166) ~[spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]

最佳答案

exception [Current user principal is not of type [org.keycloak.KeycloakPrincipal]

您应该使用KeycloakAuthenticationToken而不是KeycloakPrincipal

关于java.lang.IllegalStateException :Current user principal is not of type when i try to integrate keycloak with spring boot web + spring security project,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58817175/

相关文章:

java - 当我从其他类调用该方法时,我的应用程序崩溃

java - ReactJS/Axios 并使用 Streams 处理较长的响应时间?

java - Spring Boot 通过 REST 端点将大型数据库导出到 csv

java - 什么 int 值用于 ServletRequestAttributes 范围?

java - 无法在 Spring Boot 中禁用 CSRF 安全性

java - 确保在子类构造结束时调用该方法

具有数组返回类型的 Java ImageWorker 发布/处理方法

java swing 单选按钮 - java.lang.NullPointerException

java - Spring Boot with Camel 无法加载应用程序上下文

java - Spring 安全: Cannot resolve reference to bean while setting constructor argument