You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2024/03/09 07:55:09 UTC

(syncope) branch 3_0_X updated (55e7ed9224 -> f5b13ffdc7)

This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a change to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


    from 55e7ed9224 [SYNCOPE-1809] Remove uidOnCreate attribute on delete propagation (#640)
     new c5c1b12e55 New Swagger UI version does not render some schemas (as ConnInstanceTO): revert
     new f5b13ffdc7 Fixing deprecations

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/syncope/client/console/SecurityConfig.java   | 17 +++++++++++------
 .../apache/syncope/client/enduser/SecurityConfig.java   | 17 +++++++++++------
 .../syncope/common/rest/api/service/CommandService.java |  7 +++++++
 .../syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java | 15 +++++++--------
 .../syncope/core/persistence/api/entity/AnyUtils.java   |  2 +-
 .../core/persistence/jpa/entity/JPAAnyUtils.java        |  4 ++--
 .../core/persistence/jpa/entity/JPAAnyUtilsFactory.java |  8 +++++---
 .../propagation/AbstractPropagationTaskExecutor.java    |  7 +++----
 .../apache/syncope/core/logic/NetworkServiceLogic.java  |  4 ++--
 pom.xml                                                 |  2 +-
 10 files changed, 50 insertions(+), 33 deletions(-)


(syncope) 02/02: Fixing deprecations

Posted by il...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git

commit f5b13ffdc75ae512cf653774429b0e4cf0c020e3
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Sat Mar 9 08:52:34 2024 +0100

    Fixing deprecations
---
 .../apache/syncope/client/console/SecurityConfig.java   | 17 +++++++++++------
 .../apache/syncope/client/enduser/SecurityConfig.java   | 17 +++++++++++------
 .../syncope/core/persistence/api/entity/AnyUtils.java   |  2 +-
 .../core/persistence/jpa/entity/JPAAnyUtils.java        |  4 ++--
 .../core/persistence/jpa/entity/JPAAnyUtilsFactory.java |  8 +++++---
 .../propagation/AbstractPropagationTaskExecutor.java    |  7 +++----
 6 files changed, 33 insertions(+), 22 deletions(-)

diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SecurityConfig.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SecurityConfig.java
index 3fc281849a..f54a0494e6 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SecurityConfig.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SecurityConfig.java
@@ -23,12 +23,15 @@ import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointR
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.Customizer;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
 import org.springframework.security.core.userdetails.User;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.provisioning.InMemoryUserDetailsManager;
 import org.springframework.security.web.SecurityFilterChain;
+import org.springframework.security.web.util.matcher.NegatedRequestMatcher;
 
 @EnableWebSecurity
 @Configuration(proxyBeanMethods = false)
@@ -37,12 +40,14 @@ public class SecurityConfig {
     @ConditionalOnMissingBean
     @Bean
     public SecurityFilterChain actuatorFilterChain(final HttpSecurity http) throws Exception {
-        http.csrf().disable().
-                authorizeRequests().
-                requestMatchers(EndpointRequest.toAnyEndpoint()).
-                authenticated().
-                and().
-                httpBasic();
+        EndpointRequest.EndpointRequestMatcher actuatorEndpoints = EndpointRequest.toAnyEndpoint();
+        http.authorizeHttpRequests(customizer -> customizer.
+                requestMatchers(new NegatedRequestMatcher(actuatorEndpoints)).permitAll().
+                requestMatchers(actuatorEndpoints).authenticated());
+
+        http.httpBasic(Customizer.withDefaults());
+        http.csrf(AbstractHttpConfigurer::disable);
+
         return http.build();
     }
 
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SecurityConfig.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SecurityConfig.java
index ca65e79eb4..441101af68 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SecurityConfig.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SecurityConfig.java
@@ -23,12 +23,15 @@ import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointR
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.Customizer;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
 import org.springframework.security.core.userdetails.User;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.provisioning.InMemoryUserDetailsManager;
 import org.springframework.security.web.SecurityFilterChain;
+import org.springframework.security.web.util.matcher.NegatedRequestMatcher;
 
 @EnableWebSecurity
 @Configuration(proxyBeanMethods = false)
@@ -37,12 +40,14 @@ public class SecurityConfig {
     @ConditionalOnMissingBean
     @Bean
     public SecurityFilterChain actuatorFilterChain(final HttpSecurity http) throws Exception {
-        http.csrf().disable().
-                authorizeRequests().
-                requestMatchers(EndpointRequest.toAnyEndpoint()).
-                authenticated().
-                and().
-                httpBasic();
+        EndpointRequest.EndpointRequestMatcher actuatorEndpoints = EndpointRequest.toAnyEndpoint();
+        http.authorizeHttpRequests(customizer -> customizer.
+                requestMatchers(new NegatedRequestMatcher(actuatorEndpoints)).permitAll().
+                requestMatchers(actuatorEndpoints).authenticated());
+
+        http.httpBasic(Customizer.withDefaults());
+        http.csrf(AbstractHttpConfigurer::disable);
+
         return http.build();
     }
 
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyUtils.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyUtils.java
index 92d65ba86d..570c893976 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyUtils.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/AnyUtils.java
@@ -60,6 +60,6 @@ public interface AnyUtils {
     Set<ExternalResource> getAllResources(Any<?> any);
 
     void addAttr(PlainAttrValidationManager validator, String key, PlainSchema schema, String value);
-    
+
     void removeAttr(String key, PlainSchema schema);
 }
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtils.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtils.java
index fa7aca61e9..01a9a547a4 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtils.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtils.java
@@ -129,9 +129,9 @@ public class JPAAnyUtils implements AnyUtils {
     protected final AnyObjectDAO anyObjectDAO;
 
     protected final PlainAttrDAO plainAttrDAO;
-    
+
     protected final PlainAttrValueDAO plainAttrValueDAO;
-    
+
     protected final EntityFactory entityFactory;
 
     protected final AnyTypeKind anyTypeKind;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtilsFactory.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtilsFactory.java
index 5e50979ba6..cd8318c58f 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtilsFactory.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtilsFactory.java
@@ -46,7 +46,7 @@ public class JPAAnyUtilsFactory implements AnyUtilsFactory {
     protected final PlainAttrDAO plainAttrDAO;
 
     protected final PlainAttrValueDAO plainAttrValueDAO;
-    
+
     protected final EntityFactory entityFactory;
 
     protected final Map<AnyTypeKind, AnyUtils> instances = new HashMap<>(3);
@@ -75,7 +75,8 @@ public class JPAAnyUtilsFactory implements AnyUtilsFactory {
         synchronized (instances) {
             instance = instances.get(anyTypeKind);
             if (instance == null) {
-                instance = new JPAAnyUtils(userDAO,
+                instance = new JPAAnyUtils(
+                        userDAO,
                         groupDAO,
                         anyObjectDAO,
                         plainAttrDAO,
@@ -113,7 +114,8 @@ public class JPAAnyUtilsFactory implements AnyUtilsFactory {
     public AnyUtils getLinkedAccountInstance() {
         synchronized (this) {
             if (linkedAccountInstance == null) {
-                linkedAccountInstance = new JPAAnyUtils(userDAO,
+                linkedAccountInstance = new JPAAnyUtils(
+                        userDAO,
                         groupDAO,
                         anyObjectDAO,
                         plainAttrDAO,
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
index 5ff7933f82..3ee6c629ef 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
@@ -385,10 +385,9 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask
 
             connector.delete(objectClass, uid, null, propagationAttempted);
             result = uid;
-            taskInfo.getResource()
-                    .getProvisionByAnyType(taskInfo.getAnyType())
-                    .filter(provision -> provision.getUidOnCreate() != null)
-                    .ifPresent(provision -> {
+            taskInfo.getResource().getProvisionByAnyType(taskInfo.getAnyType()).
+                    filter(provision -> provision.getUidOnCreate() != null).
+                    ifPresent(provision -> {
                         LOG.debug("Removing uidOnCreate [{}] attribute from [{}] on delete",
                                 provision.getUidOnCreate(), taskInfo.getEntityKey());
                         AnyUtils anyUtils = anyUtilsFactory.getInstance(taskInfo.getAnyTypeKind());


(syncope) 01/02: New Swagger UI version does not render some schemas (as ConnInstanceTO): revert

Posted by il...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git

commit c5c1b12e55d88266b9e7a0a190348086ed5f267c
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Sat Mar 9 08:44:13 2024 +0100

    New Swagger UI version does not render some schemas (as ConnInstanceTO): revert
---
 .../syncope/common/rest/api/service/CommandService.java   |  7 +++++++
 .../syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java   | 15 +++++++--------
 .../apache/syncope/core/logic/NetworkServiceLogic.java    |  4 ++--
 pom.xml                                                   |  2 +-
 4 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CommandService.java b/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CommandService.java
index 6fbef8a7b7..9a69775d82 100644
--- a/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CommandService.java
+++ b/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CommandService.java
@@ -18,6 +18,9 @@
  */
 package org.apache.syncope.common.rest.api.service;
 
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
 import io.swagger.v3.oas.annotations.security.SecurityRequirements;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -61,6 +64,8 @@ public interface CommandService extends JAXRSService {
      * @param key command key
      * @return the command for the given key, if found
      */
+    @Parameter(name = "key", description = "Command's key", in = ParameterIn.PATH, schema =
+            @Schema(type = "string"))
     @GET
     @Path("{key}")
     @Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
@@ -72,6 +77,8 @@ public interface CommandService extends JAXRSService {
      * @param command command to run, with arguments
      * @return command output
      */
+    @Parameter(name = "key", description = "Command's key", in = ParameterIn.PATH, schema =
+            @Schema(type = "string"))
     @POST
     @Path("{key}")
     @Consumes({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
diff --git a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java
index 0d515e39af..5754289e91 100644
--- a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java
+++ b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java
@@ -118,17 +118,16 @@ public class SyncopeOpenApiCustomizer extends OpenApiCustomizer {
     protected void customizeResponses(final Operation operation, final OperationResourceInfo ori) {
         super.customizeResponses(operation, ori);
 
-        ApiResponses responses = operation.getResponses();
-        if (responses == null) {
-            responses = new ApiResponses();
-            operation.setResponses(responses);
-        }
+        ApiResponses responses = Optional.ofNullable(operation.getResponses()).orElseGet(() -> {
+            ApiResponses r = new ApiResponses();
+            operation.setResponses(r);
+            return r;
+        });
 
-        ApiResponse defaultResponse = responses.getDefault();
-        if (defaultResponse != null) {
+        Optional.ofNullable(responses.get(ApiResponses.DEFAULT)).ifPresent(defaultResponse -> {
             responses.remove(ApiResponses.DEFAULT);
             responses.addApiResponse("200", defaultResponse);
-        }
+        });
 
         Map<String, Header> headers = new LinkedHashMap<>();
         headers.put(
diff --git a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/logic/NetworkServiceLogic.java b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/logic/NetworkServiceLogic.java
index 030107e661..a36a1349a1 100644
--- a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/logic/NetworkServiceLogic.java
+++ b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/logic/NetworkServiceLogic.java
@@ -21,13 +21,13 @@ package org.apache.syncope.core.logic;
 import java.lang.reflect.Method;
 import java.util.List;
 import java.util.stream.Collectors;
-import org.apache.commons.lang3.RandomUtils;
 import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.core.persistence.api.dao.NetworkServiceDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.entity.NetworkServiceEntity;
 import org.apache.syncope.core.persistence.api.entity.SelfKeymasterEntityFactory;
+import org.apache.syncope.core.spring.security.SecureRandomUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -69,7 +69,7 @@ public class NetworkServiceLogic extends AbstractTransactionalLogic<EntityTO> {
 
         return list.size() == 1
                 ? list.get(0)
-                : list.get(RandomUtils.nextInt(0, list.size()));
+                : list.get(SecureRandomUtils.generateRandomInt(0, list.size()));
     }
 
     @PreAuthorize("@environment.getProperty('keymaster.username') == authentication.name")
diff --git a/pom.xml b/pom.xml
index 1b58aace27..f344ef0720 100644
--- a/pom.xml
+++ b/pom.xml
@@ -452,7 +452,7 @@ under the License.
     <h2.version>2.2.224</h2.version>
 
     <swagger-core.version>2.2.20</swagger-core.version>
-    <swagger-ui.version>5.11.8</swagger-ui.version>
+    <swagger-ui.version>5.10.3</swagger-ui.version>
 
     <jquery-slimscroll.version>1.3.8</jquery-slimscroll.version>
     <jquery-cookie.version>1.4.1-1</jquery-cookie.version>