From 08488d158841a8c074e68cba4d2a12df6feab9b6 Mon Sep 17 00:00:00 2001 From: pujavs <43700552+pujavs@users.noreply.github.com> Date: Tue, 4 Oct 2022 18:36:55 +0530 Subject: [PATCH] fix(config-api): fix for assosiated client not fetched for scope (#2540) --- .../docs/jans-config-api-swagger-auto.yaml | 40 +++++++++---------- .../rest/resource/auth/ScopesResource.java | 4 +- .../configapi/service/auth/ScopeService.java | 26 ++++++++---- 3 files changed, 40 insertions(+), 30 deletions(-) diff --git a/jans-config-api/docs/jans-config-api-swagger-auto.yaml b/jans-config-api/docs/jans-config-api-swagger-auto.yaml index 692fdae17c4..dbb4d39d2d8 100644 --- a/jans-config-api/docs/jans-config-api-swagger-auto.yaml +++ b/jans-config-api/docs/jans-config-api-swagger-auto.yaml @@ -2945,19 +2945,19 @@ components: $ref: '#/components/schemas/AttributeValidation' tooltip: type: string - adminCanView: + whitePagesCanView: type: boolean - userCanAccess: + adminCanAccess: type: boolean - adminCanEdit: + userCanEdit: type: boolean - userCanView: + adminCanEdit: type: boolean - userCanEdit: + adminCanView: type: boolean - adminCanAccess: + userCanView: type: boolean - whitePagesCanView: + userCanAccess: type: boolean baseDn: type: string @@ -4090,17 +4090,6 @@ components: $ref: '#/components/schemas/EngineConfig' ssaConfiguration: $ref: '#/components/schemas/SsaConfiguration' - fapi: - type: boolean - allResponseTypesSupported: - uniqueItems: true - type: array - items: - type: string - enum: - - code - - token - - id_token enabledFeatureFlags: uniqueItems: true type: array @@ -4128,6 +4117,17 @@ components: - STAT - PAR - SSA + fapi: + type: boolean + allResponseTypesSupported: + uniqueItems: true + type: array + items: + type: string + enum: + - code + - token + - id_token AuthenticationFilter: required: - baseDn @@ -4384,13 +4384,13 @@ components: type: boolean internal: type: boolean - locationPath: - type: string locationType: type: string enum: - ldap - file + locationPath: + type: string baseDn: type: string ScriptError: diff --git a/jans-config-api/server/src/main/java/io/jans/configapi/rest/resource/auth/ScopesResource.java b/jans-config-api/server/src/main/java/io/jans/configapi/rest/resource/auth/ScopesResource.java index c10b5c0408d..17df0279e52 100644 --- a/jans-config-api/server/src/main/java/io/jans/configapi/rest/resource/auth/ScopesResource.java +++ b/jans-config-api/server/src/main/java/io/jans/configapi/rest/resource/auth/ScopesResource.java @@ -263,9 +263,7 @@ public Response deleteScope(@PathParam(ApiConstants.INUM) @NotNull String inum) } private PagedResult doSearch(SearchRequest searchReq, String type, boolean withAssociatedClients) { - if (logger.isDebugEnabled()) { - logger.debug("CustomScope search params - searchReq:{} ", escapeLog(searchReq)); - } + logger.debug("CustomScope search params - searchReq:{}, type:{}, withAssociatedClients:{} ", searchReq, type, withAssociatedClients); PagedResult pagedResult = scopeService.getScopeResult(searchReq, type, withAssociatedClients); if (logger.isTraceEnabled()) { diff --git a/jans-config-api/server/src/main/java/io/jans/configapi/service/auth/ScopeService.java b/jans-config-api/server/src/main/java/io/jans/configapi/service/auth/ScopeService.java index d8a3888a7b2..fa6381d94eb 100644 --- a/jans-config-api/server/src/main/java/io/jans/configapi/service/auth/ScopeService.java +++ b/jans-config-api/server/src/main/java/io/jans/configapi/service/auth/ScopeService.java @@ -207,17 +207,24 @@ public List searchScope(SearchRequest searchRequest) { } private CustomScope setClients(Scope scope, List clients, List umaResources) { + logger.debug("Search Scope with associated clients - scope:{}, clients:{}, umaResources:{}", scope, clients, + umaResources); + ObjectMapper mapper = new ObjectMapper(); CustomScope customScope = mapper.convertValue(scope, CustomScope.class); customScope.setClients(Lists.newArrayList()); for (Client client : clients) { - if (client.getScopes() == null) { - continue; - } + logger.debug( + "Associated clients serach - scope.getScopeType():{}, scope.getInum():{}, scope.getCreatorId():{}, client.getClientId():{}, clientService.getDnForClient(client.getClientId()):{}, client.getScopes():{}, client.getClientId().equals(scope.getCreatorId()):{}", + scope.getScopeType(), scope.getInum(), scope.getCreatorId(), client.getClientId(), + clientService.getDnForClient(client.getClientId()), client.getScopes(), + client.getClientId().equals(scope.getCreatorId())); + if (scope.getScopeType() == ScopeType.OPENID || scope.getScopeType() == ScopeType.OAUTH || scope.getScopeType() == ScopeType.DYNAMIC) { - if (Arrays.asList(client.getScopes()).contains(getDnForScope(scope.getInum()))) { + if (client.getScopes() != null + && Arrays.asList(client.getScopes()).contains(getDnForScope(scope.getInum()))) { customScope.getClients().add(client); } } else if (scope.getScopeType() == ScopeType.UMA) { @@ -225,12 +232,17 @@ private CustomScope setClients(Scope scope, List clients, List (umaResource.getScopes() != null && umaResource.getScopes().contains(getDnForScope(scope.getInum())))) .collect(Collectors.toList()); - if (umaRes.stream().anyMatch( - ele -> ele.getClients().contains(clientService.getDnForClient(client.getClientId())))) { + logger.trace("Associated clients serach - umaRes():{}", umaRes); + for (UmaResource res : umaRes) { + logger.trace( + " client.getDn():{}, res.getInum():{}, res.getClients():{}, res.getClients().contains(clientService.getDnForClient(client.getClientId()):{}", + client.getDn(), res.getInum(), res.getClients(), + res.getClients().contains(clientService.getDnForClient(client.getClientId()))); customScope.getClients().add(client); + } } else if ((scope.getScopeType() == ScopeType.SPONTANEOUS) - && (client.getClientId().equals(customScope.getCreatorId()))) { + && (client.getClientId().equals(scope.getCreatorId()))) { customScope.getClients().add(client); } }