From 70987f65c920943a7e214b9b742cd1f83e877995 Mon Sep 17 00:00:00 2001 From: Puja Sharma Date: Tue, 5 Apr 2022 22:54:19 +0530 Subject: [PATCH] feat(jans-config-api): user mgmt endpoint - wip --- jans-config-api/0 | 0 .../docs/jans-config-api-swagger.yaml | 32 +----- .../default/config-api-test.properties | 2 +- .../profiles/jans-ui.jans.io/test.properties | 2 +- .../test.properties | 2 +- .../rest/resource/auth/UserResource.java | 80 +++++---------- .../configapi/service/auth/UserService.java | 5 +- .../test/resources/feature/user/user.feature | 99 ++----------------- .../test/resources/karate-config-jenkins.js | 1 + .../src/test/resources/karate-config.js | 1 + 10 files changed, 37 insertions(+), 187 deletions(-) create mode 100644 jans-config-api/0 diff --git a/jans-config-api/0 b/jans-config-api/0 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/jans-config-api/docs/jans-config-api-swagger.yaml b/jans-config-api/docs/jans-config-api-swagger.yaml index 30ba1f40938..870e6c8c82d 100644 --- a/jans-config-api/docs/jans-config-api-swagger.yaml +++ b/jans-config-api/docs/jans-config-api-swagger.yaml @@ -2553,37 +2553,7 @@ paths: description: Internal Server Error security: - oauth2: [https://jans.io/oauth/config/user.delete] - patch: - tags: - - User Management - summary: Update modified properties of user by Inum. - description: Update modified properties of user by Inum. - operationId: patch-user-by-inum - requestBody: - content: - application/json-patch+json: - schema: - type: array - items: - $ref: '#/components/schemas/PatchRequest' - description: String representing patch-document. - example: '[ {op:replace, path: userId, value: test_user_100 } ]' - responses: - '200': - description: OK - content: - application/json: - schema: - title: User Details. - $ref: '#/components/schemas/User' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - '500': - description: Internal Server Error - security: - - oauth2: [https://jans.io/oauth/config/user.write] + /jans-config-api/scim/user: get: diff --git a/jans-config-api/profiles/default/config-api-test.properties b/jans-config-api/profiles/default/config-api-test.properties index f31843b0563..2e700a452bf 100644 --- a/jans-config-api/profiles/default/config-api-test.properties +++ b/jans-config-api/profiles/default/config-api-test.properties @@ -1,7 +1,7 @@ # The URL of your Jans installation test.server=https://jenkins-config-api.gluu.org -test.scopes=https://jans.io/oauth/config/acrs.readonly https://jans.io/oauth/config/acrs.write https://jans.io/oauth/config/attributes.readonly https://jans.io/oauth/config/attributes.write https://jans.io/oauth/config/attributes.delete https://jans.io/oauth/config/cache.readonly https://jans.io/oauth/config/cache.write https://jans.io/oauth/config/openid/clients.readonly https://jans.io/oauth/config/openid/clients.write https://jans.io/oauth/config/openid/clients.delete https://jans.io/oauth/jans-auth-server/config/properties.readonly https://jans.io/oauth/jans-auth-server/config/properties.write https://jans.io/oauth/config/smtp.readonly https://jans.io/oauth/config/smtp.write https://jans.io/oauth/config/smtp.delete https://jans.io/oauth/config/database/couchbase.readonly https://jans.io/oauth/config/database/couchbase.write https://jans.io/oauth/config/database/couchbase.delete https://jans.io/oauth/config/scripts.readonly https://jans.io/oauth/config/scripts.write https://jans.io/oauth/config/scripts.delete https://jans.io/oauth/config/fido2.readonly https://jans.io/oauth/config/fido2.write https://jans.io/oauth/config/jwks.readonly https://jans.io/oauth/config/jwks.write https://jans.io/oauth/config/database/ldap.readonly https://jans.io/oauth/config/database/ldap.write https://jans.io/oauth/config/database/ldap.delete https://jans.io/oauth/config/logging.readonly https://jans.io/oauth/config/logging.write https://jans.io/oauth/config/scopes.readonly https://jans.io/oauth/config/scopes.write https://jans.io/oauth/config/scopes.delete https://jans.io/oauth/config/uma/resources.readonly https://jans.io/oauth/config/uma/resources.write https://jans.io/oauth/config/uma/resources.delete https://jans.io/oauth/config/database/sql.readonly https://jans.io/oauth/config/database/sql.write https://jans.io/oauth/config/database/sql.delete https://jans.io/oauth/config/stats.readonly jans_stat https://jans.io/scim/users.read https://jans.io/scim/users.write https://jans.io/oauth/config/scim/users.read https://jans.io/oauth/config/scim/users.write https://jans.io/scim/config.readonly https://jans.io/scim/config.write +test.scopes=https://jans.io/oauth/config/acrs.readonly https://jans.io/oauth/config/acrs.write https://jans.io/oauth/config/attributes.readonly https://jans.io/oauth/config/attributes.write https://jans.io/oauth/config/attributes.delete https://jans.io/oauth/config/cache.readonly https://jans.io/oauth/config/cache.write https://jans.io/oauth/config/openid/clients.readonly https://jans.io/oauth/config/openid/clients.write https://jans.io/oauth/config/openid/clients.delete https://jans.io/oauth/jans-auth-server/config/properties.readonly https://jans.io/oauth/jans-auth-server/config/properties.write https://jans.io/oauth/config/smtp.readonly https://jans.io/oauth/config/smtp.write https://jans.io/oauth/config/smtp.delete https://jans.io/oauth/config/database/couchbase.readonly https://jans.io/oauth/config/database/couchbase.write https://jans.io/oauth/config/database/couchbase.delete https://jans.io/oauth/config/scripts.readonly https://jans.io/oauth/config/scripts.write https://jans.io/oauth/config/scripts.delete https://jans.io/oauth/config/fido2.readonly https://jans.io/oauth/config/fido2.write https://jans.io/oauth/config/jwks.readonly https://jans.io/oauth/config/jwks.write https://jans.io/oauth/config/database/ldap.readonly https://jans.io/oauth/config/database/ldap.write https://jans.io/oauth/config/database/ldap.delete https://jans.io/oauth/config/logging.readonly https://jans.io/oauth/config/logging.write https://jans.io/oauth/config/scopes.readonly https://jans.io/oauth/config/scopes.write https://jans.io/oauth/config/scopes.delete https://jans.io/oauth/config/uma/resources.readonly https://jans.io/oauth/config/uma/resources.write https://jans.io/oauth/config/uma/resources.delete https://jans.io/oauth/config/database/sql.readonly https://jans.io/oauth/config/database/sql.write https://jans.io/oauth/config/database/sql.delete https://jans.io/oauth/config/stats.readonly jans_stat https://jans.io/scim/users.read https://jans.io/scim/users.write https://jans.io/oauth/config/scim/users.read https://jans.io/oauth/config/scim/users.write https://jans.io/scim/config.readonly https://jans.io/scim/config.write https://jans.io/oauth/config/organization.readonly https://jans.io/oauth/config/organization.write https://jans.io/oauth/config/user.readonly https://jans.io/oauth/config/user.write https://jans.io/oauth/config/user.delete token.endpoint=https://jenkins-config-api.gluu.org/jans-auth/restv1/token token.grant.type=client_credentials diff --git a/jans-config-api/profiles/jans-ui.jans.io/test.properties b/jans-config-api/profiles/jans-ui.jans.io/test.properties index d2d4915e074..eb7108cfc2b 100644 --- a/jans-config-api/profiles/jans-ui.jans.io/test.properties +++ b/jans-config-api/profiles/jans-ui.jans.io/test.properties @@ -1,4 +1,4 @@ -test.scopes=https://jans.io/oauth/config/acrs.readonly https://jans.io/oauth/config/acrs.write https://jans.io/oauth/config/attributes.readonly https://jans.io/oauth/config/attributes.write https://jans.io/oauth/config/attributes.delete https://jans.io/oauth/config/cache.readonly https://jans.io/oauth/config/cache.write https://jans.io/oauth/config/openid/clients.readonly https://jans.io/oauth/config/openid/clients.write https://jans.io/oauth/config/openid/clients.delete https://jans.io/oauth/jans-auth-server/config/properties.readonly https://jans.io/oauth/jans-auth-server/config/properties.write https://jans.io/oauth/config/smtp.readonly https://jans.io/oauth/config/smtp.write https://jans.io/oauth/config/smtp.delete https://jans.io/oauth/config/database/couchbase.readonly https://jans.io/oauth/config/database/couchbase.write https://jans.io/oauth/config/database/couchbase.delete https://jans.io/oauth/config/scripts.readonly https://jans.io/oauth/config/scripts.write https://jans.io/oauth/config/scripts.delete https://jans.io/oauth/config/fido2.readonly https://jans.io/oauth/config/fido2.write https://jans.io/oauth/config/jwks.readonly https://jans.io/oauth/config/jwks.write https://jans.io/oauth/config/database/ldap.readonly https://jans.io/oauth/config/database/ldap.write https://jans.io/oauth/config/database/ldap.delete https://jans.io/oauth/config/logging.readonly https://jans.io/oauth/config/logging.write https://jans.io/oauth/config/scopes.readonly https://jans.io/oauth/config/scopes.write https://jans.io/oauth/config/scopes.delete https://jans.io/oauth/config/uma/resources.readonly https://jans.io/oauth/config/uma/resources.write https://jans.io/oauth/config/uma/resources.delete https://jans.io/oauth/config/database/sql.readonly https://jans.io/oauth/config/database/sql.write https://jans.io/oauth/config/database/sql.delete https://jans.io/oauth/config/stats.readonly jans_stat https://jans.io/scim/users.read https://jans.io/scim/users.write https://jans.io/oauth/config/scim/users.read https://jans.io/oauth/config/scim/users.write https://jans.io/scim/config.readonly https://jans.io/scim/config.write +test.scopes=https://jans.io/oauth/config/acrs.readonly https://jans.io/oauth/config/acrs.write https://jans.io/oauth/config/attributes.readonly https://jans.io/oauth/config/attributes.write https://jans.io/oauth/config/attributes.delete https://jans.io/oauth/config/cache.readonly https://jans.io/oauth/config/cache.write https://jans.io/oauth/config/openid/clients.readonly https://jans.io/oauth/config/openid/clients.write https://jans.io/oauth/config/openid/clients.delete https://jans.io/oauth/jans-auth-server/config/properties.readonly https://jans.io/oauth/jans-auth-server/config/properties.write https://jans.io/oauth/config/smtp.readonly https://jans.io/oauth/config/smtp.write https://jans.io/oauth/config/smtp.delete https://jans.io/oauth/config/database/couchbase.readonly https://jans.io/oauth/config/database/couchbase.write https://jans.io/oauth/config/database/couchbase.delete https://jans.io/oauth/config/scripts.readonly https://jans.io/oauth/config/scripts.write https://jans.io/oauth/config/scripts.delete https://jans.io/oauth/config/fido2.readonly https://jans.io/oauth/config/fido2.write https://jans.io/oauth/config/jwks.readonly https://jans.io/oauth/config/jwks.write https://jans.io/oauth/config/database/ldap.readonly https://jans.io/oauth/config/database/ldap.write https://jans.io/oauth/config/database/ldap.delete https://jans.io/oauth/config/logging.readonly https://jans.io/oauth/config/logging.write https://jans.io/oauth/config/scopes.readonly https://jans.io/oauth/config/scopes.write https://jans.io/oauth/config/scopes.delete https://jans.io/oauth/config/uma/resources.readonly https://jans.io/oauth/config/uma/resources.write https://jans.io/oauth/config/uma/resources.delete https://jans.io/oauth/config/database/sql.readonly https://jans.io/oauth/config/database/sql.write https://jans.io/oauth/config/database/sql.delete https://jans.io/oauth/config/stats.readonly jans_stat https://jans.io/scim/users.read https://jans.io/scim/users.write https://jans.io/oauth/config/scim/users.read https://jans.io/oauth/config/scim/users.write https://jans.io/scim/config.readonly https://jans.io/scim/config.write https://jans.io/oauth/config/organization.readonly https://jans.io/oauth/config/organization.write https://jans.io/oauth/config/user.readonly https://jans.io/oauth/config/user.write https://jans.io/oauth/config/user.delete # Test env Setting token.endpoint=https://jans-ui.jans.io/jans-auth/restv1/token diff --git a/jans-config-api/profiles/jenkins-config-api.gluu.org/test.properties b/jans-config-api/profiles/jenkins-config-api.gluu.org/test.properties index b8bc8b1581d..65e505c94f1 100644 --- a/jans-config-api/profiles/jenkins-config-api.gluu.org/test.properties +++ b/jans-config-api/profiles/jenkins-config-api.gluu.org/test.properties @@ -1,6 +1,6 @@ test.server=https://jenkins-config-api.gluu.org -test.scopes=https://jans.io/oauth/config/acrs.readonly https://jans.io/oauth/config/acrs.write https://jans.io/oauth/config/attributes.readonly https://jans.io/oauth/config/attributes.write https://jans.io/oauth/config/attributes.delete https://jans.io/oauth/config/cache.readonly https://jans.io/oauth/config/cache.write https://jans.io/oauth/config/openid/clients.readonly https://jans.io/oauth/config/openid/clients.write https://jans.io/oauth/config/openid/clients.delete https://jans.io/oauth/jans-auth-server/config/properties.readonly https://jans.io/oauth/jans-auth-server/config/properties.write https://jans.io/oauth/config/smtp.readonly https://jans.io/oauth/config/smtp.write https://jans.io/oauth/config/smtp.delete https://jans.io/oauth/config/database/couchbase.readonly https://jans.io/oauth/config/database/couchbase.write https://jans.io/oauth/config/database/couchbase.delete https://jans.io/oauth/config/scripts.readonly https://jans.io/oauth/config/scripts.write https://jans.io/oauth/config/scripts.delete https://jans.io/oauth/config/fido2.readonly https://jans.io/oauth/config/fido2.write https://jans.io/oauth/config/jwks.readonly https://jans.io/oauth/config/jwks.write https://jans.io/oauth/config/database/ldap.readonly https://jans.io/oauth/config/database/ldap.write https://jans.io/oauth/config/database/ldap.delete https://jans.io/oauth/config/logging.readonly https://jans.io/oauth/config/logging.write https://jans.io/oauth/config/scopes.readonly https://jans.io/oauth/config/scopes.write https://jans.io/oauth/config/scopes.delete https://jans.io/oauth/config/uma/resources.readonly https://jans.io/oauth/config/uma/resources.write https://jans.io/oauth/config/uma/resources.delete https://jans.io/oauth/config/database/sql.readonly https://jans.io/oauth/config/database/sql.write https://jans.io/oauth/config/database/sql.delete https://jans.io/oauth/config/stats.readonly jans_stat https://jans.io/scim/users.read https://jans.io/scim/users.write https://jans.io/oauth/config/scim/users.read https://jans.io/oauth/config/scim/users.write https://jans.io/scim/config.readonly https://jans.io/scim/config.write +test.scopes=https://jans.io/oauth/config/acrs.readonly https://jans.io/oauth/config/acrs.write https://jans.io/oauth/config/attributes.readonly https://jans.io/oauth/config/attributes.write https://jans.io/oauth/config/attributes.delete https://jans.io/oauth/config/cache.readonly https://jans.io/oauth/config/cache.write https://jans.io/oauth/config/openid/clients.readonly https://jans.io/oauth/config/openid/clients.write https://jans.io/oauth/config/openid/clients.delete https://jans.io/oauth/jans-auth-server/config/properties.readonly https://jans.io/oauth/jans-auth-server/config/properties.write https://jans.io/oauth/config/smtp.readonly https://jans.io/oauth/config/smtp.write https://jans.io/oauth/config/smtp.delete https://jans.io/oauth/config/database/couchbase.readonly https://jans.io/oauth/config/database/couchbase.write https://jans.io/oauth/config/database/couchbase.delete https://jans.io/oauth/config/scripts.readonly https://jans.io/oauth/config/scripts.write https://jans.io/oauth/config/scripts.delete https://jans.io/oauth/config/fido2.readonly https://jans.io/oauth/config/fido2.write https://jans.io/oauth/config/jwks.readonly https://jans.io/oauth/config/jwks.write https://jans.io/oauth/config/database/ldap.readonly https://jans.io/oauth/config/database/ldap.write https://jans.io/oauth/config/database/ldap.delete https://jans.io/oauth/config/logging.readonly https://jans.io/oauth/config/logging.write https://jans.io/oauth/config/scopes.readonly https://jans.io/oauth/config/scopes.write https://jans.io/oauth/config/scopes.delete https://jans.io/oauth/config/uma/resources.readonly https://jans.io/oauth/config/uma/resources.write https://jans.io/oauth/config/uma/resources.delete https://jans.io/oauth/config/database/sql.readonly https://jans.io/oauth/config/database/sql.write https://jans.io/oauth/config/database/sql.delete https://jans.io/oauth/config/stats.readonly jans_stat https://jans.io/scim/users.read https://jans.io/scim/users.write https://jans.io/oauth/config/scim/users.read https://jans.io/oauth/config/scim/users.write https://jans.io/scim/config.readonly https://jans.io/scim/config.write https://jans.io/oauth/config/organization.readonly https://jans.io/oauth/config/organization.write https://jans.io/oauth/config/user.readonly https://jans.io/oauth/config/user.write https://jans.io/oauth/config/user.delete token.endpoint=https://jenkins-config-api.gluu.org/jans-auth/restv1/token token.grant.type=client_credentials diff --git a/jans-config-api/server/src/main/java/io/jans/configapi/rest/resource/auth/UserResource.java b/jans-config-api/server/src/main/java/io/jans/configapi/rest/resource/auth/UserResource.java index ccda044c137..069766057b2 100644 --- a/jans-config-api/server/src/main/java/io/jans/configapi/rest/resource/auth/UserResource.java +++ b/jans-config-api/server/src/main/java/io/jans/configapi/rest/resource/auth/UserResource.java @@ -9,7 +9,6 @@ import com.github.fge.jsonpatch.JsonPatchException; import static io.jans.as.model.util.Util.escapeLog; import io.jans.as.common.model.common.User; -import io.jans.as.common.service.common.EncryptionService; import io.jans.configapi.core.rest.ProtectedApi; import io.jans.configapi.rest.model.SearchRequest; import io.jans.configapi.service.auth.UserService; @@ -17,7 +16,6 @@ import io.jans.configapi.util.ApiConstants; import io.jans.configapi.core.util.Jackson; import io.jans.orm.model.PagedResult; -import io.jans.util.security.StringEncrypter.EncryptionException; import java.io.IOException; import java.util.ArrayList; @@ -30,7 +28,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; @Path(ApiConstants.USER) @@ -44,77 +41,71 @@ public class UserResource extends BaseResource { @Inject Logger logger; - @Inject - EncryptionService encryptionService; - @Inject UserService userSrv; @GET - //@ProtectedApi(scopes = { ApiAccessConstants.USER_READ_ACCESS }) + @ProtectedApi(scopes = { ApiAccessConstants.USER_READ_ACCESS }) public Response getOpenIdConnectClients( @DefaultValue(DEFAULT_LIST_SIZE) @QueryParam(value = ApiConstants.LIMIT) int limit, @DefaultValue("") @QueryParam(value = ApiConstants.PATTERN) String pattern, @DefaultValue(DEFAULT_LIST_START_INDEX) @QueryParam(value = ApiConstants.START_INDEX) int startIndex, @QueryParam(value = ApiConstants.SORT_BY) String sortBy, - @QueryParam(value = ApiConstants.SORT_ORDER) String sortOrder) throws EncryptionException { + @QueryParam(value = ApiConstants.SORT_ORDER) String sortOrder) { if (logger.isDebugEnabled()) { logger.debug("User serach param - limit:{}, pattern:{}, startIndex:{}, sortBy:{}, sortOrder:{}", escapeLog(limit), escapeLog(pattern), escapeLog(startIndex), escapeLog(sortBy), escapeLog(sortOrder)); } - logger.error("User serach param - limit:{}, pattern:{}, startIndex:{}, sortBy:{}, sortOrder:{}", - escapeLog(limit), escapeLog(pattern), escapeLog(startIndex), escapeLog(sortBy), escapeLog(sortOrder)); - SearchRequest searchReq = createSearchRequest(userSrv.getPeopleBaseDn(), pattern, sortBy, sortOrder, startIndex, limit, null, null); final List users = this.doSearch(searchReq); - logger.error("User serach result:{}", users); - return Response.ok(getUsers(users)).build(); + logger.debug("User serach result:{}", users); + return Response.ok(users).build(); } @GET - //@ProtectedApi(scopes = { ApiAccessConstants.USER_WRITE_ACCESS }) + @ProtectedApi(scopes = { ApiAccessConstants.USER_WRITE_ACCESS }) @Path(ApiConstants.INUM_PATH) - public Response getUserByInum(@PathParam(ApiConstants.INUM) @NotNull String inum) throws EncryptionException { + public Response getUserByInum(@PathParam(ApiConstants.INUM) @NotNull String inum) { if (logger.isDebugEnabled()) { logger.debug("User serach by inum:{}", escapeLog(inum)); } User user = userSrv.getUserByInum(inum); - logger.error("Based on inum:{}, user:{}", inum, user); - return Response.ok(decryptUserPassword(user)).build(); + logger.debug("Based on inum:{}, user:{}", inum, user); + return Response.ok(user).build(); } @POST - //@ProtectedApi(scopes = { ApiAccessConstants.USER_WRITE_ACCESS }) - public Response createOpenIdConnect(@Valid User user) throws EncryptionException { + @ProtectedApi(scopes = { ApiAccessConstants.USER_WRITE_ACCESS }) + public Response createOpenIdConnect(@Valid User user) { if (logger.isDebugEnabled()) { logger.debug("User details to be added - user:{}", escapeLog(user)); } - user = userSrv.addUser(encryptUserPassword(user), true); - logger.error("User created {}", user); - return Response.status(Response.Status.CREATED).entity(decryptUserPassword(user)).build(); + user = userSrv.addUser(user, true); + logger.debug("User created {}", user); + return Response.status(Response.Status.CREATED).entity(user).build(); } @PUT - // @ProtectedApi(scopes = { ApiAccessConstants.USER_WRITE_ACCESS }) - public Response updateUser(@Valid User user) throws EncryptionException { + @ProtectedApi(scopes = { ApiAccessConstants.USER_WRITE_ACCESS }) + public Response updateUser(@Valid User user) { if (logger.isDebugEnabled()) { logger.debug("User details to be updated - user:{}", escapeLog(user)); } - user = userSrv.updateUser(encryptUserPassword(user)); - logger.error("Updated user:{}", user); + user = userSrv.updateUser((user)); + logger.debug("Updated user:{}", user); - return Response.ok(decryptUserPassword(user)).build(); + return Response.ok(user).build(); } @PATCH @Consumes(MediaType.APPLICATION_JSON_PATCH_JSON) - // @ProtectedApi(scopes = { ApiAccessConstants.USER_WRITE_ACCESS }) + @ProtectedApi(scopes = { ApiAccessConstants.USER_WRITE_ACCESS }) @Path(ApiConstants.INUM_PATH) public Response patchUser(@PathParam(ApiConstants.INUM) @NotNull String inum, @NotNull String pathString) - throws EncryptionException, JsonPatchException, IOException { + throws JsonPatchException, IOException { if (logger.isDebugEnabled()) { logger.debug("User details to be patched - inum:{}, pathString:{}", escapeLog(inum), escapeLog(pathString)); } @@ -123,13 +114,13 @@ public Response patchUser(@PathParam(ApiConstants.INUM) @NotNull String inum, @N existingUser = Jackson.applyPatch(pathString, existingUser); existingUser = userSrv.updateUser(existingUser); - logger.error("Updated user:{}", existingUser); - return Response.ok(decryptUserPassword(existingUser)).build(); + logger.debug("Updated user:{}", existingUser); + return Response.ok(existingUser).build(); } @DELETE @Path(ApiConstants.INUM_PATH) - // @ProtectedApi(scopes = { ApiAccessConstants.USER_DELETE_ACCESS }) + @ProtectedApi(scopes = { ApiAccessConstants.USER_DELETE_ACCESS }) public Response deleteUser(@PathParam(ApiConstants.INUM) @NotNull String inum) { if (logger.isDebugEnabled()) { logger.debug("User to be deleted - inum:{} ", escapeLog(inum)); @@ -161,29 +152,4 @@ private List doSearch(SearchRequest searchReq) { return users; } - private List getUsers(List users) throws EncryptionException { - if (users != null && !users.isEmpty()) { - for (User user : users) { - if (StringUtils.isNotBlank(user.getAttribute("userPassword"))) { - decryptUserPassword(user); - } - } - } - return users; - } - - private User encryptUserPassword(User user) throws EncryptionException { - if (StringUtils.isNotBlank(user.getAttribute("userPassword"))) { - //user.setAttribute("userPassword", encryptionService.encrypt(user.getAttribute("userPassword")), false); - } - return user; - } - - private User decryptUserPassword(User user) throws EncryptionException { - if (StringUtils.isNotBlank(user.getAttribute("userPassword"))) { - //user.setAttribute("userPassword", encryptionService.decrypt(user.getAttribute("userPassword")), false); - } - return user; - } - } diff --git a/jans-config-api/server/src/main/java/io/jans/configapi/service/auth/UserService.java b/jans-config-api/server/src/main/java/io/jans/configapi/service/auth/UserService.java index c90c72fba4c..1c9b5731694 100644 --- a/jans-config-api/server/src/main/java/io/jans/configapi/service/auth/UserService.java +++ b/jans-config-api/server/src/main/java/io/jans/configapi/service/auth/UserService.java @@ -14,7 +14,6 @@ import io.jans.orm.model.PagedResult; import io.jans.orm.model.SortOrder; import io.jans.orm.search.filter.Filter; -import io.jans.util.StringHelper; import static io.jans.as.model.util.Util.escapeLog; import java.util.List; @@ -28,9 +27,7 @@ @ApplicationScoped @Named("userSrv") public class UserService extends io.jans.as.common.service.common.UserService { - - public static final String[] USER_OBJECT_CLASSES = new String[] { AttributeConstants.JANS_PERSON }; - + @Inject private Logger logger; diff --git a/jans-config-api/server/src/test/resources/feature/user/user.feature b/jans-config-api/server/src/test/resources/feature/user/user.feature index c0a251fd175..854e6812f9a 100644 --- a/jans-config-api/server/src/test/resources/feature/user/user.feature +++ b/jans-config-api/server/src/test/resources/feature/user/user.feature @@ -1,16 +1,16 @@ -Feature: Openid connect clients +Feature: User endpoint Background: - * def mainUrl = openidclients_url + * def mainUrl = user_url -Scenario: Fetch all openid connect clients without bearer token +Scenario: Fetch all user without bearer token Given url mainUrl When method GET Then status 401 -Scenario: Fetch all openid connect clients +Scenario: Fetch all user Given url mainUrl And header Authorization = 'Bearer ' + accessToken When method GET @@ -19,7 +19,7 @@ And print response And assert response.length != null -Scenario: Fetch the first three openidconnect clients +Scenario: Fetch the first three users Given url mainUrl And header Authorization = 'Bearer ' + accessToken And param limit = 3 @@ -28,77 +28,14 @@ Then status 200 And print response And assert response.length == 3 - -Scenario: Search openid connect clients given a serach pattern -Given url mainUrl -And header Authorization = 'Bearer ' + accessToken -And param limit = 1 -When method GET -Then status 200 -And print response -Given url mainUrl -And header Authorization = 'Bearer ' + accessToken -And param pattern = response[0].displayName -And print 'pattern = '+pattern -When method GET -Then status 200 -And print response -And assert response.length !=0 - -Scenario: Search openid connect clients given a serach pattern and pagination -Given url mainUrl -And header Authorization = 'Bearer ' + accessToken -And param pattern = 'test' -And param limit = 10 -And param startIndex = 1 -When method GET -Then status 200 -And print response - -Scenario: Get an openid connect client by inum(unexisting client) +Scenario: Get an user by inum(unexisting user) Given url mainUrl + '/53553532727272772' And header Authorization = 'Bearer ' + accessToken When method GET Then status 404 -Scenario: Get an openid connect client by inum -Given url mainUrl -And header Authorization = 'Bearer ' + accessToken -When method GET -Then status 200 -Given url mainUrl + '/' +response[0].inum -And header Authorization = 'Bearer ' + accessToken -When method GET -Then status 200 -And print response - - -@CreateUpdateDelete -Scenario: Create new OpenId Connect Client -Given url mainUrl -And header Authorization = 'Bearer ' + accessToken -And request read('client.json') -When method POST -Then status 201 -And print response -Then def result = response -Then set result.displayName = 'UpdatedQAAddedClient' -Given url mainUrl -And header Authorization = 'Bearer ' + accessToken -And request result -When method PUT -Then status 200 -And print response -And assert response.displayName == 'UpdatedQAAddedClient' -Given url mainUrl + '/' +response.inum -And header Authorization = 'Bearer ' + accessToken -When method DELETE -Then status 204 -And print response - - -Scenario: Delete a non-existion openid connect client by inum +Scenario: Delete a non-existion user by inum Given url mainUrl + '/1402.66633-8675-473e-a749' And header Authorization = 'Bearer ' + accessToken When method GET @@ -106,25 +43,3 @@ Then status 404 And print response -Scenario: Patch openid connect client -Given url mainUrl -And header Authorization = 'Bearer ' + accessToken -And param limit = 1 -When method GET -Then status 200 -And print response -Given url mainUrl + '/' +response[0].inum -And header Authorization = 'Bearer ' + accessToken -And header Content-Type = 'application/json-patch+json' -And header Accept = 'application/json' -And def newName = response[0].displayName -And print " newName = "+newName -#And request "[ {\"op\":\"replace\", \"path\": \"/displayName\", \"value\":\""+newName+"\"} ]" -And def request_body = (response.displayName == null ? "[ {\"op\":\"add\", \"path\": \"/displayName\", \"value\":null } ]" : "[ {\"op\":\"replace\", \"path\": \"/displayName\", \"value\":"+response.displayName+" } ]") -And print 'request_body ='+request_body -And request request_body -When method PATCH -Then status 200 -And print response -And assert response.length !=0 - diff --git a/jans-config-api/server/src/test/resources/karate-config-jenkins.js b/jans-config-api/server/src/test/resources/karate-config-jenkins.js index 137f9a93c5b..1e7158443ce 100644 --- a/jans-config-api/server/src/test/resources/karate-config-jenkins.js +++ b/jans-config-api/server/src/test/resources/karate-config-jenkins.js @@ -60,6 +60,7 @@ function() { logging_url: baseUrl + '/jans-config-api/api/v1/logging', auth_health_url: baseUrl + '/jans-config-api/api/v1/jans-auth-server/health', org_configuration_url: baseUrl + '/jans-config-api/api/v1/org', + user_url: baseUrl + '/jans-config-api/api/v1/user', }; karate.configure('connectTimeout', 30000); diff --git a/jans-config-api/server/src/test/resources/karate-config.js b/jans-config-api/server/src/test/resources/karate-config.js index 5f26ec47ec2..bfc916ad7b0 100644 --- a/jans-config-api/server/src/test/resources/karate-config.js +++ b/jans-config-api/server/src/test/resources/karate-config.js @@ -60,6 +60,7 @@ function() { logging_url: baseUrl + '/jans-config-api/api/v1/logging', auth_health_url: baseUrl + '/jans-config-api/api/v1/jans-auth-server/health', org_configuration_url: baseUrl + '/jans-config-api/api/v1/org', + user_url: baseUrl + '/jans-config-api/api/v1/user', }; karate.configure('connectTimeout', 30000);