You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by sk...@apache.org on 2020/03/06 08:11:25 UTC

[syncope] branch SYNCOPE-163-1 updated: [SYNCOPE-163] Removed access and authentication policies from external resource

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

skylark17 pushed a commit to branch SYNCOPE-163-1
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/SYNCOPE-163-1 by this push:
     new 20464c8  [SYNCOPE-163] Removed access and authentication policies from external resource
20464c8 is described below

commit 20464c844b502e7ba30f79f353dc3fe50ccf01e7
Author: skylark17 <sk...@apache.org>
AuthorDate: Fri Mar 6 09:11:13 2020 +0100

    [SYNCOPE-163] Removed access and authentication policies from external resource
---
 .../lib/to/client/SAML2ServiceProviderTO.java      | 23 ++++-----
 .../service/saml/SAML2ServiceProviderService.java  |  4 +-
 .../api/entity/resource/ExternalResource.java      | 10 ----
 .../src/test/resources/domains/MasterContent.xml   |  2 +-
 .../jpa/dao/JPAExternalResourceDAO.java            |  6 ---
 .../core/persistence/jpa/dao/JPAPolicyDAO.java     | 55 +++++++++++-----------
 .../entity/authentication/AbstractClientApp.java   |  1 -
 .../jpa/entity/resource/JPAExternalResource.java   | 32 -------------
 .../src/test/resources/domains/MasterContent.xml   |  2 +-
 .../java/data/PolicyDataBinderImpl.java            | 12 +++--
 .../java/data/ResourceDataBinderImpl.java          | 18 -------
 .../org/apache/syncope/fit/core/SAML2SPITCase.java | 31 ++++++++++++
 12 files changed, 80 insertions(+), 116 deletions(-)

diff --git a/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/client/SAML2ServiceProviderTO.java b/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/client/SAML2ServiceProviderTO.java
index 7bf5289..f292a22 100644
--- a/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/client/SAML2ServiceProviderTO.java
+++ b/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/client/SAML2ServiceProviderTO.java
@@ -16,15 +16,13 @@
  * under the License.
  *
  */
-
 package org.apache.syncope.common.lib.to.client;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
