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 2019/11/22 12:15:41 UTC

[syncope] branch 2_0_X updated: [SYNCOPE-1493] Support was missing for SAML2 IdP and OIDC extensions

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

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


The following commit(s) were added to refs/heads/2_0_X by this push:
     new 490bf23  [SYNCOPE-1493] Support was missing for SAML2 IdP and OIDC extensions
490bf23 is described below

commit 490bf2354eb099067ff3e539dee8758382620059
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Fri Nov 22 13:15:09 2019 +0100

    [SYNCOPE-1493] Support was missing for SAML2 IdP and OIDC extensions
---
 .../syncope/core/logic/oidc/OIDCUserManager.java   | 25 +++++++++++++++-------
 .../syncope/core/logic/saml2/SAML2UserManager.java | 25 +++++++++++++++-------
 2 files changed, 34 insertions(+), 16 deletions(-)

diff --git a/ext/oidcclient/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java b/ext/oidcclient/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java
index 669e07b..a56487f 100644
--- a/ext/oidcclient/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java
+++ b/ext/oidcclient/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java
@@ -41,6 +41,7 @@ import org.apache.syncope.core.persistence.api.entity.DerSchema;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.OIDCProvider;
 import org.apache.syncope.core.persistence.api.entity.OIDCProviderItem;
+import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrValue;
@@ -142,15 +143,23 @@ public class OIDCUserManager {
                         }
                     }
 
-                    CollectionUtils.collect(
-                            userDAO.findByPlainAttrValue((PlainSchema) intAttrName.getSchema(), value),
-                            new Transformer<User, String>() {
-
-                        @Override
-                        public String transform(final User input) {
-                            return input.getUsername();
+                    if (intAttrName.getSchema().isUniqueConstraint()) {
+                        User found = userDAO.findByPlainAttrUniqueValue(
+                                (PlainSchema) intAttrName.getSchema(), (PlainAttrUniqueValue) value);
+                        if (found != null) {
+                            result.add(found.getUsername());
                         }
-                    }, result);
+                    } else {
+                        result.addAll(CollectionUtils.collect(
+                                userDAO.findByPlainAttrValue((PlainSchema) intAttrName.getSchema(), value),
+                                new Transformer<User, String>() {
+
+                            @Override
+                            public String transform(final User input) {
+                                return input.getUsername();
+                            }
+                        }));
+                    }
                     break;
 
                 case DERIVED:
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2UserManager.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2UserManager.java
index 09ea983..eeeb293 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2UserManager.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2UserManager.java
@@ -40,6 +40,7 @@ import org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValid
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
+import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrValue;
@@ -141,15 +142,23 @@ public class SAML2UserManager {
                         }
                     }
 
-                    CollectionUtils.collect(
-                            userDAO.findByPlainAttrValue((PlainSchema) intAttrName.getSchema(), value),
-                            new Transformer<User, String>() {
-
-                        @Override
-                        public String transform(final User input) {
-                            return input.getUsername();
+                    if (intAttrName.getSchema().isUniqueConstraint()) {
+                        User found = userDAO.findByPlainAttrUniqueValue(
+                                (PlainSchema) intAttrName.getSchema(), (PlainAttrUniqueValue) value);
+                        if (found != null) {
+                            result.add(found.getUsername());
                         }
-                    }, result);
+                    } else {
+                        result.addAll(CollectionUtils.collect(
+                                userDAO.findByPlainAttrValue((PlainSchema) intAttrName.getSchema(), value),
+                                new Transformer<User, String>() {
+
+                            @Override
+                            public String transform(final User input) {
+                                return input.getUsername();
+                            }
+                        }));
+                    }
                     break;
 
                 case DERIVED: