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 0b6231afd8f510bc3ddaf187112ec97aba4fcbc2 Author: Francesco Chicchiriccò <[email protected]> AuthorDate: Mon May 29 15:58:26 2023 +0200 Fixing SAML 2.0 SP4UI logout --- .../apache/syncope/core/logic/oidc/OIDCUserManager.java | 15 ++++++++------- .../ui/commons/resources/saml2sp4ui/LogoutResource.java | 2 +- .../resources/saml2sp4ui/ConsoleLogoutResource.java | 4 ++-- .../resources/saml2sp4ui/EnduserLogoutResource.java | 4 ++-- .../syncope/core/logic/saml2/SAML2SP4UIUserManager.java | 15 ++++++++------- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java index 36c5f6b0ec..2f9040c4e6 100644 --- a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java +++ b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java @@ -30,7 +30,6 @@ import org.apache.commons.lang3.SerializationUtils; import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.AnyOperations; import org.apache.syncope.common.lib.Attr; -import org.apache.syncope.common.lib.EntityTOUtils; import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.oidc.OIDCLoginResponse; import org.apache.syncope.common.lib.request.UserCR; @@ -201,14 +200,11 @@ public class OIDCUserManager { templateUtils.apply(userCR, op.getUserTemplate().get()); } - List<OIDCC4UIProviderActions> actions = getActions(op); - for (OIDCC4UIProviderActions action : actions) { - userCR = action.beforeCreate(userCR, responseTO); - } - UserTO userTO = new UserTO(); fill(op, responseTO, userTO); - EntityTOUtils.toAnyCR(userTO, userCR); + + Optional.ofNullable(userTO.getUsername()).ifPresent(userCR::setUsername); + userCR.getPlainAttrs().addAll(userTO.getPlainAttrs()); if (userCR.getRealm() == null) { userCR.setRealm(SyncopeConstants.ROOT_REALM); @@ -217,6 +213,11 @@ public class OIDCUserManager { userCR.setUsername(defaultUsername); } + List<OIDCC4UIProviderActions> actions = getActions(op); + for (OIDCC4UIProviderActions action : actions) { + userCR = action.beforeCreate(userCR, responseTO); + } + Pair<String, List<PropagationStatus>> created = provisioningManager.create(userCR, false, userCR.getUsername(), OIDC_CLIENT_CONTEXT); userTO = binder.getUserTO(created.getKey()); diff --git a/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/resources/saml2sp4ui/LogoutResource.java b/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/resources/saml2sp4ui/LogoutResource.java index 21680e59ff..d66971fb33 100644 --- a/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/resources/saml2sp4ui/LogoutResource.java +++ b/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/resources/saml2sp4ui/LogoutResource.java @@ -39,7 +39,7 @@ public abstract class LogoutResource extends AbstractSAML2SP4UIResource { protected abstract Class<? extends WebPage> getLogoutPageClass(); - private ResourceResponse doLogout(final SAML2Response saml2Response) { + protected ResourceResponse doLogout(final SAML2Response saml2Response) { SAML2SP4UIService service = BaseSession.class.cast(Session.get()).getAnonymousService(SAML2SP4UIService.class); service.validateLogoutResponse(saml2Response); diff --git a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/resources/saml2sp4ui/ConsoleLogoutResource.java b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/resources/saml2sp4ui/ConsoleLogoutResource.java index ad5894df3e..18231abb3f 100644 --- a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/resources/saml2sp4ui/ConsoleLogoutResource.java +++ b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/resources/saml2sp4ui/ConsoleLogoutResource.java @@ -18,7 +18,7 @@ */ package org.apache.syncope.client.console.resources.saml2sp4ui; -import org.apache.syncope.client.console.pages.SAML2SPBeforeLogout; +import org.apache.syncope.client.console.pages.SAML2SPLogout; import org.apache.syncope.client.ui.commons.SAML2SP4UIConstants; import org.apache.syncope.client.ui.commons.annotations.Resource; import org.apache.syncope.client.ui.commons.resources.saml2sp4ui.LogoutResource; @@ -33,6 +33,6 @@ public class ConsoleLogoutResource extends LogoutResource { @Override protected Class<? extends WebPage> getLogoutPageClass() { - return SAML2SPBeforeLogout.class; + return SAML2SPLogout.class; } } diff --git a/ext/saml2sp4ui/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/saml2sp4ui/EnduserLogoutResource.java b/ext/saml2sp4ui/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/saml2sp4ui/EnduserLogoutResource.java index 30c8868f9a..e75039be72 100644 --- a/ext/saml2sp4ui/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/saml2sp4ui/EnduserLogoutResource.java +++ b/ext/saml2sp4ui/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/saml2sp4ui/EnduserLogoutResource.java @@ -18,7 +18,7 @@ */ package org.apache.syncope.client.enduser.resources.saml2sp4ui; -import org.apache.syncope.client.enduser.pages.SAML2SPBeforeLogout; +import org.apache.syncope.client.enduser.pages.SAML2SPLogout; import org.apache.syncope.client.ui.commons.SAML2SP4UIConstants; import org.apache.syncope.client.ui.commons.annotations.Resource; import org.apache.syncope.client.ui.commons.resources.saml2sp4ui.LogoutResource; @@ -33,6 +33,6 @@ public class EnduserLogoutResource extends LogoutResource { @Override protected Class<? extends WebPage> getLogoutPageClass() { - return SAML2SPBeforeLogout.class; + return SAML2SPLogout.class; } } diff --git a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java index c7ab14d98a..21bacfbe21 100644 --- a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java +++ b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java @@ -31,7 +31,6 @@ import org.apache.commons.lang3.SerializationUtils; import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.AnyOperations; import org.apache.syncope.common.lib.Attr; -import org.apache.syncope.common.lib.EntityTOUtils; import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.request.UserCR; import org.apache.syncope.common.lib.request.UserUR; @@ -217,14 +216,11 @@ public class SAML2SP4UIUserManager { templateUtils.apply(userCR, idp.getUserTemplate().get()); } - List<SAML2SP4UIIdPActions> actions = getActions(idp); - for (SAML2SP4UIIdPActions action : actions) { - userCR = action.beforeCreate(userCR, loginResponse); - } - UserTO userTO = new UserTO(); fill(idp.getKey(), loginResponse, userTO); - EntityTOUtils.toAnyCR(userTO, userCR); + + Optional.ofNullable(userTO.getUsername()).ifPresent(userCR::setUsername); + userCR.getPlainAttrs().addAll(userTO.getPlainAttrs()); if (userCR.getRealm() == null) { userCR.setRealm(SyncopeConstants.ROOT_REALM); @@ -233,6 +229,11 @@ public class SAML2SP4UIUserManager { userCR.setUsername(nameID); } + List<SAML2SP4UIIdPActions> actions = getActions(idp); + for (SAML2SP4UIIdPActions action : actions) { + userCR = action.beforeCreate(userCR, loginResponse); + } + Pair<String, List<PropagationStatus>> created = provisioningManager.create(userCR, false, userCR.getUsername(), SAML2SP_CONTEXT); userTO = binder.getUserTO(created.getKey());
