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/04/02 13:07:41 UTC
[syncope] branch master updated: [SYNCOPE-1410] Allowing Groovy
implementations for SAML2SP ext
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 dd1e088 [SYNCOPE-1410] Allowing Groovy implementations for SAML2SP ext
dd1e088 is described below
commit dd1e08852870bcb52968c75ea23f8501e9f01c65
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Tue Apr 2 15:07:30 2019 +0200
[SYNCOPE-1410] Allowing Groovy implementations for SAML2SP ext
---
.../lib/types/ImplementationTypesHolder.java | 4 -
.../console/wizards/OIDCProviderWizardBuilder.java | 2 +-
.../lib/types/OIDCClientImplementationType.java | 4 +-
.../persistence/jpa/entity/JPAOIDCProvider.java | 2 +-
.../client/console/rest/SAML2IdPsRestClient.java | 9 ---
.../console/wizards/SAML2IdPWizardBuilder.java | 46 ++++++++----
.../panels/SAML2IdPsDirectoryPanel.properties | 4 +-
.../panels/SAML2IdPsDirectoryPanel_it.properties | 4 +-
.../SAML2IdPsDirectoryPanel_pt_BR.properties | 4 +-
.../panels/SAML2IdPsDirectoryPanel_ru.properties | 4 +-
.../apache/syncope/common/lib/to/SAML2IdPTO.java | 20 ++---
.../lib/types/SAML2SPImplementationType.java} | 13 +++-
.../apache/syncope/core/logic/SAML2IdPLogic.java | 17 +----
.../apache/syncope/core/logic/SAML2SPLogic.java | 15 ++--
.../SAML2SPClassPathScanImplementationLookup.java | 87 ----------------------
.../syncope/core/logic/init/SAML2SPLoader.java | 3 +
.../syncope/core/logic/saml2/SAML2IdPEntity.java | 8 +-
.../syncope/core/logic/saml2/SAML2UserManager.java | 18 ++---
.../core/persistence/api/entity/SAML2IdP.java | 8 +-
.../core/persistence/jpa/entity/JPASAML2IdP.java | 42 +++++++----
.../java/data/SAML2IdPDataBinderImpl.java | 36 +++++++--
.../common/rest/api/service/SAML2IdPService.java | 21 ------
.../core/rest/cxf/service/SAML2IdPServiceImpl.java | 11 ---
23 files changed, 151 insertions(+), 231 deletions(-)
diff --git a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/types/ImplementationTypesHolder.java b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/types/ImplementationTypesHolder.java
index 5ef7d81..780ec8c 100644
--- a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/types/ImplementationTypesHolder.java
+++ b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/types/ImplementationTypesHolder.java
@@ -50,8 +50,4 @@ public final class ImplementationTypesHolder {
public Map<String, String> getValues() {
return Collections.unmodifiableMap(values);
}
-
-// public String getClass(final String implementationType) {
-// return values.get(implementationType);
-// }
}
diff --git a/ext/oidcclient/client-console/src/main/java/org/apache/syncope/client/console/wizards/OIDCProviderWizardBuilder.java b/ext/oidcclient/client-console/src/main/java/org/apache/syncope/client/console/wizards/OIDCProviderWizardBuilder.java
index 73ad117..0278d89 100644
--- a/ext/oidcclient/client-console/src/main/java/org/apache/syncope/client/console/wizards/OIDCProviderWizardBuilder.java
+++ b/ext/oidcclient/client-console/src/main/java/org/apache/syncope/client/console/wizards/OIDCProviderWizardBuilder.java
@@ -71,7 +71,7 @@ public class OIDCProviderWizardBuilder extends AjaxWizardBuilder<OIDCProviderTO>
@Override
protected List<String> load() {
- return implRestClient.list(OIDCClientImplementationType.OP_ACTION).stream().
+ return implRestClient.list(OIDCClientImplementationType.OP_ACTIONS).stream().
map(EntityTO::getKey).sorted().collect(Collectors.toList());
}
};
diff --git a/ext/oidcclient/common-lib/src/main/java/org/apache/syncope/common/lib/types/OIDCClientImplementationType.java b/ext/oidcclient/common-lib/src/main/java/org/apache/syncope/common/lib/types/OIDCClientImplementationType.java
index ca94cec..895c3eb 100644
--- a/ext/oidcclient/common-lib/src/main/java/org/apache/syncope/common/lib/types/OIDCClientImplementationType.java
+++ b/ext/oidcclient/common-lib/src/main/java/org/apache/syncope/common/lib/types/OIDCClientImplementationType.java
@@ -23,10 +23,10 @@ import org.apache.commons.lang3.tuple.Pair;
public final class OIDCClientImplementationType {
- public static final String OP_ACTION = "OP_ACTION";
+ public static final String OP_ACTIONS = "OP_ACTIONS";
private static final Map<String, String> VALUES = Map.ofEntries(
- Pair.of(OP_ACTION, "org.apache.syncope.core.provisioning.api.OIDCProviderActions"));
+ Pair.of(OP_ACTIONS, "org.apache.syncope.core.provisioning.api.OIDCProviderActions"));
public static Map<String, String> values() {
return VALUES;
diff --git a/ext/oidcclient/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCProvider.java b/ext/oidcclient/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCProvider.java
index ae748b4..556ea97 100644
--- a/ext/oidcclient/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCProvider.java
+++ b/ext/oidcclient/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCProvider.java
@@ -269,7 +269,7 @@ public class JPAOIDCProvider extends AbstractGeneratedKeyEntity implements OIDCP
@Override
public boolean add(final Implementation action) {
checkType(action, JPAImplementation.class);
- checkImplementationType(action, OIDCClientImplementationType.OP_ACTION);
+ checkImplementationType(action, OIDCClientImplementationType.OP_ACTIONS);
return actions.contains((JPAImplementation) action) || actions.add((JPAImplementation) action);
}
diff --git a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/rest/SAML2IdPsRestClient.java b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/rest/SAML2IdPsRestClient.java
index 06090a0..b38963f 100644
--- a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/rest/SAML2IdPsRestClient.java
+++ b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/rest/SAML2IdPsRestClient.java
@@ -20,7 +20,6 @@ package org.apache.syncope.client.console.rest;
import java.io.InputStream;
import java.util.List;
-import java.util.Set;
import javax.ws.rs.core.MediaType;
import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.common.lib.to.SAML2IdPTO;
@@ -34,14 +33,6 @@ public class SAML2IdPsRestClient extends BaseRestClient {
return getService(SAML2IdPService.class).list();
}
- public Set<String> getActionsClasses() {
- return getService(SAML2IdPService.class).getActionsClasses();
- }
-
- public Set<String> getRequestedAuthnContextProviderClasses() {
- return getService(SAML2IdPService.class).getRequestedAuthnContextProviderClasses();
- }
-
public void importIdPs(final InputStream input) {
SyncopeConsoleSession.get().
getService(MediaType.APPLICATION_XML_TYPE, SAML2IdPService.class).importFromMetadata(input);
diff --git a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java
index 65d17cf..aca0f5e 100644
--- a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java
+++ b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java
@@ -24,11 +24,13 @@ import java.util.Arrays;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
+import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.console.SyncopeWebApplication;
import org.apache.syncope.client.console.panels.SAML2IdPsDirectoryPanel;
+import org.apache.syncope.client.console.rest.ImplementationRestClient;
import org.apache.syncope.client.console.rest.SAML2IdPsRestClient;
import org.apache.syncope.client.console.wizards.resources.JEXLTransformersTogglePanel;
import org.apache.syncope.client.console.wizards.resources.ItemTransformersTogglePanel;
@@ -39,9 +41,11 @@ import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
import org.apache.syncope.client.ui.commons.wizards.AjaxWizardBuilder;
+import org.apache.syncope.common.lib.to.EntityTO;
import org.apache.syncope.common.lib.to.ItemTO;
import org.apache.syncope.common.lib.to.SAML2IdPTO;
import org.apache.syncope.common.lib.types.SAML2BindingType;
+import org.apache.syncope.common.lib.types.SAML2SPImplementationType;
import org.apache.wicket.Component;
import org.apache.wicket.PageReference;
import org.apache.wicket.extensions.wizard.WizardModel;
@@ -61,15 +65,29 @@ public class SAML2IdPWizardBuilder extends AjaxWizardBuilder<SAML2IdPTO> {
private final SAML2IdPsRestClient restClient = new SAML2IdPsRestClient();
+ private final ImplementationRestClient implRestClient = new ImplementationRestClient();
+
private final SAML2IdPsDirectoryPanel directoryPanel;
- private final IModel<List<String>> actionsClasses = new LoadableDetachableModel<List<String>>() {
+ private final IModel<List<String>> idpActions = new LoadableDetachableModel<List<String>>() {
private static final long serialVersionUID = 5275935387613157437L;
@Override
protected List<String> load() {
- return new ArrayList<>(restClient.getActionsClasses());
+ return implRestClient.list(SAML2SPImplementationType.IDP_ACTIONS).stream().
+ map(EntityTO::getKey).sorted().collect(Collectors.toList());
+ }
+ };
+
+ private final IModel<List<String>> requestedAuthnContextProviders = new LoadableDetachableModel<List<String>>() {
+
+ private static final long serialVersionUID = 4659376149825914247L;
+
+ @Override
+ protected List<String> load() {
+ return implRestClient.list(SAML2SPImplementationType.REQUESTED_AUTHN_CONTEXT_PROVIDER).stream().
+ map(EntityTO::getKey).sorted().collect(Collectors.toList());
}
};
@@ -159,21 +177,21 @@ public class SAML2IdPWizardBuilder extends AjaxWizardBuilder<SAML2IdPTO> {
bindingType.setChoices(Arrays.asList(SAML2BindingType.values()));
fields.add(bindingType);
- AjaxTextFieldPanel requestedAuthnContextProviderClassName = new AjaxTextFieldPanel(
- "field", "requestedAuthnContextProviderClassName",
- new PropertyModel<>(idpTO, "requestedAuthnContextProviderClassName"));
- requestedAuthnContextProviderClassName.setChoices(
- new ArrayList<>(restClient.getRequestedAuthnContextProviderClasses()));
- fields.add(requestedAuthnContextProviderClassName);
+ AjaxTextFieldPanel requestedAuthnContextProvider = new AjaxTextFieldPanel(
+ "field", "requestedAuthnContextProvider",
+ new PropertyModel<>(idpTO, "requestedAuthnContextProvider"));
+ requestedAuthnContextProvider.setChoices(
+ requestedAuthnContextProviders.getObject());
+ fields.add(requestedAuthnContextProvider);
- AjaxPalettePanel<String> actionsClassNames = new AjaxPalettePanel.Builder<String>().
+ AjaxPalettePanel<String> actions = new AjaxPalettePanel.Builder<String>().
setAllowMoveAll(true).setAllowOrder(true).
- setName(new StringResourceModel("actionsClassNames", directoryPanel).getString()).
+ setName(new StringResourceModel("actions", directoryPanel).getString()).
build("field",
- new PropertyModel<>(idpTO, "actionsClassNames"),
- new ListModel<>(actionsClasses.getObject()));
- actionsClassNames.setOutputMarkupId(true);
- fields.add(actionsClassNames);
+ new PropertyModel<>(idpTO, "actions"),
+ new ListModel<>(idpActions.getObject()));
+ actions.setOutputMarkupId(true);
+ fields.add(actions);
add(new ListView<Component>("fields", fields) {
diff --git a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.properties b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.properties
index 3010eaa..79aee53 100644
--- a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.properties
+++ b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.properties
@@ -24,7 +24,7 @@ bindingType=Binding
html.title=metadata
createUnmatching=Create unmatching users
updateMatching=Update matching users
-actionsClassNames=Actions
+actions=Actions
template.title=user template
selfRegUnmatching=SAML-initiated self-registration
-requestedAuthnContextProviderClassName=RequestedAuthnContext provider
+requestedAuthnContextProvider=RequestedAuthnContext provider
diff --git a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_it.properties b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_it.properties
index fe2dc04..6b5ed3a 100644
--- a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_it.properties
+++ b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_it.properties
@@ -24,7 +24,7 @@ bindingType=Binding
html.title=metadata
createUnmatching=Create unmatching users
updateMatching=Update matching users
-actionsClassNames=Azioni
+actions=Azioni
template.title=template utenti
selfRegUnmatching=SAML-initiated self-registration
-requestedAuthnContextProviderClassName=RequestedAuthnContext provider
+requestedAuthnContextProvider=RequestedAuthnContext provider
diff --git a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_pt_BR.properties b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_pt_BR.properties
index 9f4b9b0..cb586cd 100644
--- a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_pt_BR.properties
+++ b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_pt_BR.properties
@@ -24,7 +24,7 @@ bindingType=Binding
html.title=metadata
createUnmatching=Create unmatching users
updateMatching=Update matching users
-actionsClassNames=Actions
+actions=Actions
template.title=user template
selfRegUnmatching=SAML-initiated self-registration
-requestedAuthnContextProviderClassName=RequestedAuthnContext provider
+requestedAuthnContextProvider=RequestedAuthnContext provider
diff --git a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_ru.properties b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_ru.properties
index e8de69f..cae8696 100644
--- a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_ru.properties
+++ b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_ru.properties
@@ -24,7 +24,7 @@ bindingType=Binding
html.title=metadata
createUnmatching=Create unmatching users
updateMatching=Update matching users
-actionsClassNames=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f
+actions=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f
template.title=user template
selfRegUnmatching=SAML-initiated self-registration
-requestedAuthnContextProviderClassName=RequestedAuthnContext provider
+requestedAuthnContextProvider=RequestedAuthnContext provider
diff --git a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2IdPTO.java b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2IdPTO.java
index 76b3259..13dc87a 100644
--- a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2IdPTO.java
+++ b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2IdPTO.java
@@ -60,9 +60,9 @@ public class SAML2IdPTO implements EntityTO, ItemContainerTO {
private final List<ItemTO> items = new ArrayList<>();
- private final List<String> actionsClassNames = new ArrayList<>();
+ private final List<String> actions = new ArrayList<>();
- private String requestedAuthnContextProviderClassName;
+ private String requestedAuthnContextProvider;
@Override
public String getKey() {
@@ -199,18 +199,18 @@ public class SAML2IdPTO implements EntityTO, ItemContainerTO {
return this.items.remove(item);
}
- @XmlElementWrapper(name = "actionsClassNames")
- @XmlElement(name = "actionsClassNames")
+ @XmlElementWrapper(name = "actions")
+ @XmlElement(name = "action")
@JsonProperty("actions")
- public List<String> getActionsClassNames() {
- return actionsClassNames;
+ public List<String> getActions() {
+ return actions;
}
- public String getRequestedAuthnContextProviderClassName() {
- return requestedAuthnContextProviderClassName;
+ public String getRequestedAuthnContextProvider() {
+ return requestedAuthnContextProvider;
}
- public void setRequestedAuthnContextProviderClassName(final String requestedAuthnContextProviderClassName) {
- this.requestedAuthnContextProviderClassName = requestedAuthnContextProviderClassName;
+ public void setRequestedAuthnContextProvider(final String requestedAuthnContextProvider) {
+ this.requestedAuthnContextProvider = requestedAuthnContextProvider;
}
}
diff --git a/ext/oidcclient/common-lib/src/main/java/org/apache/syncope/common/lib/types/OIDCClientImplementationType.java b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2SPImplementationType.java
similarity index 68%
copy from ext/oidcclient/common-lib/src/main/java/org/apache/syncope/common/lib/types/OIDCClientImplementationType.java
copy to ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2SPImplementationType.java
index ca94cec..acda3b3 100644
--- a/ext/oidcclient/common-lib/src/main/java/org/apache/syncope/common/lib/types/OIDCClientImplementationType.java
+++ b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2SPImplementationType.java
@@ -21,18 +21,23 @@ package org.apache.syncope.common.lib.types;
import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
-public final class OIDCClientImplementationType {
+public final class SAML2SPImplementationType {
- public static final String OP_ACTION = "OP_ACTION";
+ public static final String IDP_ACTIONS = "IDP_ACTIONS";
+
+ public static final String REQUESTED_AUTHN_CONTEXT_PROVIDER = "REQUESTED_AUTHN_CONTEXT_PROVIDER";
private static final Map<String, String> VALUES = Map.ofEntries(
- Pair.of(OP_ACTION, "org.apache.syncope.core.provisioning.api.OIDCProviderActions"));
+ Pair.of(IDP_ACTIONS,
+ "org.apache.syncope.core.provisioning.api.SAML2IdPActions"),
+ Pair.of(REQUESTED_AUTHN_CONTEXT_PROVIDER,
+ "org.apache.syncope.core.provisioning.api.RequestedAuthnContextProvider"));
public static Map<String, String> values() {
return VALUES;
}
- private OIDCClientImplementationType() {
+ private SAML2SPImplementationType() {
// private constructor for static utility class
}
}
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPLogic.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPLogic.java
index ef9d2c5..753337d 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPLogic.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPLogic.java
@@ -26,7 +26,6 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
-import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.syncope.common.lib.SyncopeClientException;
@@ -35,10 +34,9 @@ import org.apache.syncope.common.lib.to.SAML2IdPTO;
import org.apache.syncope.common.lib.types.ClientExceptionType;
import org.apache.syncope.common.lib.types.SAML2BindingType;
import org.apache.syncope.common.lib.types.SAML2SPEntitlement;
-import org.apache.syncope.core.logic.init.SAML2SPClassPathScanImplementationLookup;
-import org.apache.syncope.core.logic.saml2.SAML2ReaderWriter;
import org.apache.syncope.core.logic.saml2.SAML2IdPCache;
import org.apache.syncope.core.logic.saml2.SAML2IdPEntity;
+import org.apache.syncope.core.logic.saml2.SAML2ReaderWriter;
import org.apache.syncope.core.persistence.api.dao.NotFoundException;
import org.apache.syncope.core.persistence.api.dao.SAML2IdPDAO;
import org.apache.syncope.core.persistence.api.entity.SAML2IdP;
@@ -69,21 +67,8 @@ public class SAML2IdPLogic extends AbstractSAML2Logic<SAML2IdPTO> {
private SAML2IdPDAO idpDAO;
@Autowired
- private SAML2SPClassPathScanImplementationLookup implLookup;
-
- @Autowired
private SAML2ReaderWriter saml2rw;
- @PreAuthorize("isAuthenticated()")
- public Set<String> getActionsClasses() {
- return implLookup.getActionsClasses();
- }
-
- @PreAuthorize("isAuthenticated()")
- public Set<String> getRequestedAuthnContextProviderClasses() {
- return implLookup.getRequestedAuthnContextProvidersClasses();
- }
-
private SAML2IdPTO complete(final SAML2IdP idp, final SAML2IdPTO idpTO) {
SAML2IdPEntity idpEntity = cache.get(idpTO.getEntityID());
if (idpEntity == null) {
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
index 7fd659b..3977db6 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
@@ -50,6 +50,7 @@ import org.apache.syncope.core.logic.saml2.SAML2IdPCache;
import org.apache.syncope.core.logic.saml2.SAML2IdPEntity;
import org.apache.syncope.core.logic.saml2.SAML2UserManager;
import org.apache.syncope.core.persistence.api.dao.AccessTokenDAO;
+import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
import org.apache.syncope.core.persistence.api.dao.NotFoundException;
import org.apache.syncope.core.persistence.api.dao.SAML2IdPDAO;
import org.apache.syncope.core.persistence.api.entity.SAML2IdP;
@@ -98,13 +99,12 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Component;
import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
import org.apache.syncope.core.provisioning.java.DefaultRequestedAuthnContextProvider;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.apache.syncope.core.spring.ImplementationManager;
import org.apache.syncope.core.spring.security.AuthContextUtils;
import org.apache.syncope.core.spring.security.AuthDataAccessor;
import org.apache.syncope.core.spring.security.Encryptor;
import org.apache.syncope.core.spring.security.SecureRandomUtils;
import org.opensaml.core.xml.schema.XSAny;
-import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.util.ResourceUtils;
@Component
@@ -142,6 +142,9 @@ public class SAML2SPLogic extends AbstractSAML2Logic<EntityTO> {
private AccessTokenDAO accessTokenDAO;
@Autowired
+ private ImplementationDAO implementationDAO;
+
+ @Autowired
private AuthDataAccessor authDataAccessor;
@Autowired
@@ -294,14 +297,12 @@ public class SAML2SPLogic extends AbstractSAML2Logic<EntityTO> {
nameIDPolicy.setSPNameQualifier(spEntityID);
RequestedAuthnContextProvider requestedAuthnContextProvider = new DefaultRequestedAuthnContextProvider();
- if (idp.getRequestedAuthnContextProviderClassName() != null) {
+ if (idp.getRequestedAuthnContextProvider() != null) {
try {
- Class<?> actionsClass = Class.forName(idp.getRequestedAuthnContextProviderClassName());
- requestedAuthnContextProvider = (RequestedAuthnContextProvider) ApplicationContextProvider.
- getBeanFactory().createBean(actionsClass, AbstractBeanDefinition.AUTOWIRE_BY_TYPE, true);
+ ImplementationManager.build(implementationDAO.find(idp.getRequestedAuthnContextProvider()));
} catch (Exception e) {
LOG.warn("Cannot instantiate '{}', reverting to {}",
- idp.getRequestedAuthnContextProviderClassName(),
+ idp.getRequestedAuthnContextProvider(),
DefaultRequestedAuthnContextProvider.class.getName(), e);
}
}
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPClassPathScanImplementationLookup.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPClassPathScanImplementationLookup.java
deleted file mode 100644
index 24ce2a3..0000000
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPClassPathScanImplementationLookup.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.logic.init;
-
-import java.lang.reflect.Modifier;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-import org.apache.syncope.core.persistence.api.ImplementationLookup;
-import org.apache.syncope.core.persistence.api.SyncopeCoreLoader;
-import org.apache.syncope.core.provisioning.api.RequestedAuthnContextProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
-import org.springframework.core.type.filter.AssignableTypeFilter;
-import org.springframework.stereotype.Component;
-import org.springframework.util.ClassUtils;
-import org.apache.syncope.core.provisioning.api.SAML2IdPActions;
-
-@Component
-public class SAML2SPClassPathScanImplementationLookup implements SyncopeCoreLoader {
-
- private static final Logger LOG = LoggerFactory.getLogger(ImplementationLookup.class);
-
- private static final String DEFAULT_BASE_PACKAGE = "org.apache.syncope.core";
-
- private Set<String> actionsClasses;
-
- private Set<String> requestedAuthnContextProvidersClasses;
-
- @Override
- public int getOrder() {
- return 999;
- }
-
- @Override
- public void load() {
- actionsClasses = new HashSet<>();
- requestedAuthnContextProvidersClasses = new HashSet<>();
-
- ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
- scanner.addIncludeFilter(new AssignableTypeFilter(SAML2IdPActions.class));
- scanner.addIncludeFilter(new AssignableTypeFilter(RequestedAuthnContextProvider.class));
-
- scanner.findCandidateComponents(DEFAULT_BASE_PACKAGE).forEach(bd -> {
- try {
- Class<?> clazz = ClassUtils.resolveClassName(bd.getBeanClassName(), ClassUtils.getDefaultClassLoader());
- boolean isAbstractClazz = Modifier.isAbstract(clazz.getModifiers());
-
- if (SAML2IdPActions.class.isAssignableFrom(clazz) && !isAbstractClazz) {
- actionsClasses.add(clazz.getName());
- } else if (RequestedAuthnContextProvider.class.isAssignableFrom(clazz) && !isAbstractClazz) {
- requestedAuthnContextProvidersClasses.add(clazz.getName());
- }
- } catch (Throwable t) {
- LOG.warn("Could not inspect class {}", bd.getBeanClassName(), t);
- }
- });
-
- actionsClasses = Collections.unmodifiableSet(actionsClasses);
- requestedAuthnContextProvidersClasses = Collections.unmodifiableSet(requestedAuthnContextProvidersClasses);
- }
-
- public Set<String> getActionsClasses() {
- return actionsClasses;
- }
-
- public Set<String> getRequestedAuthnContextProvidersClasses() {
- return requestedAuthnContextProvidersClasses;
- }
-}
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPLoader.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPLoader.java
index 5e5030e..445873f 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPLoader.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPLoader.java
@@ -28,7 +28,9 @@ import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.common.lib.PropertyUtils;
import org.apache.syncope.common.lib.types.EntitlementsHolder;
+import org.apache.syncope.common.lib.types.ImplementationTypesHolder;
import org.apache.syncope.common.lib.types.SAML2SPEntitlement;
+import org.apache.syncope.common.lib.types.SAML2SPImplementationType;
import org.apache.syncope.core.logic.saml2.SAML2IdPCache;
import org.apache.syncope.core.logic.saml2.SAML2ReaderWriter;
import org.apache.syncope.core.persistence.api.SyncopeCoreLoader;
@@ -90,6 +92,7 @@ public class SAML2SPLoader implements SyncopeCoreLoader {
@Override
public void load() {
EntitlementsHolder.getInstance().addAll(SAML2SPEntitlement.values());
+ ImplementationTypesHolder.getInstance().putAll(SAML2SPImplementationType.values());
Properties props = PropertyUtils.read(getClass(), SAML2SP_LOGIC_PROPERTIES, "conf.directory");
String confDirectory = props.getProperty("conf.directory");
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java
index 18bb168..8b66217 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java
@@ -158,12 +158,12 @@ public class SAML2IdPEntity {
return idpTO.getUserTemplate();
}
- public List<String> getActionsClassNames() {
- return idpTO.getActionsClassNames();
+ public List<String> getActions() {
+ return idpTO.getActions();
}
- public String getRequestedAuthnContextProviderClassName() {
- return idpTO.getRequestedAuthnContextProviderClassName();
+ public String getRequestedAuthnContextProvider() {
+ return idpTO.getRequestedAuthnContextProvider();
}
public Endpoint getSSOLocation(final SAML2BindingType bindingType) {
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 92708ed..bebfc78 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
@@ -38,6 +38,7 @@ import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.syncope.common.lib.types.SchemaType;
import org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
+import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
import org.apache.syncope.core.persistence.api.dao.SAML2IdPDAO;
import org.apache.syncope.core.persistence.api.dao.UserDAO;
import org.apache.syncope.core.persistence.api.entity.DerSchema;
@@ -55,11 +56,10 @@ import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
import org.apache.syncope.core.provisioning.java.IntAttrNameParser;
import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
import org.apache.syncope.core.provisioning.java.utils.TemplateUtils;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.apache.syncope.core.spring.ImplementationManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@@ -76,6 +76,9 @@ public class SAML2UserManager {
private UserDAO userDAO;
@Autowired
+ private ImplementationDAO implementationDAO;
+
+ @Autowired
private IntAttrNameParser intAttrNameParser;
@Autowired
@@ -174,16 +177,11 @@ public class SAML2UserManager {
private List<SAML2IdPActions> getActions(final SAML2IdPEntity idp) {
List<SAML2IdPActions> actions = new ArrayList<>();
-
- idp.getActionsClassNames().forEach(className -> {
+ idp.getActions().forEach(impl -> {
try {
- Class<?> actionsClass = Class.forName(className);
- SAML2IdPActions idpActions = (SAML2IdPActions) ApplicationContextProvider.getBeanFactory().
- createBean(actionsClass, AbstractBeanDefinition.AUTOWIRE_BY_TYPE, true);
-
- actions.add(idpActions);
+ actions.add(ImplementationManager.build(implementationDAO.find(impl)));
} catch (Exception e) {
- LOG.warn("Class '{}' not found", className, e);
+ LOG.warn("While building {}", impl, e);
}
});
diff --git a/ext/saml2sp/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/SAML2IdP.java b/ext/saml2sp/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/SAML2IdP.java
index 3cf9ddc..5acc217 100644
--- a/ext/saml2sp/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/SAML2IdP.java
+++ b/ext/saml2sp/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/SAML2IdP.java
@@ -72,9 +72,11 @@ public interface SAML2IdP extends Entity {
List<? extends SAML2IdPItem> getItems();
- List<String> getActionsClassNames();
+ boolean add(Implementation action);
- String getRequestedAuthnContextProviderClassName();
+ List<? extends Implementation> getActions();
- void setRequestedAuthnContextProviderClassName(String requestedAuthnContextProviderClassName);
+ Implementation getRequestedAuthnContextProvider();
+
+ void setRequestedAuthnContextProvider(Implementation requestedAuthnContextProvider);
}
diff --git a/ext/saml2sp/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2IdP.java b/ext/saml2sp/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2IdP.java
index a2cc963..b393dd9 100644
--- a/ext/saml2sp/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2IdP.java
+++ b/ext/saml2sp/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2IdP.java
@@ -24,19 +24,21 @@ import java.util.Optional;
import javax.persistence.Basic;
import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
-import javax.persistence.CollectionTable;
import javax.persistence.Column;
-import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
import javax.persistence.Lob;
+import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.syncope.common.lib.types.SAML2BindingType;
+import org.apache.syncope.common.lib.types.SAML2SPImplementationType;
+import org.apache.syncope.core.persistence.api.entity.Implementation;
import org.apache.syncope.core.persistence.api.entity.SAML2IdP;
import org.apache.syncope.core.persistence.api.entity.SAML2IdPItem;
import org.apache.syncope.core.persistence.api.entity.SAML2UserTemplate;
@@ -86,14 +88,16 @@ public class JPASAML2IdP extends AbstractGeneratedKeyEntity implements SAML2IdP
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER, mappedBy = "idp")
private JPASAML2UserTemplate userTemplate;
- @ElementCollection(fetch = FetchType.EAGER)
- @Column(name = "actionClassName")
- @CollectionTable(name = TABLE + "_actionsClassNames",
+ @ManyToMany(fetch = FetchType.EAGER)
+ @JoinTable(name = "SAML2IdPAction",
joinColumns =
- @JoinColumn(name = "saml2IdP_id", referencedColumnName = "id"))
- private List<String> actionsClassNames = new ArrayList<>();
+ @JoinColumn(name = "saml2idp_id"),
+ inverseJoinColumns =
+ @JoinColumn(name = "implementation_id"))
+ private List<JPAImplementation> actions = new ArrayList<>();
- private String requestedAuthnContextProviderClassName;
+ @OneToOne
+ private JPAImplementation requestedAuthnContextProvider;
@Override
public String getEntityID() {
@@ -219,17 +223,27 @@ public class JPASAML2IdP extends AbstractGeneratedKeyEntity implements SAML2IdP
}
@Override
- public List<String> getActionsClassNames() {
- return actionsClassNames;
+ public boolean add(final Implementation action) {
+ checkType(action, JPAImplementation.class);
+ checkImplementationType(action, SAML2SPImplementationType.IDP_ACTIONS);
+ return actions.contains((JPAImplementation) action) || actions.add((JPAImplementation) action);
}
@Override
- public String getRequestedAuthnContextProviderClassName() {
- return requestedAuthnContextProviderClassName;
+ public List<? extends Implementation> getActions() {
+ return actions;
}
@Override
- public void setRequestedAuthnContextProviderClassName(final String requestedAuthnContextProviderClassName) {
- this.requestedAuthnContextProviderClassName = requestedAuthnContextProviderClassName;
+ public JPAImplementation getRequestedAuthnContextProvider() {
+ return requestedAuthnContextProvider;
+ }
+
+ @Override
+ public void setRequestedAuthnContextProvider(final Implementation requestedAuthnContextProvider) {
+ checkType(requestedAuthnContextProvider, JPAImplementation.class);
+ checkImplementationType(
+ requestedAuthnContextProvider, SAML2SPImplementationType.REQUESTED_AUTHN_CONTEXT_PROVIDER);
+ this.requestedAuthnContextProvider = (JPAImplementation) requestedAuthnContextProvider;
}
}
diff --git a/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java b/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java
index 7f2a482..48bc77d 100644
--- a/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java
+++ b/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java
@@ -32,8 +32,10 @@ import org.apache.syncope.common.lib.types.ClientExceptionType;
import org.apache.syncope.common.lib.types.MappingPurpose;
import org.apache.syncope.common.lib.types.SchemaType;
import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
+import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
import org.apache.syncope.core.persistence.api.dao.SAML2IdPDAO;
import org.apache.syncope.core.persistence.api.entity.Entity;
+import org.apache.syncope.core.persistence.api.entity.Implementation;
import org.apache.syncope.core.persistence.api.entity.SAML2EntityFactory;
import org.apache.syncope.core.persistence.api.entity.SAML2IdP;
import org.apache.syncope.core.persistence.api.entity.SAML2IdPItem;
@@ -59,6 +61,9 @@ public class SAML2IdPDataBinderImpl implements SAML2IdPDataBinder {
private SAML2IdPDAO saml2IdPDAO;
@Autowired
+ private ImplementationDAO implementationDAO;
+
+ @Autowired
private SAML2EntityFactory entityFactory;
@Autowired
@@ -208,10 +213,28 @@ public class SAML2IdPDataBinderImpl implements SAML2IdPDataBinder {
});
populateItems(idpTO, idp, allowedSchemas);
- idp.getActionsClassNames().clear();
- idp.getActionsClassNames().addAll(idpTO.getActionsClassNames());
+ idpTO.getActions().forEach(action -> {
+ Implementation implementation = implementationDAO.find(action);
+ if (implementation == null) {
+ LOG.debug("Invalid " + Implementation.class.getSimpleName() + " {}, ignoring...", action);
+ } else {
+ idp.add(implementation);
+ }
+ });
+ // remove all implementations not contained in the TO
+ idp.getActions().removeIf(impl -> !idpTO.getActions().contains(impl.getKey()));
- idp.setRequestedAuthnContextProviderClassName(idpTO.getRequestedAuthnContextProviderClassName());
+ if (idpTO.getRequestedAuthnContextProvider() == null) {
+ idp.setRequestedAuthnContextProvider(null);
+ } else {
+ Implementation implementation = implementationDAO.find(idpTO.getRequestedAuthnContextProvider());
+ if (implementation == null) {
+ LOG.debug("Invalid " + Implementation.class.getSimpleName() + " {}, ignoring...",
+ idpTO.getRequestedAuthnContextProvider());
+ } else {
+ idp.setRequestedAuthnContextProvider(implementation);
+ }
+ }
return saml2IdPDAO.save(idp);
}
@@ -258,9 +281,12 @@ public class SAML2IdPDataBinderImpl implements SAML2IdPDataBinder {
populateItems(idp, idpTO);
- idpTO.getActionsClassNames().addAll(idp.getActionsClassNames());
+ idpTO.getActions().addAll(
+ idp.getActions().stream().map(Entity::getKey).collect(Collectors.toList()));
- idpTO.setRequestedAuthnContextProviderClassName(idp.getRequestedAuthnContextProviderClassName());
+ if (idp.getRequestedAuthnContextProvider() != null) {
+ idpTO.setRequestedAuthnContextProvider(idp.getRequestedAuthnContextProvider().getKey());
+ }
return idpTO;
}
diff --git a/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2IdPService.java b/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2IdPService.java
index ac117c7..9b31c8a 100644
--- a/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2IdPService.java
+++ b/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2IdPService.java
@@ -28,7 +28,6 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirements;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.io.InputStream;
import java.util.List;
-import java.util.Set;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -54,26 +53,6 @@ import org.apache.syncope.common.rest.api.RESTHeaders;
public interface SAML2IdPService extends JAXRSService {
/**
- * Returns the list of available SAML2IdPActions implementations.
- *
- * @return the list of available SAML2IdPActions implementations
- */
- @GET
- @Path("actionsClasses")
- @Produces({ MediaType.APPLICATION_JSON })
- Set<String> getActionsClasses();
-
- /**
- * Returns the list of available RequestedAuthnContextProviders implementations.
- *
- * @return the list of available RequestedAuthnContextProviders implementations
- */
- @GET
- @Path("requestedAuthnContextProviders")
- @Produces({ MediaType.APPLICATION_JSON })
- Set<String> getRequestedAuthnContextProviderClasses();
-
- /**
* Returns a list of all defined SAML 2.0 Identity Providers.
*
* @return list of all defined SAML 2.0 Identity Providers
diff --git a/ext/saml2sp/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2IdPServiceImpl.java b/ext/saml2sp/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2IdPServiceImpl.java
index 5952bec..1f2790f 100644
--- a/ext/saml2sp/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2IdPServiceImpl.java
+++ b/ext/saml2sp/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2IdPServiceImpl.java
@@ -20,7 +20,6 @@ package org.apache.syncope.core.rest.cxf.service;
import java.io.InputStream;
import java.util.List;
-import java.util.Set;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.SAML2IdPTO;
import org.apache.syncope.common.rest.api.RESTHeaders;
@@ -36,16 +35,6 @@ public class SAML2IdPServiceImpl extends AbstractServiceImpl implements SAML2IdP
private SAML2IdPLogic logic;
@Override
- public Set<String> getActionsClasses() {
- return logic.getActionsClasses();
- }
-
- @Override
- public Set<String> getRequestedAuthnContextProviderClasses() {
- return logic.getRequestedAuthnContextProviderClasses();
- }
-
- @Override
public List<SAML2IdPTO> list() {
return logic.list();
}