diff --git a/rest/admin-ui-ext/src/main/java/org/keycloak/admin/ui/rest/SessionsResource.java b/rest/admin-ui-ext/src/main/java/org/keycloak/admin/ui/rest/SessionsResource.java index ed7c12bbbd8..94161bd561a 100644 --- a/rest/admin-ui-ext/src/main/java/org/keycloak/admin/ui/rest/SessionsResource.java +++ b/rest/admin-ui-ext/src/main/java/org/keycloak/admin/ui/rest/SessionsResource.java @@ -75,6 +75,10 @@ public class SessionsResource { Stream result = sessionIdStream.flatMap((clientIdSessionType) -> { ClientModel clientModel = realm.getClientById(clientIdSessionType.getClientId()); + if (clientModel == null) { + // client has been removed in the meantime + return Stream.empty(); + } switch (clientIdSessionType.getType()) { case REGULAR: return session.sessions().getUserSessionsStream(realm, clientModel) diff --git a/services/src/main/java/org/keycloak/services/resources/account/SessionResource.java b/services/src/main/java/org/keycloak/services/resources/account/SessionResource.java index ccf7be813b9..f520302de42 100755 --- a/services/src/main/java/org/keycloak/services/resources/account/SessionResource.java +++ b/services/src/main/java/org/keycloak/services/resources/account/SessionResource.java @@ -172,10 +172,12 @@ public class SessionResource { for (String clientUUID : s.getAuthenticatedClientSessions().keySet()) { ClientModel client = realm.getClientById(clientUUID); - ClientRepresentation clientRep = new ClientRepresentation(); - clientRep.setClientId(client.getClientId()); - clientRep.setClientName(client.getName()); - sessionRep.getClients().add(clientRep); + if (client != null) { + ClientRepresentation clientRep = new ClientRepresentation(); + clientRep.setClientId(client.getClientId()); + clientRep.setClientName(client.getName()); + sessionRep.getClients().add(clientRep); + } } return sessionRep; }