Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Encountering NullPointerException - KeycloakIdentity.getUserFromToken() when running admin-ui locally #28643

@jhchong92

Description

@jhchong92

Before reporting an issue

  • I have read and understood the above terms for submitting issues, and I understand that my issue may be closed without action if I do not follow them.

Area

admin/ui

Describe the bug

When running admin-ui in development (http://localhost:8080), a page refresh in a new realm triggers the following error in Keycloak server:

2024-04-12 00:06:55,297 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (executor-thread-37) Uncaught server error: java.lang.RuntimeException: Error while reading attributes from security token.
	at org.keycloak.authorization.common.KeycloakIdentity.<init>(KeycloakIdentity.java:255)
	at org.keycloak.services.resources.admin.permissions.MgmtPermissions.initIdentity(MgmtPermissions.java:105)
	at org.keycloak.services.resources.admin.permissions.MgmtPermissions.<init>(MgmtPermissions.java:96)
	at org.keycloak.services.resources.admin.permissions.AdminPermissions.realms(AdminPermissions.java:46)
	at org.keycloak.admin.ui.rest.UIRealmsResource.lambda$getRealms$0(UIRealmsResource.java:57)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1950)
	at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:292)
	at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206)
	at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:161)
	at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:298)
	at java.base/java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681)
	at org.keycloak.utils.ClosingStream$ClosingIterator.hasNext(ClosingStream.java:293)
	at org.keycloak.utils.StreamsUtil.throwIfEmpty(StreamsUtil.java:55)
	at org.keycloak.admin.ui.rest.UIRealmsResource.getRealms(UIRealmsResource.java:66)
	at org.keycloak.admin.ui.rest.UIRealmsResource$quarkusrestinvoker$getRealms_ead7451714695748ac20e4aeece328e85603cece.invoke(Unknown Source)
	at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
	at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141)
	at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)
	at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.NullPointerException: Cannot invoke "org.keycloak.models.UserSessionModel.getUser()" because "userSession" is null
	at org.keycloak.authorization.common.KeycloakIdentity.getUserFromToken(KeycloakIdentity.java:304)
	at org.keycloak.authorization.common.KeycloakIdentity.<init>(KeycloakIdentity.java:242)
	... 29 more


2024-04-12 00:06:55,298 WARN  [io.agroal.pool] (executor-thread-37) Datasource '<default>': JDBC resources leaked: 1 ResultSet(s) and 1 Statement(s)

Version

latest/24.0.2

Regression

  • The issue is a regression

Expected behavior

Should be able to refresh the page in local development mode when in a new realm without errors

Actual behavior

An exception is thrown in Keycloak server and UI shows an error stating Network Response was not ok

image

The failing API in network console
image

How to Reproduce?

  1. In quarkus directory, start Keycloak server on port 8180.
../mvnw -f server/pom.xml compile quarkus:dev -Dquarkus.args="start-dev --http-port=8180"
  1. Create admin credentials, login Keycloak, and import client using security-admin-console-v2.json
  2. In js/apps/admin-ui, start local admin-ui server at port 8080.
pnpm dev
  1. Open http://localhost:8080, create new realm.
  2. When in the new realm, refresh page.

Anything else?

Several other test cases in realm_spec.test.ts are also failing. the error also appears when creating a new realm from a non-master realm.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions