diff --git a/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java b/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java index 9a91125e1e1..e214f87861f 100755 --- a/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java +++ b/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java @@ -324,6 +324,7 @@ public class UsersResource { attributes.put(UserModel.EMAIL_VERIFIED, emailVerified.toString()); } addCreatedTimestampConditions(attributes, createdAfter, createdBefore); + attributes.putAll(searchAttributes); return searchForUser(attributes, realm, userPermissionEvaluator, briefRepresentation, firstResult, maxResults, false); @@ -456,6 +457,7 @@ public class UsersResource { parameters.put(UserModel.EMAIL_VERIFIED, emailVerified.toString()); } addCreatedTimestampConditions(parameters, createdAfter, createdBefore); + parameters.putAll(searchAttributes); // search /users equivalent to this doesn't include service-accounts so counting shouldn't as well parameters.put(UserModel.INCLUDE_SERVICE_ACCOUNT, "false"); if (userPermissionEvaluator.canView()) { diff --git a/tests/base/src/test/java/org/keycloak/tests/admin/user/UserSearchTest.java b/tests/base/src/test/java/org/keycloak/tests/admin/user/UserSearchTest.java index 57f9eef793c..6e4d7abe0e3 100644 --- a/tests/base/src/test/java/org/keycloak/tests/admin/user/UserSearchTest.java +++ b/tests/base/src/test/java/org/keycloak/tests/admin/user/UserSearchTest.java @@ -136,6 +136,19 @@ public class UserSearchTest extends AbstractUserTest { assertEquals(0, users.size()); } + @Test + @DatabaseTest + public void searchUserWithQueryParameter() { + createUsers(); + + String query = mapToSearchQuery(Map.of("test", "test1")); + assertThat(managedRealm.admin().users().searchByAttributes(query), hasSize(1)); + List users = managedRealm.admin().users().search("username", null, null, null, null, null, null, query); + assertThat(users, hasSize(1)); + assertThat(users.get(0).getUsername(), is("username1")); + assertThat(managedRealm.admin().users().count("username", null, null, null, null, null, null, query), is(1)); + } + @Test @DatabaseTest public void searchByMultipleAttributes() {