This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new ffbaf3c802 Fixing SAML 2.0 SP4UI logout
ffbaf3c802 is described below
commit ffbaf3c802df9675326b4eb59aef9cab72e56166
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 5e4b1a2c3b..886776eea6 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());