+import javax.xml.bind.annotation.XmlRootElement;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
-
-import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
@@ -32,6 +30,7 @@ import javax.xml.bind.annotation.XmlType;
 @XmlType
 @Schema(allOf = { ClientAppTO.class })
 public class SAML2ServiceProviderTO extends ClientAppTO {
+
     private static final long serialVersionUID = -6370888503924521351L;
 
     private String entityId;
@@ -62,7 +61,6 @@ public class SAML2ServiceProviderTO extends ClientAppTO {
         this.metadataLocation = metadataLocation;
     }
 
-
     @Override
     public boolean equals(final Object obj) {
         if (obj == null) {
@@ -76,19 +74,18 @@ public class SAML2ServiceProviderTO extends ClientAppTO {
         }
         SAML2ServiceProviderTO rhs = (SAML2ServiceProviderTO) obj;
         return new EqualsBuilder()
-            .appendSuper(super.equals(obj))
-            .append(this.entityId, rhs.entityId)
-            .append(this.metadataLocation, rhs.metadataLocation)
-            .isEquals();
+                .appendSuper(super.equals(obj))
+                .append(this.entityId, rhs.entityId)
+                .append(this.metadataLocation, rhs.metadataLocation)
+                .isEquals();
     }
 
     @Override
     public int hashCode() {
         return new HashCodeBuilder()
-            .appendSuper(super.hashCode())
-            .append(entityId)
-            .append(metadataLocation)
-            .toHashCode();
+                .appendSuper(super.hashCode())
+                .append(entityId)
+                .append(metadataLocation)
+                .toHashCode();
     }
 }
-
diff --git a/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/saml/SAML2ServiceProviderService.java b/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/saml/SAML2ServiceProviderService.java
index e99aa23..c16183f 100644
--- a/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/saml/SAML2ServiceProviderService.java
+++ b/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/saml/SAML2ServiceProviderService.java
@@ -16,7 +16,6 @@
  * under the License.
  *
  */
-
 package org.apache.syncope.common.rest.api.service.saml;
 
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
@@ -24,13 +23,12 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirements;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.apache.syncope.common.lib.to.client.SAML2ServiceProviderTO;
 import org.apache.syncope.common.rest.api.service.ClientAppService;
-
 import javax.ws.rs.Path;
 
 @Tag(name = "SAML2ServiceProviders")
 @SecurityRequirements({
     @SecurityRequirement(name = "BasicAuthentication"),
-    @SecurityRequirement(name = "Bearer")})
+    @SecurityRequirement(name = "Bearer") })
 @Path("saml2ServiceProviders")
 public interface SAML2ServiceProviderService extends ClientAppService<SAML2ServiceProviderTO> {
 }
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/resource/ExternalResource.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/resource/ExternalResource.java
index d281fc8..8ad9c40 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/resource/ExternalResource.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/resource/ExternalResource.java
@@ -29,8 +29,6 @@ import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.ProvidedKeyEntity;
-import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.AuthenticationPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
@@ -66,14 +64,6 @@ public interface ExternalResource extends ProvidedKeyEntity {
 
     PushPolicy getPushPolicy();
 
-    void setAuthenticationPolicy(AuthenticationPolicy authenticationPolicy);
-
-    AuthenticationPolicy getAuthenticationPolicy();
-    
-    void setAccessPolicy(AccessPolicy accessPolicy);
-
-    AccessPolicy getAccessPolicy();
-
     Implementation getProvisionSorter();
 
     void setProvisionSorter(Implementation provisionSorter);
diff --git a/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml
index 5b28703..d25dc95 100644
--- a/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml
@@ -55,7 +55,7 @@ under the License.
   
   <!-- access policies -->
   <Implementation id="MyDefaultAccessPolicyConf" type="ACCESS_POLICY_CONFIGURATIONS" engine="JAVA"
-                  body='{"@class":"org.apache.syncope.common.lib.authentication.DefaultAccessPolicyConf","name":"MyDefaultAccessPolicyConf","enabled":true,"singleSignOnEnabled":true}'/>
+                  body='{"@class":"org.apache.syncope.common.lib.access.DefaultAccessPolicyConf","name":"MyDefaultAccessPolicyConf","enabled":true,"singleSignOnEnabled":true}'/>
   <AccessPolicy id="419935c7-deb3-40b3-8a9a-683037e523a2" name="MyDefaultAccessPolicyConf"
                 description="an access policy" />
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
index 10ea313..a76f49f 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
@@ -38,9 +38,7 @@ import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
 import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
-import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.AuthenticationPolicy;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
@@ -162,10 +160,6 @@ public class JPAExternalResourceDAO extends AbstractDAO<ExternalResource> implem
             query.append("pullPolicy");
         } else if (PushPolicy.class.isAssignableFrom(policyClass)) {
             query.append("pushPolicy");
-        } else if (AuthenticationPolicy.class.isAssignableFrom(policyClass)) {
-            query.append("authenticationPolicy");
-        } else if (AccessPolicy.class.isAssignableFrom(policyClass)) {
-            query.append("accessPolicy");
         }
 
         return query;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPolicyDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPolicyDAO.java
index 382879a..c768e51 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPolicyDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPolicyDAO.java
@@ -20,6 +20,7 @@ package org.apache.syncope.core.persistence.jpa.dao;
 
 import java.util.List;
 import javax.persistence.TypedQuery;
+import org.apache.syncope.common.lib.access.to.AccessPolicyTO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
@@ -109,7 +110,7 @@ public class JPAPolicyDAO extends AbstractDAO<Policy> implements PolicyDAO {
     @Override
     public List<AuthenticationPolicy> findByAuthenticationPolicy(final Implementation policy) {
         TypedQuery<AuthenticationPolicy> query = entityManager().createQuery(
-            "SELECT e FROM " + JPAAuthenticationPolicy.class.getSimpleName() + " e "
+                "SELECT e FROM " + JPAAuthenticationPolicy.class.getSimpleName() + " e "
                 + "WHERE :authenticationPolicy MEMBER OF e.rules", AuthenticationPolicy.class);
         query.setParameter("authenticationPolicy", policy);
         return query.getResultList();
@@ -118,7 +119,7 @@ public class JPAPolicyDAO extends AbstractDAO<Policy> implements PolicyDAO {
     @Override
     public List<AccessPolicy> findByAccessPolicy(final Implementation policy) {
         TypedQuery<AccessPolicy> query = entityManager().createQuery(
-            "SELECT e FROM " + JPAAuthenticationPolicy.class.getSimpleName() + " e "
+                "SELECT e FROM " + JPAAuthenticationPolicy.class.getSimpleName() + " e "
                 + "WHERE :accessPolicy MEMBER OF e.rules", AccessPolicy.class);
         query.setParameter("accessPolicy", policy);
         return query.getResultList();
@@ -188,31 +189,31 @@ public class JPAPolicyDAO extends AbstractDAO<Policy> implements PolicyDAO {
 
     @Override
     public <T extends Policy> void delete(final T policy) {
-        realmDAO.findByPolicy(policy).forEach(realm -> {
-            if (policy instanceof AccountPolicy) {
-                realm.setAccountPolicy(null);
-            } else if (policy instanceof PasswordPolicy) {
-                realm.setPasswordPolicy(null);
-            } else if (policy instanceof AuthenticationPolicy) {
-                realm.setAuthenticationPolicy(null);
-            }
-        });
-
-        resourceDAO.findByPolicy(policy).forEach(resource -> {
-            if (policy instanceof AccountPolicy) {
-                resource.setAccountPolicy(null);
-            } else if (policy instanceof PasswordPolicy) {
-                resource.setPasswordPolicy(null);
-            } else if (policy instanceof PullPolicy) {
-                resource.setPullPolicy(null);
-            } else if (policy instanceof PushPolicy) {
-                resource.setPushPolicy(null);
-            } else if (policy instanceof AuthenticationPolicy) {
-                resource.setAuthenticationPolicy(null);
-            } else if (policy instanceof AccessPolicy) {
-                resource.setAccessPolicy(null);
-            }
-        });
+        if (!(policy instanceof AccessPolicyTO)) {
+            realmDAO.findByPolicy(policy).forEach(realm -> {
+                if (policy instanceof AccountPolicy) {
+                    realm.setAccountPolicy(null);
+                } else if (policy instanceof PasswordPolicy) {
+                    realm.setPasswordPolicy(null);
+                } else if (policy instanceof AuthenticationPolicy) {
+                    realm.setAuthenticationPolicy(null);
+                }
+            });
+        }
+
+        if (!(policy instanceof AuthenticationPolicy) && !(policy instanceof AccessPolicyTO)) {
+            resourceDAO.findByPolicy(policy).forEach(resource -> {
+                if (policy instanceof AccountPolicy) {
+                    resource.setAccountPolicy(null);
+                } else if (policy instanceof PasswordPolicy) {
+                    resource.setPasswordPolicy(null);
+                } else if (policy instanceof PullPolicy) {
+                    resource.setPullPolicy(null);
+                } else if (policy instanceof PushPolicy) {
+                    resource.setPushPolicy(null);
+                }
+            });
+        }
 
         entityManager().remove(policy);
     }
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/authentication/AbstractClientApp.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/authentication/AbstractClientApp.java
index 58ae710..4ad3910 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/authentication/AbstractClientApp.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/authentication/AbstractClientApp.java
@@ -41,7 +41,6 @@ public class AbstractClientApp extends AbstractGeneratedKeyEntity implements Cli
     @Column
     private String description;
 
-    @Column(nullable = false)
     @ManyToOne(fetch = FetchType.EAGER)
     private JPAAuthenticationPolicy authenticationPolicy;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
index 64a150c..ef97aa6 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
@@ -53,8 +53,6 @@ import org.apache.syncope.core.persistence.jpa.validation.entity.ExternalResourc
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
-import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.AuthenticationPolicy;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccountPolicy;
@@ -66,8 +64,6 @@ import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
 import org.apache.syncope.core.persistence.api.entity.resource.OrgUnit;
 import org.apache.syncope.core.persistence.jpa.entity.AbstractProvidedKeyEntity;
 import org.apache.syncope.core.persistence.jpa.entity.JPAImplementation;
-import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccessPolicy;
-import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAuthenticationPolicy;
 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPushPolicy;
 import org.identityconnectors.framework.common.objects.ObjectClass;
 
@@ -140,12 +136,6 @@ public class JPAExternalResource extends AbstractProvidedKeyEntity implements Ex
     @ManyToOne(fetch = FetchType.EAGER)
     private JPAPushPolicy pushPolicy;
 
-    @ManyToOne(fetch = FetchType.EAGER)
-    private JPAAuthenticationPolicy authenticationPolicy;
-
-    @ManyToOne(fetch = FetchType.EAGER)
-    private JPAAccessPolicy accessPolicy;
-
     @ManyToOne
     private JPAImplementation provisionSorter;
 
@@ -343,28 +333,6 @@ public class JPAExternalResource extends AbstractProvidedKeyEntity implements Ex
     }
 
     @Override
-    public AuthenticationPolicy getAuthenticationPolicy() {
-        return authenticationPolicy;
-    }
-
-    @Override
-    public void setAuthenticationPolicy(final AuthenticationPolicy authenticationPolicy) {
-        checkType(authenticationPolicy, JPAAuthenticationPolicy.class);
-        this.authenticationPolicy = (JPAAuthenticationPolicy) authenticationPolicy;
-    }
-
-    @Override
-    public AccessPolicy getAccessPolicy() {
-        return accessPolicy;
-    }
-
-    @Override
-    public void setAccessPolicy(final AccessPolicy accessPolicy) {
-        checkType(accessPolicy, JPAAccessPolicy.class);
-        this.accessPolicy = (JPAAccessPolicy) accessPolicy;
-    }
-
-    @Override
     public Implementation getProvisionSorter() {
         return provisionSorter;
     }
diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
index 560c330..1556977 100644
--- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
@@ -55,7 +55,7 @@ under the License.
   
   <!-- access policies -->
   <Implementation id="MyDefaultAccessPolicyConf" type="ACCESS_POLICY_CONFIGURATIONS" engine="JAVA"
-                  body='{"@class":"org.apache.syncope.common.lib.authentication.DefaultAccessPolicyConf","name":"MyDefaultAccessPolicyConf","enabled":true,"singleSignOnEnabled":true}'/>
+                  body='{"@class":"org.apache.syncope.common.lib.access.DefaultAccessPolicyConf","name":"MyDefaultAccessPolicyConf","enabled":true,"singleSignOnEnabled":true}'/>
   <AccessPolicy id="419935c7-deb3-40b3-8a9a-683037e523a2" name="MyDefaultAccessPolicyConf"
                 description="an access policy" />
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/PolicyDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/PolicyDataBinderImpl.java
index 3a31be2..5e9e512 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/PolicyDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/PolicyDataBinderImpl.java
@@ -291,11 +291,15 @@ public class PolicyDataBinderImpl implements PolicyDataBinder {
             policyTO.setKey(policy.getKey());
             policyTO.setDescription(policy.getDescription());
 
-            for (ExternalResource resource : resourceDAO.findByPolicy(policy)) {
-                policyTO.getUsedByResources().add(resource.getKey());
+            if (!(policy instanceof AuthenticationPolicy) && !(policy instanceof AccessPolicyTO)) {
+                for (ExternalResource resource : resourceDAO.findByPolicy(policy)) {
+                    policyTO.getUsedByResources().add(resource.getKey());
+                }
             }
-            for (Realm realm : realmDAO.findByPolicy(policy)) {
-                policyTO.getUsedByRealms().add(realm.getFullPath());
+            if (!(policy instanceof AccessPolicyTO)) {
+                for (Realm realm : realmDAO.findByPolicy(policy)) {
+                    policyTO.getUsedByRealms().add(realm.getFullPath());
+                }
             }
         }
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
index b17517e..34fd19b 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
@@ -27,7 +27,6 @@ import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.keymaster.client.api.ConfParamOps;
 import org.apache.syncope.common.lib.SyncopeClientCompositeException;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
@@ -61,8 +60,6 @@ import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
-import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.AuthenticationPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
@@ -99,9 +96,6 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
     private AnyTypeClassDAO anyTypeClassDAO;
 
     @Autowired
-    private ConfParamOps confParamOps;
-
-    @Autowired
     private ImplementationDAO implementationDAO;
 
     @Autowired
@@ -360,12 +354,6 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
         resource.setPushPolicy(resourceTO.getPushPolicy() == null
                 ? null : (PushPolicy) policyDAO.find(resourceTO.getPushPolicy()));
 
-        resource.setAuthenticationPolicy(resourceTO.getAuthenticationPolicy() == null
-                ? null : (AuthenticationPolicy) policyDAO.find(resourceTO.getAuthenticationPolicy()));
-
-        resource.setAccessPolicy(resourceTO.getAccessPolicy() == null
-                ? null : (AccessPolicy) policyDAO.find(resourceTO.getAccessPolicy()));
-
         if (resourceTO.getProvisionSorter() == null) {
             resource.setProvisionSorter(null);
         } else {
@@ -695,12 +683,6 @@ public class ResourceDataBinderImpl implements ResourceDataBinder {
         resourceTO.setPushPolicy(resource.getPushPolicy() == null
                 ? null : resource.getPushPolicy().getKey());
 
-        resourceTO.setAuthenticationPolicy(resource.getAuthenticationPolicy() == null
-                ? null : resource.getAuthenticationPolicy().getKey());
-
-        resourceTO.setAccessPolicy(resource.getAccessPolicy() == null
-                ? null : resource.getAccessPolicy().getKey());
-
         resourceTO.setProvisionSorter(resource.getProvisionSorter() == null
                 ? null : resource.getProvisionSorter().getKey());
 
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2SPITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2SPITCase.java
index 775fdcb..95dac54 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2SPITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2SPITCase.java
@@ -18,6 +18,12 @@
  */
 package org.apache.syncope.fit.core;
 
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+import org.apache.syncope.common.lib.access.to.AccessPolicyTO;
+import org.apache.syncope.common.lib.authentication.policy.to.AuthenticationPolicyTO;
+import org.apache.syncope.common.lib.to.client.SAML2ServiceProviderTO;
+import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.fit.AbstractITCase;
 import org.junit.jupiter.api.Test;
 
@@ -42,4 +48,29 @@ public class SAML2SPITCase extends AbstractITCase {
     public void delete() {
 
     }
+
+    private SAML2ServiceProviderTO buildSAML2SP() {
+        AuthenticationPolicyTO authPolicyTO = new AuthenticationPolicyTO();
+        authPolicyTO.setKey("AuthPolicyTest_" + getUUIDString());
+        authPolicyTO.setDescription("Authentication Policy");
+        authPolicyTO = createPolicy(PolicyType.AUTHENTICATION, authPolicyTO);
+        assertNotNull(authPolicyTO);
+
+        AccessPolicyTO accessPolicyTO = new AccessPolicyTO();
+        accessPolicyTO.setKey("AccessPolicyTest_" + getUUIDString());
+        accessPolicyTO.setDescription("Access policy");
+        accessPolicyTO = createPolicy(PolicyType.ACCESS, accessPolicyTO);
+        assertNotNull(accessPolicyTO);
+
+        SAML2ServiceProviderTO saml2spto = new SAML2ServiceProviderTO();
+        saml2spto.setName("ExampleSAML2SP_" + getUUIDString());
+        saml2spto.setDescription("Example SAML 2.0 service provider");
+        saml2spto.setEntityId("SAML2SPEntityId_" + getUUIDString());
+        saml2spto.setMetadataLocation("file:./test");
+        saml2spto.setAuthenticationPolicy(authPolicyTO);
+        saml2spto.setAccessPolicy(accessPolicyTO);
+
+        return saml2spto;
+    }
+
 }