You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by mm...@apache.org on 2020/03/11 10:40:11 UTC
[syncope] branch SYNCOPE-163-1 updated: add support for auth
criteria
This is an automated email from the ASF dual-hosted git repository.
mmoayyed 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 b3ec32c add support for auth criteria
b3ec32c is described below
commit b3ec32c796bb5d0c3a04212ec4cf5eadf2863447
Author: Misagh Moayyed <mm...@gmail.com>
AuthorDate: Wed Mar 11 14:09:42 2020 +0330
add support for auth criteria
---
.../policy/AbstractAuthenticationPolicyConf.java | 11 ++++++
... AbstractAuthenticationPolicyCriteriaConf.java} | 13 ++++---
.../policy/AuthenticationPolicyConf.java | 12 +++++--
....java => AuthenticationPolicyCriteriaConf.java} | 13 +++++--
...> DefaultAuthenticationPolicyCriteriaConf.java} | 26 ++++++++------
.../core/persistence/jpa/inner/PolicyTest.java | 41 +++++++++++-----------
6 files changed, 76 insertions(+), 40 deletions(-)
diff --git a/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AbstractAuthenticationPolicyConf.java b/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AbstractAuthenticationPolicyConf.java
index f93592b..cd66c14 100644
--- a/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AbstractAuthenticationPolicyConf.java
+++ b/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AbstractAuthenticationPolicyConf.java
@@ -30,6 +30,8 @@ public abstract class AbstractAuthenticationPolicyConf implements Serializable,
private String name;
+ private AuthenticationPolicyCriteriaConf criteria;
+
public AbstractAuthenticationPolicyConf() {
setName(getClass().getName());
}
@@ -39,6 +41,15 @@ public abstract class AbstractAuthenticationPolicyConf implements Serializable,
}
@Override
+ public AuthenticationPolicyCriteriaConf getCriteria() {
+ return criteria;
+ }
+
+ public void setCriteria(final AuthenticationPolicyCriteriaConf criteria) {
+ this.criteria = criteria;
+ }
+
+ @Override
public final String getName() {
return name;
}
diff --git a/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AbstractAuthenticationPolicyConf.java b/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AbstractAuthenticationPolicyCriteriaConf.java
similarity index 76%
copy from common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AbstractAuthenticationPolicyConf.java
copy to common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AbstractAuthenticationPolicyCriteriaConf.java
index f93592b..f765574 100644
--- a/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AbstractAuthenticationPolicyConf.java
+++ b/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AbstractAuthenticationPolicyCriteriaConf.java
@@ -20,21 +20,23 @@ package org.apache.syncope.common.lib.authentication.policy;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
+
import java.io.Serializable;
@XmlType
-@XmlSeeAlso({ DefaultAuthenticationPolicyConf.class })
-public abstract class AbstractAuthenticationPolicyConf implements Serializable, AuthenticationPolicyConf {
+@XmlSeeAlso({DefaultAuthenticationPolicyCriteriaConf.class})
+public abstract class AbstractAuthenticationPolicyCriteriaConf
+ implements AuthenticationPolicyCriteriaConf, Serializable {
- private static final long serialVersionUID = 9185127128182430142L;
+ private static final long serialVersionUID = -6882164291962510245L;
private String name;
- public AbstractAuthenticationPolicyConf() {
+ public AbstractAuthenticationPolicyCriteriaConf() {
setName(getClass().getName());
}
- public AbstractAuthenticationPolicyConf(final String name) {
+ public AbstractAuthenticationPolicyCriteriaConf(final String name) {
setName(name);
}
@@ -46,4 +48,5 @@ public abstract class AbstractAuthenticationPolicyConf implements Serializable,
public final void setName(final String name) {
this.name = name;
}
+
}
diff --git a/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyConf.java b/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyConf.java
index 65a568c..3327bb4 100644
--- a/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyConf.java
+++ b/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyConf.java
@@ -19,16 +19,24 @@
package org.apache.syncope.common.lib.authentication.policy;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
+
import java.io.Serializable;
-@FunctionalInterface
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
public interface AuthenticationPolicyConf extends Serializable {
/**
- * Give name of related authentication module instance.
+ * Give name of related authentication policy instance.
*
* @return name of this authentication policy instance
*/
String getName();
+
+ /**
+ * Gets the policy criteria linked to this policy
+ * to establish criteria for success.
+ *
+ * @return the criteria
+ */
+ AuthenticationPolicyCriteriaConf getCriteria();
}
diff --git a/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyConf.java b/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyCriteriaConf.java
similarity index 70%
copy from common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyConf.java
copy to common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyCriteriaConf.java
index 65a568c..3e5c194 100644
--- a/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyConf.java
+++ b/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyCriteriaConf.java
@@ -19,14 +19,23 @@
package org.apache.syncope.common.lib.authentication.policy;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
+
import java.io.Serializable;
+/**
+ * Determine the criteria by which the authentication policy
+ * should conduct itself. Typically, this translates to how
+ * the policy should execute the modules to establish a success
+ * criteria. Examples would include "all modules should validate the user"
+ * or "any module can validate the user" before the policy can consider it
+ * a success.
+ */
@FunctionalInterface
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
-public interface AuthenticationPolicyConf extends Serializable {
+public interface AuthenticationPolicyCriteriaConf extends Serializable {
/**
- * Give name of related authentication module instance.
+ * Describe the name of the authentication policy criteria.
*
* @return name of this authentication policy instance
*/
diff --git a/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyConf.java b/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/DefaultAuthenticationPolicyCriteriaConf.java
similarity index 64%
copy from common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyConf.java
copy to common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/DefaultAuthenticationPolicyCriteriaConf.java
index 65a568c..68f7ca7 100644
--- a/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/AuthenticationPolicyConf.java
+++ b/common/am/lib/src/main/java/org/apache/syncope/common/lib/authentication/policy/DefaultAuthenticationPolicyCriteriaConf.java
@@ -18,17 +18,21 @@
*/
package org.apache.syncope.common.lib.authentication.policy;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import java.io.Serializable;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
-@FunctionalInterface
-@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
-public interface AuthenticationPolicyConf extends Serializable {
+@XmlRootElement(name = "AnyAuthenticationPolicyCriteriaConf")
+@XmlType
+public class DefaultAuthenticationPolicyCriteriaConf extends AbstractAuthenticationPolicyCriteriaConf {
+ private static final long serialVersionUID = 3928807032588105869L;
- /**
- * Give name of related authentication module instance.
- *
- * @return name of this authentication policy instance
- */
- String getName();
+ private boolean all;
+
+ public boolean isAll() {
+ return all;
+ }
+
+ public void setAll(final boolean all) {
+ this.all = all;
+ }
}
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java
index 89ae701..ddd9e18 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PolicyTest.java
@@ -18,18 +18,14 @@
*/
package org.apache.syncope.core.persistence.jpa.inner;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.util.Map;
-import java.util.List;
-import java.util.UUID;
+import org.apache.syncope.common.lib.access.DefaultAccessPolicyConf;
+import org.apache.syncope.common.lib.attrs.AllowedAttrReleasePolicyConf;
+import org.apache.syncope.common.lib.authentication.policy.DefaultAuthenticationPolicyConf;
+import org.apache.syncope.common.lib.authentication.policy.DefaultAuthenticationPolicyCriteriaConf;
import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf;
import org.apache.syncope.common.lib.policy.DefaultPullCorrelationRuleConf;
import org.apache.syncope.common.lib.policy.DefaultPushCorrelationRuleConf;
+import org.apache.syncope.common.lib.types.AMImplementationType;
import org.apache.syncope.common.lib.types.ConflictResolutionAction;
import org.apache.syncope.common.lib.types.IdMImplementationType;
import org.apache.syncope.common.lib.types.IdRepoImplementationType;
@@ -39,6 +35,8 @@ import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
import org.apache.syncope.core.persistence.api.dao.PullCorrelationRule;
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.AttrReleasePolicy;
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.Policy;
@@ -46,18 +44,18 @@ import org.apache.syncope.core.persistence.api.entity.policy.PullCorrelationRule
import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
import org.apache.syncope.core.persistence.api.entity.policy.PushCorrelationRuleEntity;
import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
-import org.apache.syncope.common.lib.access.DefaultAccessPolicyConf;
-import org.apache.syncope.common.lib.attrs.AllowedAttrReleasePolicyConf;
-import org.apache.syncope.common.lib.authentication.policy.DefaultAuthenticationPolicyConf;
-import org.apache.syncope.common.lib.types.AMImplementationType;
-import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
import org.apache.syncope.core.persistence.jpa.AbstractTest;
import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import static org.junit.jupiter.api.Assertions.*;
+
@Transactional("Master")
public class PolicyTest extends AbstractTest {
@@ -85,7 +83,7 @@ public class PolicyTest extends AbstractTest {
PullCorrelationRuleEntity pullCR = pullPolicy.getCorrelationRule(anyTypeDAO.findUser()).orElse(null);
assertNotNull(pullCR);
DefaultPullCorrelationRuleConf pullCRConf =
- POJOHelper.deserialize(pullCR.getImplementation().getBody(), DefaultPullCorrelationRuleConf.class);
+ POJOHelper.deserialize(pullCR.getImplementation().getBody(), DefaultPullCorrelationRuleConf.class);
assertNotNull(pullCRConf);
assertEquals(2, pullCRConf.getSchemas().size());
assertTrue(pullCRConf.getSchemas().contains("username"));
@@ -97,7 +95,7 @@ public class PolicyTest extends AbstractTest {
PushCorrelationRuleEntity pushCR = pushPolicy.getCorrelationRule(anyTypeDAO.findUser()).orElse(null);
assertNotNull(pushCR);
DefaultPushCorrelationRuleConf pushCRConf =
- POJOHelper.deserialize(pushCR.getImplementation().getBody(), DefaultPushCorrelationRuleConf.class);
+ POJOHelper.deserialize(pushCR.getImplementation().getBody(), DefaultPushCorrelationRuleConf.class);
assertNotNull(pushCRConf);
assertEquals(1, pushCRConf.getSchemas().size());
assertTrue(pushCRConf.getSchemas().contains("surname"));
@@ -183,9 +181,9 @@ public class PolicyTest extends AbstractTest {
assertNotNull(policy);
assertEquals(pullURuleName,
- policy.getCorrelationRule(anyTypeDAO.findUser()).get().getImplementation().getKey());
+ policy.getCorrelationRule(anyTypeDAO.findUser()).get().getImplementation().getKey());
assertEquals(pullGRuleName,
- policy.getCorrelationRule(anyTypeDAO.findGroup()).get().getImplementation().getKey());
+ policy.getCorrelationRule(anyTypeDAO.findGroup()).get().getImplementation().getKey());
int beforeCount = policyDAO.findAll().size();
AccessPolicy accessPolicy = entityFactory.newEntity(AccessPolicy.class);
@@ -219,7 +217,10 @@ public class PolicyTest extends AbstractTest {
DefaultAuthenticationPolicyConf authPolicyConf = new DefaultAuthenticationPolicyConf();
authPolicyConf.setAuthenticationModules(List.of("LdapAuthentication1", "DatabaseAuthentication2"));
-
+ DefaultAuthenticationPolicyCriteriaConf criteria = new DefaultAuthenticationPolicyCriteriaConf();
+ criteria.setName("DefaultConf");
+ criteria.setAll(true);
+ authPolicyConf.setCriteria(criteria);
Implementation authPolicyType = entityFactory.newEntity(Implementation.class);
authPolicyType.setKey("AuthPolicyConfKey");
authPolicyType.setEngine(ImplementationEngine.JAVA);