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: