This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 4_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/4_1_X by this push:
new 2039dce6ec [SYNCOPE-1969] Adding missing SAMLRegisteredService
configurations (#1395)
2039dce6ec is described below
commit 2039dce6ecffcc8f96e9d629476b2149fb8a053d
Author: Valerio Crescia <[email protected]>
AuthorDate: Mon May 25 14:51:22 2026 +0200
[SYNCOPE-1969] Adding missing SAMLRegisteredService configurations (#1395)
---
.../clientapps/ClientAppModalPanelBuilder.java | 115 ++++++++
.../clientapps/ClientAppDirectoryPanel.properties | 24 ++
.../ClientAppDirectoryPanel_fr_CA.properties | 24 ++
.../ClientAppDirectoryPanel_it.properties | 24 ++
.../ClientAppDirectoryPanel_ja.properties | 24 ++
.../ClientAppDirectoryPanel_pt_BR.properties | 24 ++
.../ClientAppDirectoryPanel_ru.properties | 24 ++
.../syncope/common/lib/to/SAML2SPClientAppTO.java | 299 ++++++++++++++++++++
.../lib/types/MetadataCriteriaDirection.java | 26 ++
.../common/lib/types/SigningCredentialType.java | 26 ++
.../api/entity/am/SAML2SPClientApp.java | 99 +++++++
.../jpa/entity/am/JPASAML2SPClientApp.java | 314 +++++++++++++++++++++
.../neo4j/entity/am/Neo4jSAML2SPClientApp.java | 296 +++++++++++++++++++
.../java/data/ClientAppDataBinderImpl.java | 58 ++++
.../starter/mapping/SAML2SPClientAppTOMapper.java | 26 ++
15 files changed, 1403 insertions(+)
diff --git
a/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppModalPanelBuilder.java
b/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppModalPanelBuilder.java
index e54ef6980a..480b9c5d50 100644
---
a/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppModalPanelBuilder.java
+++
b/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppModalPanelBuilder.java
@@ -64,6 +64,7 @@ import org.apache.syncope.common.lib.to.RealmTO;
import org.apache.syncope.common.lib.to.SAML2SPClientAppTO;
import org.apache.syncope.common.lib.types.ClientAppType;
import org.apache.syncope.common.lib.types.LogoutType;
+import org.apache.syncope.common.lib.types.MetadataCriteriaDirection;
import org.apache.syncope.common.lib.types.OIDCApplicationType;
import org.apache.syncope.common.lib.types.OIDCClientAuthenticationMethod;
import org.apache.syncope.common.lib.types.OIDCGrantType;
@@ -73,7 +74,9 @@ import
org.apache.syncope.common.lib.types.OIDCTokenEncryptionAlg;
import org.apache.syncope.common.lib.types.OIDCTokenEncryptionEncoding;
import org.apache.syncope.common.lib.types.OIDCTokenSigningAlg;
import org.apache.syncope.common.lib.types.PolicyType;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
import org.apache.syncope.common.lib.types.SAML2SPNameId;
+import org.apache.syncope.common.lib.types.SigningCredentialType;
import org.apache.syncope.common.lib.types.XmlSecAlgorithm;
import org.apache.syncope.common.rest.api.service.SAML2IdPEntityService;
import org.apache.wicket.Component;
@@ -518,6 +521,46 @@ public class ClientAppModalPanelBuilder<T extends
ClientAppTO> extends AbstractM
"field", "metadataSignatureLocation",
new PropertyModel<>(clientAppTO,
"metadataSignatureLocation"), false));
+ AjaxDropDownChoicePanel<MetadataCriteriaDirection>
metadataCriteriaDirection =
+ new AjaxDropDownChoicePanel<>(
+ "field", "metadataCriteriaDirection",
+ new PropertyModel<>(clientAppTO,
"metadataCriteriaDirection"),
+ false);
+
metadataCriteriaDirection.setChoices(List.of(MetadataCriteriaDirection.values()));
+ fields.add(metadataCriteriaDirection);
+
+ fields.add(new AjaxTextFieldPanel(
+ "field", "metadataCriteriaPattern",
+ new PropertyModel<>(clientAppTO,
"metadataCriteriaPattern"), false));
+
+ fields.add(new AjaxTextFieldPanel(
+ "field", "subjectLocality",
+ new PropertyModel<>(clientAppTO, "subjectLocality"),
false));
+
+ AjaxDropDownChoicePanel<SigningCredentialType>
signingCredentialType =
+ new AjaxDropDownChoicePanel<>(
+ "field", "signingCredentialType",
+ new PropertyModel<>(clientAppTO,
"signingCredentialType"),
+ false);
+
signingCredentialType.setChoices(List.of(SigningCredentialType.values()));
+ fields.add(signingCredentialType);
+
+ AjaxDropDownChoicePanel<SAML2BindingType>
logoutResponseBinding =
+ new AjaxDropDownChoicePanel<>(
+ "field", "logoutResponseBinding",
+ new PropertyModel<>(clientAppTO,
"logoutResponseBinding"),
+ false);
+
logoutResponseBinding.setChoices(List.of(SAML2BindingType.values()));
+ fields.add(logoutResponseBinding);
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "logoutResponseEnabled",
+ new PropertyModel<>(clientAppTO,
"logoutResponseEnabled")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "requireSignedRoot",
+ new PropertyModel<>(clientAppTO,
"requireSignedRoot")));
+
fields.add(new AjaxCheckBoxPanel(
"field", "signAssertions", new
PropertyModel<>(clientAppTO, "signAssertions")));
@@ -530,6 +573,78 @@ public class ClientAppModalPanelBuilder<T extends
ClientAppTO> extends AbstractM
fields.add(new AjaxCheckBoxPanel(
"field", "encryptAssertions", new
PropertyModel<>(clientAppTO, "encryptAssertions")));
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "encryptAttributes",
+ new PropertyModel<>(clientAppTO,
"encryptAttributes")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipGeneratingAssertionNameId",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingAssertionNameId")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field",
"skipGeneratingSubjectConfirmationInResponseTo",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingSubjectConfirmationInResponseTo")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipGeneratingResponseInResponseTo",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingResponseInResponseTo")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field",
"skipGeneratingSubjectConfirmationNotOnOrAfter",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingSubjectConfirmationNotOnOrAfter")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipGeneratingSubjectConfirmationRecipient",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingSubjectConfirmationRecipient")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipGeneratingSubjectConfirmationRecipient",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingSubjectConfirmationRecipient")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field",
"skipGeneratingSubjectConfirmationAddress",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingSubjectConfirmationAddress")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipGeneratingSubjectConfirmationNotBefore",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingSubjectConfirmationNotBefore")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipGeneratingSubjectConfirmationNameId",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingSubjectConfirmationNameId")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipGeneratingNameIdQualifiers",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingNameIdQualifiers")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipGeneratingTransientNameId",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingTransientNameId")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipValidatingAuthnRequest",
+ new PropertyModel<>(clientAppTO,
"skipValidatingAuthnRequest")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field",
"skipGeneratingServiceProviderNameIdQualifier",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingServiceProviderNameIdQualifier")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipGeneratingAuthenticatingAuthority",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingAuthenticatingAuthority")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipGeneratingNameIdQualifier",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingNameIdQualifier")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "skipGeneratingSessionNotOnOrAfter",
+ new PropertyModel<>(clientAppTO,
"skipGeneratingSessionNotOnOrAfter")));
+
+ fields.add(new AjaxCheckBoxPanel(
+ "field", "validateMetadataCertificates",
+ new PropertyModel<>(clientAppTO,
"validateMetadataCertificates")));
+
fields.add(new AjaxTextFieldPanel(
"field", "requiredAuthenticationContextClass",
new PropertyModel<>(clientAppTO,
"requiredAuthenticationContextClass"), false));
diff --git
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.properties
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.properties
index e3ba1847eb..a8f51846ac 100644
---
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.properties
+++
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel.properties
@@ -29,6 +29,30 @@ signAssertions=Sign Assertions
signResponses=Sign Responses
encryptionOptional=Encryption Optional
encryptAssertions=Encrypt Assertions
+metadataCriteriaPattern=Metadata Criteria Pattern
+subjectLocality=Subject Locality
+metadataCriteriaDirection=Metadata Criteria Direction
+signingCredentialType=Signing Credential Type
+logoutResponseBinding=Logout Response Binding
+requireSignedRoot=Require Signed Root
+logoutResponseEnabled=Logout Response Enabled
+encryptAttributes=Encrypt Attributes
+skipGeneratingAssertionNameId=Skip Generating Assertion NameId
+skipGeneratingSubjectConfirmationInResponseTo=Skip Generating
SubjectConfirmation In ResponseTO
+skipGeneratingResponseInResponseTo=Skip Generating Response In ResponseTO
+skipGeneratingSubjectConfirmationNotOnOrAfter=Skip Generating
SubjectConfirmationNotOnOrAfter
+skipGeneratingSubjectConfirmationRecipient=Skip Generating
SubjectConfirmationRecipient
+skipGeneratingSubjectConfirmationAddress=Skip Generating
SubjectConfirmationAddress
+skipGeneratingSubjectConfirmationNotBefore=Skip Generating
SubjectConfirmationNotBefore
+skipGeneratingSubjectConfirmationNameId=Skip Generating
SubjectConfirmationNameId
+skipGeneratingNameIdQualifiers=Skip Generating NameIdQualifiers
+skipGeneratingTransientNameId=Skip Generating TransientNameId
+skipValidatingAuthnRequest=Skip Validating AuthnRequest
+skipGeneratingServiceProviderNameIdQualifier=Skip Generating
ServiceProviderNameIdQualifier
+skipGeneratingAuthenticatingAuthority=Skip Generating AuthenticatingAuthority
+skipGeneratingNameIdQualifier=Skip Generating NameIdQualifier
+skipGeneratingSessionNotOnOrAfter=Skip Generating SessionNotOnOrAfter
+validateMetadataCertificates=Validate Metadata Certificates
requiredNameIdFormat=NameId Format
clientSecret=Client Secret
signIdToken=Sign IdToken
diff --git
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_fr_CA.properties
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_fr_CA.properties
index 2bb0a441b3..2c3e428cdc 100644
---
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_fr_CA.properties
+++
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_fr_CA.properties
@@ -29,6 +29,30 @@ signAssertions=Sign Assertions
signResponses=Sign Responses
encryptionOptional=Encryption Optional
encryptAssertions=Encrypt Assertions
+metadataCriteriaPattern=Metadata Criteria Pattern
+subjectLocality=Subject Locality
+metadataCriteriaDirection=Metadata Criteria Direction
+signingCredentialType=Signing Credential Type
+logoutResponseBinding=Logout Response Binding
+requireSignedRoot=Require Signed Root
+logoutResponseEnabled=Logout Response Enabled
+encryptAttributes=Encrypt Attributes
+skipGeneratingAssertionNameId=Skip Generating Assertion NameId
+skipGeneratingSubjectConfirmationInResponseTo=Skip Generating
SubjectConfirmation In ResponseTO
+skipGeneratingResponseInResponseTo=Skip Generating Response In ResponseTO
+skipGeneratingSubjectConfirmationNotOnOrAfter=Skip Generating
SubjectConfirmationNotOnOrAfter
+skipGeneratingSubjectConfirmationRecipient=Skip Generating
SubjectConfirmationRecipient
+skipGeneratingSubjectConfirmationAddress=Skip Generating
SubjectConfirmationAddress
+skipGeneratingSubjectConfirmationNotBefore=Skip Generating
SubjectConfirmationNotBefore
+skipGeneratingSubjectConfirmationNameId=Skip Generating
SubjectConfirmationNameId
+skipGeneratingNameIdQualifiers=Skip Generating NameIdQualifiers
+skipGeneratingTransientNameId=Skip Generating TransientNameId
+skipValidatingAuthnRequest=Skip Validating AuthnRequest
+skipGeneratingServiceProviderNameIdQualifier=Skip Generating
ServiceProviderNameIdQualifier
+skipGeneratingAuthenticatingAuthority=Skip Generating AuthenticatingAuthority
+skipGeneratingNameIdQualifier=Skip Generating NameIdQualifier
+skipGeneratingSessionNotOnOrAfter=Skip Generating SessionNotOnOrAfter
+validateMetadataCertificates=Validate Metadata Certificates
requiredNameIdFormat=NameId Format
clientSecret=Client Secret
signIdToken=Sign IdToken
diff --git
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_it.properties
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_it.properties
index 2ad1b0f69b..d4123f56c6 100644
---
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_it.properties
+++
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_it.properties
@@ -29,6 +29,30 @@ signAssertions=Firma Assertion
signResponses=Firma Response
encryptionOptional=Cifratura Opzionale
encryptAssertions=Cifratura Assertion
+encryptAttributes=Encrypt Attributes
+metadataCriteriaPattern=Metadata Criteria Pattern
+subjectLocality=Subject Locality
+metadataCriteriaDirection=Metadata Criteria Direction
+signingCredentialType=Signing Credential Type
+logoutResponseBinding=Logout Response Binding
+requireSignedRoot=Require Signed Root
+logoutResponseEnabled=Logout Response Enabled
+skipGeneratingAssertionNameId=Salta Generazione Assertion NameId
+skipGeneratingSubjectConfirmationInResponseTo=Salta Generazione
SubjectConfirmation In ResponseTO
+skipGeneratingResponseInResponseTo=Salta Generazione Response In ResponseTO
+skipGeneratingSubjectConfirmationNotOnOrAfter=Salta Generazione
SubjectConfirmationNotOnOrAfter
+skipGeneratingSubjectConfirmationRecipient=Salta Generazione
SubjectConfirmationRecipient
+skipGeneratingSubjectConfirmationAddress=Salta Generazione
SubjectConfirmationAddress
+skipGeneratingSubjectConfirmationNotBefore=Salta Generazione
SubjectConfirmationNotBefore
+skipGeneratingSubjectConfirmationNameId=Salta Generazione
SubjectConfirmationNameId
+skipGeneratingNameIdQualifiers=Salta Generazione NameIdQualifiers
+skipGeneratingTransientNameId=Salta Generazione TransientNameId
+skipValidatingAuthnRequest=Salta Validazione AuthnRequest
+skipGeneratingServiceProviderNameIdQualifier=Salta Generazione
ServiceProviderNameIdQualifier
+skipGeneratingAuthenticatingAuthority=Salta Generazione AuthenticatingAuthority
+skipGeneratingNameIdQualifier=Salta Generazione NameIdQualifier
+skipGeneratingSessionNotOnOrAfter=Salta Generazione SessionNotOnOrAfter
+validateMetadataCertificates=Valida Certificati Metadata
requiredNameIdFormat=Formato NameId
clientSecret=Client Secret
signIdToken=Firma IdToken
diff --git
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_ja.properties
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_ja.properties
index d0868ef9f2..06aa5f2737 100644
---
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_ja.properties
+++
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_ja.properties
@@ -29,6 +29,30 @@ signAssertions=Sign Assertions
signResponses=Sign Responses
encryptionOptional=Encryption Optional
encryptAssertions=Encrypt Assertions
+metadataCriteriaPattern=Metadata Criteria Pattern
+subjectLocality=Subject Locality
+metadataCriteriaDirection=Metadata Criteria Direction
+signingCredentialType=Signing Credential Type
+logoutResponseBinding=Logout Response Binding
+requireSignedRoot=Require Signed Root
+logoutResponseEnabled=Logout Response Enabled
+encryptAttributes=Encrypt Attributes
+skipGeneratingAssertionNameId=Skip Generating Assertion NameId
+skipGeneratingSubjectConfirmationInResponseTo=Skip Generating
SubjectConfirmation In ResponseTO
+skipGeneratingResponseInResponseTo=Skip Generating Response In ResponseTO
+skipGeneratingSubjectConfirmationNotOnOrAfter=Skip Generating
SubjectConfirmationNotOnOrAfter
+skipGeneratingSubjectConfirmationRecipient=Skip Generating
SubjectConfirmationRecipient
+skipGeneratingSubjectConfirmationAddress=Skip Generating
SubjectConfirmationAddress
+skipGeneratingSubjectConfirmationNotBefore=Skip Generating
SubjectConfirmationNotBefore
+skipGeneratingSubjectConfirmationNameId=Skip Generating
SubjectConfirmationNameId
+skipGeneratingNameIdQualifiers=Skip Generating NameIdQualifiers
+skipGeneratingTransientNameId=Skip Generating TransientNameId
+skipValidatingAuthnRequest=Skip Validating AuthnRequest
+skipGeneratingServiceProviderNameIdQualifier=Skip Generating
ServiceProviderNameIdQualifier
+skipGeneratingAuthenticatingAuthority=Skip Generating AuthenticatingAuthority
+skipGeneratingNameIdQualifier=Skip Generating NameIdQualifier
+skipGeneratingSessionNotOnOrAfter=Skip Generating SessionNotOnOrAfter
+validateMetadataCertificates=Validate Metadata Certificates
requiredNameIdFormat=NameId Format
clientSecret=Client Secret
signIdToken=Sign IdToken
diff --git
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_pt_BR.properties
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_pt_BR.properties
index 1bd4e93e86..ceaecd955c 100644
---
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_pt_BR.properties
+++
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_pt_BR.properties
@@ -29,6 +29,30 @@ signAssertions=Sign Assertions
signResponses=Sign Responses
encryptionOptional=Encryption Optional
encryptAssertions=Encrypt Assertions
+metadataCriteriaPattern=Metadata Criteria Pattern
+subjectLocality=Subject Locality
+metadataCriteriaDirection=Metadata Criteria Direction
+signingCredentialType=Signing Credential Type
+logoutResponseBinding=Logout Response Binding
+requireSignedRoot=Require Signed Root
+logoutResponseEnabled=Logout Response Enabled
+encryptAttributes=Encrypt Attributes
+skipGeneratingAssertionNameId=Skip Generating Assertion NameId
+skipGeneratingSubjectConfirmationInResponseTo=Skip Generating
SubjectConfirmation In ResponseTO
+skipGeneratingResponseInResponseTo=Skip Generating Response In ResponseTO
+skipGeneratingSubjectConfirmationNotOnOrAfter=Skip Generating
SubjectConfirmationNotOnOrAfter
+skipGeneratingSubjectConfirmationRecipient=Skip Generating
SubjectConfirmationRecipient
+skipGeneratingSubjectConfirmationAddress=Skip Generating
SubjectConfirmationAddress
+skipGeneratingSubjectConfirmationNotBefore=Skip Generating
SubjectConfirmationNotBefore
+skipGeneratingSubjectConfirmationNameId=Skip Generating
SubjectConfirmationNameId
+skipGeneratingNameIdQualifiers=Skip Generating NameIdQualifiers
+skipGeneratingTransientNameId=Skip Generating TransientNameId
+skipValidatingAuthnRequest=Skip Validating AuthnRequest
+skipGeneratingServiceProviderNameIdQualifier=Skip Generating
ServiceProviderNameIdQualifier
+skipGeneratingAuthenticatingAuthority=Skip Generating AuthenticatingAuthority
+skipGeneratingNameIdQualifier=Skip Generating NameIdQualifier
+skipGeneratingSessionNotOnOrAfter=Skip Generating SessionNotOnOrAfter
+validateMetadataCertificates=Validate Metadata Certificates
requiredNameIdFormat=NameId Format
clientSecret=Client Secret
signIdToken=Sign IdToken
diff --git
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_ru.properties
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_ru.properties
index bc0ab53d9d..1284cc9602 100644
---
a/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_ru.properties
+++
b/client/am/console/src/main/resources/org/apache/syncope/client/console/clientapps/ClientAppDirectoryPanel_ru.properties
@@ -30,6 +30,30 @@ signAssertions=Sign Assertions
signResponses=Sign Responses
encryptionOptional=Encryption Optional
encryptAssertions=Encrypt Assertions
+metadataCriteriaPattern=Metadata Criteria Pattern
+subjectLocality=Subject Locality
+metadataCriteriaDirection=Metadata Criteria Direction
+signingCredentialType=Signing Credential Type
+logoutResponseBinding=Logout Response Binding
+requireSignedRoot=Require Signed Root
+logoutResponseEnabled=Logout Response Enabled
+encryptAttributes=Encrypt Attributes
+skipGeneratingAssertionNameId=Skip Generating Assertion NameId
+skipGeneratingSubjectConfirmationInResponseTo=Skip Generating
SubjectConfirmation In ResponseTO
+skipGeneratingResponseInResponseTo=Skip Generating Response In ResponseTO
+skipGeneratingSubjectConfirmationNotOnOrAfter=Skip Generating
SubjectConfirmationNotOnOrAfter
+skipGeneratingSubjectConfirmationRecipient=Skip Generating
SubjectConfirmationRecipient
+skipGeneratingSubjectConfirmationAddress=Skip Generating
SubjectConfirmationAddress
+skipGeneratingSubjectConfirmationNotBefore=Skip Generating
SubjectConfirmationNotBefore
+skipGeneratingSubjectConfirmationNameId=Skip Generating
SubjectConfirmationNameId
+skipGeneratingNameIdQualifiers=Skip Generating NameIdQualifiers
+skipGeneratingTransientNameId=Skip Generating TransientNameId
+skipValidatingAuthnRequest=Skip Validating AuthnRequest
+skipGeneratingServiceProviderNameIdQualifier=Skip Generating
ServiceProviderNameIdQualifier
+skipGeneratingAuthenticatingAuthority=Skip Generating AuthenticatingAuthority
+skipGeneratingNameIdQualifier=Skip Generating NameIdQualifier
+skipGeneratingSessionNotOnOrAfter=Skip Generating SessionNotOnOrAfter
+validateMetadataCertificates=Validate Metadata Certificates
requiredNameIdFormat=NameId Format
clientSecret=Client Secret
signIdToken=Sign IdToken
diff --git
a/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/SAML2SPClientAppTO.java
b/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/SAML2SPClientAppTO.java
index 39c6b1d89f..2c3f63c230 100644
---
a/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/SAML2SPClientAppTO.java
+++
b/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/SAML2SPClientAppTO.java
@@ -24,7 +24,10 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.syncope.common.lib.types.MetadataCriteriaDirection;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
import org.apache.syncope.common.lib.types.SAML2SPNameId;
+import org.apache.syncope.common.lib.types.SigningCredentialType;
import org.apache.syncope.common.lib.types.XmlSecAlgorithm;
@Schema(allOf = { ClientAppTO.class })
@@ -40,6 +43,16 @@ public class SAML2SPClientAppTO extends ClientAppTO {
private String metadataSignatureLocation;
+ private String metadataCriteriaPattern;
+
+ private String subjectLocality;
+
+ private MetadataCriteriaDirection metadataCriteriaDirection =
MetadataCriteriaDirection.INCLUDE;
+
+ private SigningCredentialType signingCredentialType;
+
+ private SAML2BindingType logoutResponseBinding;
+
private boolean signAssertions;
private boolean signResponses;
@@ -48,6 +61,44 @@ public class SAML2SPClientAppTO extends ClientAppTO {
private boolean encryptAssertions;
+ private boolean requireSignedRoot = true;
+
+ private boolean logoutResponseEnabled = true;
+
+ private boolean encryptAttributes;
+
+ private boolean skipGeneratingAssertionNameId;
+
+ private boolean skipGeneratingSubjectConfirmationInResponseTo;
+
+ private boolean skipGeneratingResponseInResponseTo;
+
+ private boolean skipGeneratingSubjectConfirmationNotOnOrAfter;
+
+ private boolean skipGeneratingSubjectConfirmationRecipient;
+
+ private boolean skipGeneratingSubjectConfirmationAddress;
+
+ private boolean skipGeneratingSubjectConfirmationNotBefore = true;
+
+ private boolean skipGeneratingSubjectConfirmationNameId = true;
+
+ private boolean skipGeneratingNameIdQualifiers;
+
+ private boolean skipGeneratingTransientNameId;
+
+ private boolean skipValidatingAuthnRequest;
+
+ private boolean skipGeneratingServiceProviderNameIdQualifier;
+
+ private boolean skipGeneratingAuthenticatingAuthority;
+
+ private boolean skipGeneratingNameIdQualifier;
+
+ private boolean skipGeneratingSessionNotOnOrAfter;
+
+ private boolean validateMetadataCertificates;
+
private String requiredAuthenticationContextClass;
private SAML2SPNameId requiredNameIdFormat;
@@ -112,6 +163,46 @@ public class SAML2SPClientAppTO extends ClientAppTO {
this.metadataSignatureLocation = metadataSignatureLocation;
}
+ public String getSubjectLocality() {
+ return subjectLocality;
+ }
+
+ public void setSubjectLocality(final String subjectLocality) {
+ this.subjectLocality = subjectLocality;
+ }
+
+ public MetadataCriteriaDirection getMetadataCriteriaDirection() {
+ return metadataCriteriaDirection;
+ }
+
+ public void setMetadataCriteriaDirection(final MetadataCriteriaDirection
metadataCriteriaDirection) {
+ this.metadataCriteriaDirection = metadataCriteriaDirection;
+ }
+
+ public String getMetadataCriteriaPattern() {
+ return metadataCriteriaPattern;
+ }
+
+ public void setMetadataCriteriaPattern(final String
metadataCriteriaPattern) {
+ this.metadataCriteriaPattern = metadataCriteriaPattern;
+ }
+
+ public SigningCredentialType getSigningCredentialType() {
+ return signingCredentialType;
+ }
+
+ public void setSigningCredentialType(final SigningCredentialType
signingCredentialType) {
+ this.signingCredentialType = signingCredentialType;
+ }
+
+ public SAML2BindingType getLogoutResponseBinding() {
+ return logoutResponseBinding;
+ }
+
+ public void setLogoutResponseBinding(final SAML2BindingType
logoutResponseBinding) {
+ this.logoutResponseBinding = logoutResponseBinding;
+ }
+
public boolean isSignAssertions() {
return signAssertions;
}
@@ -144,6 +235,163 @@ public class SAML2SPClientAppTO extends ClientAppTO {
this.encryptAssertions = encryptAssertions;
}
+ public boolean isRequireSignedRoot() {
+ return requireSignedRoot;
+ }
+
+ public void setRequireSignedRoot(final boolean requireSignedRoot) {
+ this.requireSignedRoot = requireSignedRoot;
+ }
+
+ public boolean isLogoutResponseEnabled() {
+ return logoutResponseEnabled;
+ }
+
+ public void setLogoutResponseEnabled(final boolean logoutResponseEnabled) {
+ this.logoutResponseEnabled = logoutResponseEnabled;
+ }
+
+ public boolean isEncryptAttributes() {
+ return encryptAttributes;
+ }
+
+ public void setEncryptAttributes(final boolean encryptAttributes) {
+ this.encryptAttributes = encryptAttributes;
+ }
+
+ public boolean isSkipGeneratingAssertionNameId() {
+ return skipGeneratingAssertionNameId;
+ }
+
+ public void setSkipGeneratingAssertionNameId(final boolean
skipGeneratingAssertionNameId) {
+ this.skipGeneratingAssertionNameId = skipGeneratingAssertionNameId;
+ }
+
+ public boolean isSkipGeneratingSubjectConfirmationInResponseTo() {
+ return skipGeneratingSubjectConfirmationInResponseTo;
+ }
+
+ public void setSkipGeneratingSubjectConfirmationInResponseTo(
+ final boolean skipGeneratingSubjectConfirmationInResponseTo) {
+ this.skipGeneratingSubjectConfirmationInResponseTo =
skipGeneratingSubjectConfirmationInResponseTo;
+ }
+
+ public boolean isSkipGeneratingResponseInResponseTo() {
+ return skipGeneratingResponseInResponseTo;
+ }
+
+ public void setSkipGeneratingResponseInResponseTo(final boolean
skipGeneratingResponseInResponseTo) {
+ this.skipGeneratingResponseInResponseTo =
skipGeneratingResponseInResponseTo;
+ }
+
+ public boolean isSkipGeneratingSubjectConfirmationNotOnOrAfter() {
+ return skipGeneratingSubjectConfirmationNotOnOrAfter;
+ }
+
+ public void setSkipGeneratingSubjectConfirmationNotOnOrAfter(
+ final boolean skipGeneratingSubjectConfirmationNotOnOrAfter) {
+ this.skipGeneratingSubjectConfirmationNotOnOrAfter =
skipGeneratingSubjectConfirmationNotOnOrAfter;
+ }
+
+ public boolean isSkipGeneratingSubjectConfirmationRecipient() {
+ return skipGeneratingSubjectConfirmationRecipient;
+ }
+
+ public void setSkipGeneratingSubjectConfirmationRecipient(
+ final boolean skipGeneratingSubjectConfirmationRecipient) {
+ this.skipGeneratingSubjectConfirmationRecipient =
skipGeneratingSubjectConfirmationRecipient;
+ }
+
+ public boolean isSkipGeneratingSubjectConfirmationAddress() {
+ return skipGeneratingSubjectConfirmationAddress;
+ }
+
+ public void setSkipGeneratingSubjectConfirmationAddress(final boolean
skipGeneratingSubjectConfirmationAddress) {
+ this.skipGeneratingSubjectConfirmationAddress =
skipGeneratingSubjectConfirmationAddress;
+ }
+
+ public boolean isSkipGeneratingSubjectConfirmationNotBefore() {
+ return skipGeneratingSubjectConfirmationNotBefore;
+ }
+
+ public void setSkipGeneratingSubjectConfirmationNotBefore(
+ final boolean skipGeneratingSubjectConfirmationNotBefore) {
+ this.skipGeneratingSubjectConfirmationNotBefore =
skipGeneratingSubjectConfirmationNotBefore;
+ }
+
+ public boolean isSkipGeneratingSubjectConfirmationNameId() {
+ return skipGeneratingSubjectConfirmationNameId;
+ }
+
+ public void setSkipGeneratingSubjectConfirmationNameId(final boolean
skipGeneratingSubjectConfirmationNameId) {
+ this.skipGeneratingSubjectConfirmationNameId =
skipGeneratingSubjectConfirmationNameId;
+ }
+
+ public boolean isSkipGeneratingNameIdQualifiers() {
+ return skipGeneratingNameIdQualifiers;
+ }
+
+ public void setSkipGeneratingNameIdQualifiers(final boolean
skipGeneratingNameIdQualifiers) {
+ this.skipGeneratingNameIdQualifiers = skipGeneratingNameIdQualifiers;
+ }
+
+ public boolean isSkipGeneratingTransientNameId() {
+ return skipGeneratingTransientNameId;
+ }
+
+ public void setSkipGeneratingTransientNameId(final boolean
skipGeneratingTransientNameId) {
+ this.skipGeneratingTransientNameId = skipGeneratingTransientNameId;
+ }
+
+ public boolean isSkipValidatingAuthnRequest() {
+ return skipValidatingAuthnRequest;
+ }
+
+ public void setSkipValidatingAuthnRequest(final boolean
skipValidatingAuthnRequest) {
+ this.skipValidatingAuthnRequest = skipValidatingAuthnRequest;
+ }
+
+ public boolean isSkipGeneratingServiceProviderNameIdQualifier() {
+ return skipGeneratingServiceProviderNameIdQualifier;
+ }
+
+ public void setSkipGeneratingServiceProviderNameIdQualifier(
+ final boolean skipGeneratingServiceProviderNameIdQualifier) {
+ this.skipGeneratingServiceProviderNameIdQualifier =
skipGeneratingServiceProviderNameIdQualifier;
+ }
+
+ public boolean isSkipGeneratingAuthenticatingAuthority() {
+ return skipGeneratingAuthenticatingAuthority;
+ }
+
+ public void setSkipGeneratingAuthenticatingAuthority(final boolean
skipGeneratingAuthenticatingAuthority) {
+ this.skipGeneratingAuthenticatingAuthority =
skipGeneratingAuthenticatingAuthority;
+ }
+
+ public boolean isSkipGeneratingNameIdQualifier() {
+ return skipGeneratingNameIdQualifier;
+ }
+
+ public void setSkipGeneratingNameIdQualifier(final boolean
skipGeneratingNameIdQualifier) {
+ this.skipGeneratingNameIdQualifier = skipGeneratingNameIdQualifier;
+ }
+
+ public boolean isSkipGeneratingSessionNotOnOrAfter() {
+ return skipGeneratingSessionNotOnOrAfter;
+ }
+
+ public void setSkipGeneratingSessionNotOnOrAfter(final boolean
skipGeneratingSessionNotOnOrAfter) {
+ this.skipGeneratingSessionNotOnOrAfter =
skipGeneratingSessionNotOnOrAfter;
+ }
+
+ public boolean isValidateMetadataCertificates() {
+ return validateMetadataCertificates;
+ }
+
+ public void setValidateMetadataCertificates(final boolean
validateMetadataCertificates) {
+ this.validateMetadataCertificates = validateMetadataCertificates;
+ }
+
public String getRequiredAuthenticationContextClass() {
return requiredAuthenticationContextClass;
}
@@ -231,7 +479,34 @@ public class SAML2SPClientAppTO extends ClientAppTO {
.append(this.metadataSignatureLocation,
rhs.metadataSignatureLocation)
.append(this.signAssertions, rhs.signAssertions)
.append(this.signResponses, rhs.signResponses)
+ .append(this.metadataCriteriaPattern,
rhs.metadataCriteriaPattern)
+ .append(this.subjectLocality, rhs.subjectLocality)
+ .append(this.metadataCriteriaDirection,
rhs.metadataCriteriaDirection)
+ .append(this.logoutResponseBinding, rhs.logoutResponseBinding)
+ .append(this.requireSignedRoot, rhs.requireSignedRoot)
+ .append(this.logoutResponseEnabled, rhs.logoutResponseEnabled)
.append(this.encryptionOptional, rhs.encryptionOptional)
+ .append(this.signingCredentialType, rhs.signingCredentialType)
+ .append(this.encryptAttributes, rhs.encryptAttributes)
+ .append(this.skipGeneratingAssertionNameId,
rhs.skipGeneratingAssertionNameId)
+ .append(this.skipGeneratingSubjectConfirmationInResponseTo,
+ rhs.skipGeneratingSubjectConfirmationInResponseTo)
+ .append(this.skipGeneratingResponseInResponseTo,
rhs.skipGeneratingResponseInResponseTo)
+ .append(this.skipGeneratingSubjectConfirmationNotOnOrAfter,
+ rhs.skipGeneratingSubjectConfirmationNotOnOrAfter)
+ .append(this.skipGeneratingSubjectConfirmationRecipient,
rhs.skipGeneratingSubjectConfirmationRecipient)
+ .append(this.skipGeneratingSubjectConfirmationAddress,
rhs.skipGeneratingSubjectConfirmationAddress)
+ .append(this.skipGeneratingSubjectConfirmationNotBefore,
rhs.skipGeneratingSubjectConfirmationNotBefore)
+ .append(this.skipGeneratingSubjectConfirmationNameId,
rhs.skipGeneratingSubjectConfirmationNameId)
+ .append(this.skipGeneratingNameIdQualifiers,
rhs.skipGeneratingNameIdQualifiers)
+ .append(this.skipGeneratingTransientNameId,
rhs.skipGeneratingTransientNameId)
+ .append(this.skipValidatingAuthnRequest,
rhs.skipValidatingAuthnRequest)
+ .append(this.skipGeneratingServiceProviderNameIdQualifier,
+ rhs.skipGeneratingServiceProviderNameIdQualifier)
+ .append(this.skipGeneratingAuthenticatingAuthority,
rhs.skipGeneratingAuthenticatingAuthority)
+ .append(this.skipGeneratingNameIdQualifier,
rhs.skipGeneratingNameIdQualifier)
+ .append(this.skipGeneratingSessionNotOnOrAfter,
rhs.skipGeneratingSessionNotOnOrAfter)
+ .append(this.validateMetadataCertificates,
rhs.validateMetadataCertificates)
.append(this.encryptAssertions, rhs.encryptAssertions)
.append(this.requiredAuthenticationContextClass,
rhs.requiredAuthenticationContextClass)
.append(this.requiredNameIdFormat, rhs.requiredNameIdFormat)
@@ -258,6 +533,30 @@ public class SAML2SPClientAppTO extends ClientAppTO {
.append(signAssertions)
.append(signResponses)
.append(encryptionOptional)
+ .append(metadataCriteriaPattern)
+ .append(subjectLocality)
+ .append(metadataCriteriaDirection)
+ .append(logoutResponseBinding)
+ .append(requireSignedRoot)
+ .append(logoutResponseEnabled)
+ .append(signingCredentialType)
+ .append(encryptAttributes)
+ .append(skipGeneratingAssertionNameId)
+ .append(skipGeneratingSubjectConfirmationInResponseTo)
+ .append(skipGeneratingResponseInResponseTo)
+ .append(skipGeneratingSubjectConfirmationNotOnOrAfter)
+ .append(skipGeneratingSubjectConfirmationRecipient)
+ .append(skipGeneratingSubjectConfirmationAddress)
+ .append(skipGeneratingSubjectConfirmationNotBefore)
+ .append(skipGeneratingSubjectConfirmationNameId)
+ .append(skipGeneratingNameIdQualifiers)
+ .append(skipGeneratingTransientNameId)
+ .append(skipValidatingAuthnRequest)
+ .append(skipGeneratingServiceProviderNameIdQualifier)
+ .append(skipGeneratingAuthenticatingAuthority)
+ .append(skipGeneratingNameIdQualifier)
+ .append(skipGeneratingSessionNotOnOrAfter)
+ .append(validateMetadataCertificates)
.append(encryptAssertions)
.append(requiredAuthenticationContextClass)
.append(requiredNameIdFormat)
diff --git
a/common/am/lib/src/main/java/org/apache/syncope/common/lib/types/MetadataCriteriaDirection.java
b/common/am/lib/src/main/java/org/apache/syncope/common/lib/types/MetadataCriteriaDirection.java
new file mode 100644
index 0000000000..2d46277ab8
--- /dev/null
+++
b/common/am/lib/src/main/java/org/apache/syncope/common/lib/types/MetadataCriteriaDirection.java
@@ -0,0 +1,26 @@
+/*
+ * 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.common.lib.types;
+
+public enum MetadataCriteriaDirection {
+
+ INCLUDE,
+
+ EXCLUDE
+}
diff --git
a/common/am/lib/src/main/java/org/apache/syncope/common/lib/types/SigningCredentialType.java
b/common/am/lib/src/main/java/org/apache/syncope/common/lib/types/SigningCredentialType.java
new file mode 100644
index 0000000000..9dd397a240
--- /dev/null
+++
b/common/am/lib/src/main/java/org/apache/syncope/common/lib/types/SigningCredentialType.java
@@ -0,0 +1,26 @@
+/*
+ * 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.common.lib.types;
+
+public enum SigningCredentialType {
+
+ X509,
+
+ BASIC
+}
diff --git
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/am/SAML2SPClientApp.java
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/am/SAML2SPClientApp.java
index caf8d8a143..1cde400d76 100644
---
a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/am/SAML2SPClientApp.java
+++
b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/am/SAML2SPClientApp.java
@@ -21,7 +21,10 @@ package org.apache.syncope.core.persistence.api.entity.am;
import java.util.List;
import java.util.Optional;
import java.util.Set;
+import org.apache.syncope.common.lib.types.MetadataCriteriaDirection;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
import org.apache.syncope.common.lib.types.SAML2SPNameId;
+import org.apache.syncope.common.lib.types.SigningCredentialType;
import org.apache.syncope.common.lib.types.XmlSecAlgorithm;
public interface SAML2SPClientApp extends ClientApp {
@@ -58,6 +61,102 @@ public interface SAML2SPClientApp extends ClientApp {
boolean isEncryptAssertions();
+ void setMetadataCriteriaPattern(String metadataCriteriaPattern);
+
+ String getMetadataCriteriaPattern();
+
+ void setSubjectLocality(String subjectLocality);
+
+ String getSubjectLocality();
+
+ void setMetadataCriteriaDirection(MetadataCriteriaDirection
metadataCriteriaDirection);
+
+ MetadataCriteriaDirection getMetadataCriteriaDirection();
+
+ void setSigningCredentialType(SigningCredentialType signingCredentialType);
+
+ SigningCredentialType getSigningCredentialType();
+
+ void setLogoutResponseBinding(SAML2BindingType logoutResponseBinding);
+
+ SAML2BindingType getLogoutResponseBinding();
+
+ void setRequireSignedRoot(boolean requireSignedRoot);
+
+ boolean isRequireSignedRoot();
+
+ void setLogoutResponseEnabled(boolean logoutResponseEnabled);
+
+ boolean isLogoutResponseEnabled();
+
+ boolean isEncryptAttributes();
+
+ void setEncryptAttributes(boolean encryptAttributes);
+
+ boolean isSkipGeneratingAssertionNameId();
+
+ void setSkipGeneratingAssertionNameId(boolean
skipGeneratingAssertionNameId);
+
+ boolean isSkipGeneratingSubjectConfirmationInResponseTo();
+
+ void setSkipGeneratingSubjectConfirmationInResponseTo(boolean
skipGeneratingSubjectConfirmationInResponseTo);
+
+ boolean isSkipGeneratingResponseInResponseTo();
+
+ void setSkipGeneratingResponseInResponseTo(boolean
skipGeneratingResponseInResponseTo);
+
+ boolean isSkipGeneratingSubjectConfirmationNotOnOrAfter();
+
+ void setSkipGeneratingSubjectConfirmationNotOnOrAfter(boolean
skipGeneratingSubjectConfirmationNotOnOrAfter);
+
+ boolean isSkipGeneratingSubjectConfirmationRecipient();
+
+ void setSkipGeneratingSubjectConfirmationRecipient(boolean
skipGeneratingSubjectConfirmationRecipient);
+
+ boolean isSkipGeneratingSubjectConfirmationAddress();
+
+ void setSkipGeneratingSubjectConfirmationAddress(boolean
skipGeneratingSubjectConfirmationAddress);
+
+ boolean isSkipGeneratingSubjectConfirmationNotBefore();
+
+ void setSkipGeneratingSubjectConfirmationNotBefore(boolean
skipGeneratingSubjectConfirmationNotBefore);
+
+ boolean isSkipGeneratingSubjectConfirmationNameId();
+
+ void setSkipGeneratingSubjectConfirmationNameId(boolean
skipGeneratingSubjectConfirmationNameId);
+
+ boolean isSkipGeneratingNameIdQualifiers();
+
+ void setSkipGeneratingNameIdQualifiers(boolean
skipGeneratingNameIdQualifiers);
+
+ boolean isSkipGeneratingTransientNameId();
+
+ void setSkipGeneratingTransientNameId(boolean
skipGeneratingTransientNameId);
+
+ boolean isSkipValidatingAuthnRequest();
+
+ void setSkipValidatingAuthnRequest(boolean skipValidatingAuthnRequest);
+
+ boolean isSkipGeneratingServiceProviderNameIdQualifier();
+
+ void setSkipGeneratingServiceProviderNameIdQualifier(boolean
skipGeneratingServiceProviderNameIdQualifier);
+
+ boolean isSkipGeneratingAuthenticatingAuthority();
+
+ void setSkipGeneratingAuthenticatingAuthority(boolean
skipGeneratingAuthenticatingAuthority);
+
+ boolean isSkipGeneratingNameIdQualifier();
+
+ void setSkipGeneratingNameIdQualifier(boolean
skipGeneratingNameIdQualifier);
+
+ boolean isSkipGeneratingSessionNotOnOrAfter();
+
+ void setSkipGeneratingSessionNotOnOrAfter(boolean
skipGeneratingSessionNotOnOrAfter);
+
+ boolean isValidateMetadataCertificates();
+
+ void setValidateMetadataCertificates(boolean validateMetadataCertificates);
+
void setRequiredAuthenticationContextClass(String location);
String getRequiredAuthenticationContextClass();
diff --git
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPASAML2SPClientApp.java
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPASAML2SPClientApp.java
index af6c17c937..b1c3391799 100644
---
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPASAML2SPClientApp.java
+++
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/am/JPASAML2SPClientApp.java
@@ -21,6 +21,8 @@ package org.apache.syncope.core.persistence.jpa.entity.am;
import com.fasterxml.jackson.core.type.TypeReference;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
import jakarta.persistence.Lob;
import jakarta.persistence.PostLoad;
import jakarta.persistence.PostPersist;
@@ -34,7 +36,10 @@ import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
+import org.apache.syncope.common.lib.types.MetadataCriteriaDirection;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
import org.apache.syncope.common.lib.types.SAML2SPNameId;
+import org.apache.syncope.common.lib.types.SigningCredentialType;
import org.apache.syncope.common.lib.types.XmlSecAlgorithm;
import org.apache.syncope.core.persistence.api.entity.am.SAML2SPClientApp;
import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
@@ -72,6 +77,54 @@ public class JPASAML2SPClientApp extends AbstractClientApp
implements SAML2SPCli
private boolean encryptAssertions;
+ private boolean requireSignedRoot;
+
+ private boolean encryptAttributes;
+
+ private boolean skipGeneratingAssertionNameId;
+
+ private boolean logoutResponseEnable;
+
+ @Column(name = "skipGeneSubjectConfInRespTo")
+ private boolean skipGeneratingSubjectConfirmationInResponseTo;
+
+ @Column(name = "skipGeneRespInResponseTo")
+ private boolean skipGeneratingResponseInResponseTo;
+
+ @Column(name = "skipGeneSubConfNotOnOrAfter")
+ private boolean skipGeneratingSubjectConfirmationNotOnOrAfter;
+
+ @Column(name = "skipGeneSubConfRecipient")
+ private boolean skipGeneratingSubjectConfirmationRecipient;
+
+ @Column(name = "skipGeneSubConfAddress")
+ private boolean skipGeneratingSubjectConfirmationAddress;
+
+ @Column(name = "skipGeneSubConfNotBefore")
+ private boolean skipGeneratingSubjectConfirmationNotBefore;
+
+ @Column(name = "skipGeneSubConfNameId")
+ private boolean skipGeneratingSubjectConfirmationNameId;
+
+ private boolean skipGeneratingNameIdQualifiers;
+
+ private boolean skipGeneratingTransientNameId;
+
+ private boolean skipValidatingAuthnRequest;
+
+ @Column(name = "skipGeneSerProvNameIdQualifier")
+ private boolean skipGeneratingServiceProviderNameIdQualifier;
+
+ @Column(name = "skipGeneAuthAuthority")
+ private boolean skipGeneratingAuthenticatingAuthority;
+
+ private boolean skipGeneratingNameIdQualifier;
+
+ @Column(name = "skipGeneSessionNotOnOrAfter")
+ private boolean skipGeneratingSessionNotOnOrAfter;
+
+ private boolean validateMetadataCertificates;
+
@Column(name = "reqAuthnContextClass")
private String requiredAuthenticationContextClass;
@@ -132,6 +185,22 @@ public class JPASAML2SPClientApp extends AbstractClientApp
implements SAML2SPCli
@Transient
private List<XmlSecAlgorithm> encryptionBlackListedAlgorithmsList = new
ArrayList<>();
+ private String metadataCriteriaPattern;
+
+ private String subjectLocality;
+
+ @Column(nullable = true)
+ @Enumerated(EnumType.STRING)
+ private MetadataCriteriaDirection metadataCriteriaDirection;
+
+ @Column(nullable = true)
+ @Enumerated(EnumType.STRING)
+ private SigningCredentialType signingCredentialType;
+
+ @Column(nullable = true)
+ @Enumerated(EnumType.STRING)
+ private SAML2BindingType logoutResponseBinding;
+
@Override
public String getEntityId() {
return entityId;
@@ -207,11 +276,256 @@ public class JPASAML2SPClientApp extends
AbstractClientApp implements SAML2SPCli
return encryptAssertions;
}
+ @Override
+ public void setMetadataCriteriaPattern(final String
metadataCriteriaPattern) {
+ this.metadataCriteriaPattern = metadataCriteriaPattern;
+ }
+
+ @Override
+ public String getMetadataCriteriaPattern() {
+ return metadataCriteriaPattern;
+ }
+
+ @Override
+ public void setSubjectLocality(final String subjectLocality) {
+ this.subjectLocality = subjectLocality;
+ }
+
+ @Override
+ public String getSubjectLocality() {
+ return subjectLocality;
+ }
+
+ @Override
+ public void setMetadataCriteriaDirection(final MetadataCriteriaDirection
metadataCriteriaDirection) {
+ this.metadataCriteriaDirection = metadataCriteriaDirection;
+ }
+
+ @Override
+ public MetadataCriteriaDirection getMetadataCriteriaDirection() {
+ return metadataCriteriaDirection;
+ }
+
+ @Override
+ public void setSigningCredentialType(final SigningCredentialType
signingCredentialType) {
+ this.signingCredentialType = signingCredentialType;
+ }
+
+ @Override
+ public SigningCredentialType getSigningCredentialType() {
+ return signingCredentialType;
+ }
+
+ @Override
+ public void setLogoutResponseBinding(final SAML2BindingType
logoutResponseBinding) {
+ this.logoutResponseBinding = logoutResponseBinding;
+ }
+
+ @Override
+ public SAML2BindingType getLogoutResponseBinding() {
+ return logoutResponseBinding;
+ }
+
@Override
public void setEncryptAssertions(final boolean encryptAssertions) {
this.encryptAssertions = encryptAssertions;
}
+ @Override
+ public void setRequireSignedRoot(final boolean requireSignedRoot) {
+ this.requireSignedRoot = requireSignedRoot;
+ }
+
+ @Override
+ public boolean isRequireSignedRoot() {
+ return requireSignedRoot;
+ }
+
+ @Override
+ public void setLogoutResponseEnabled(final boolean logoutResponseEnabled) {
+ this.logoutResponseEnable = logoutResponseEnabled;
+ }
+
+ @Override
+ public boolean isLogoutResponseEnabled() {
+ return logoutResponseEnable;
+ }
+
+ @Override
+ public boolean isEncryptAttributes() {
+ return encryptAttributes;
+ }
+
+ @Override
+ public void setEncryptAttributes(final boolean encryptAttributes) {
+ this.encryptAttributes = encryptAttributes;
+ }
+
+ @Override
+ public boolean isSkipGeneratingAssertionNameId() {
+ return skipGeneratingAssertionNameId;
+ }
+
+ @Override
+ public void setSkipGeneratingAssertionNameId(final boolean
skipGeneratingAssertionNameId) {
+ this.skipGeneratingAssertionNameId = skipGeneratingAssertionNameId;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationInResponseTo() {
+ return skipGeneratingSubjectConfirmationInResponseTo;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationInResponseTo(
+ final boolean skipGeneratingSubjectConfirmationInResponseTo) {
+ this.skipGeneratingSubjectConfirmationInResponseTo =
skipGeneratingSubjectConfirmationInResponseTo;
+ }
+
+ @Override
+ public boolean isSkipGeneratingResponseInResponseTo() {
+ return skipGeneratingResponseInResponseTo;
+ }
+
+ @Override
+ public void setSkipGeneratingResponseInResponseTo(final boolean
skipGeneratingResponseInResponseTo) {
+ this.skipGeneratingResponseInResponseTo =
skipGeneratingResponseInResponseTo;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationNotOnOrAfter() {
+ return skipGeneratingSubjectConfirmationNotOnOrAfter;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationNotOnOrAfter(
+ final boolean skipGeneratingSubjectConfirmationNotOnOrAfter) {
+ this.skipGeneratingSubjectConfirmationNotOnOrAfter =
skipGeneratingSubjectConfirmationNotOnOrAfter;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationRecipient() {
+ return skipGeneratingSubjectConfirmationRecipient;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationRecipient(
+ final boolean skipGeneratingSubjectConfirmationRecipient) {
+ this.skipGeneratingSubjectConfirmationRecipient =
skipGeneratingSubjectConfirmationRecipient;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationAddress() {
+ return skipGeneratingSubjectConfirmationAddress;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationAddress(final boolean
skipGeneratingSubjectConfirmationAddress) {
+ this.skipGeneratingSubjectConfirmationAddress =
skipGeneratingSubjectConfirmationAddress;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationNotBefore() {
+ return skipGeneratingSubjectConfirmationNotBefore;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationNotBefore(
+ final boolean skipGeneratingSubjectConfirmationNotBefore) {
+ this.skipGeneratingSubjectConfirmationNotBefore =
skipGeneratingSubjectConfirmationNotBefore;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationNameId() {
+ return skipGeneratingSubjectConfirmationNameId;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationNameId(final boolean
skipGeneratingSubjectConfirmationNameId) {
+ this.skipGeneratingSubjectConfirmationNameId =
skipGeneratingSubjectConfirmationNameId;
+ }
+
+ @Override
+ public boolean isSkipGeneratingNameIdQualifiers() {
+ return skipGeneratingNameIdQualifiers;
+ }
+
+ @Override
+ public void setSkipGeneratingNameIdQualifiers(final boolean
skipGeneratingNameIdQualifiers) {
+ this.skipGeneratingNameIdQualifiers = skipGeneratingNameIdQualifiers;
+ }
+
+ @Override
+ public boolean isSkipGeneratingTransientNameId() {
+ return skipGeneratingTransientNameId;
+ }
+
+ @Override
+ public void setSkipGeneratingTransientNameId(final boolean
skipGeneratingTransientNameId) {
+ this.skipGeneratingTransientNameId = skipGeneratingTransientNameId;
+ }
+
+ @Override
+ public boolean isSkipValidatingAuthnRequest() {
+ return skipValidatingAuthnRequest;
+ }
+
+ @Override
+ public void setSkipValidatingAuthnRequest(final boolean
skipValidatingAuthnRequest) {
+ this.skipValidatingAuthnRequest = skipValidatingAuthnRequest;
+ }
+
+ @Override
+ public boolean isSkipGeneratingServiceProviderNameIdQualifier() {
+ return skipGeneratingServiceProviderNameIdQualifier;
+ }
+
+ @Override
+ public void setSkipGeneratingServiceProviderNameIdQualifier(
+ final boolean skipGeneratingServiceProviderNameIdQualifier) {
+ this.skipGeneratingServiceProviderNameIdQualifier =
skipGeneratingServiceProviderNameIdQualifier;
+ }
+
+ @Override
+ public boolean isSkipGeneratingAuthenticatingAuthority() {
+ return skipGeneratingAuthenticatingAuthority;
+ }
+
+ @Override
+ public void setSkipGeneratingAuthenticatingAuthority(final boolean
skipGeneratingAuthenticatingAuthority) {
+ this.skipGeneratingAuthenticatingAuthority =
skipGeneratingAuthenticatingAuthority;
+ }
+
+ @Override
+ public boolean isSkipGeneratingNameIdQualifier() {
+ return skipGeneratingNameIdQualifier;
+ }
+
+ @Override
+ public void setSkipGeneratingNameIdQualifier(final boolean
skipGeneratingNameIdQualifier) {
+ this.skipGeneratingNameIdQualifier = skipGeneratingNameIdQualifier;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSessionNotOnOrAfter() {
+ return skipGeneratingSessionNotOnOrAfter;
+ }
+
+ @Override
+ public void setSkipGeneratingSessionNotOnOrAfter(final boolean
skipGeneratingSessionNotOnOrAfter) {
+ this.skipGeneratingSessionNotOnOrAfter =
skipGeneratingSessionNotOnOrAfter;
+ }
+
+ @Override
+ public boolean isValidateMetadataCertificates() {
+ return validateMetadataCertificates;
+ }
+
+ @Override
+ public void setValidateMetadataCertificates(final boolean
validateMetadataCertificates) {
+ this.validateMetadataCertificates = validateMetadataCertificates;
+ }
+
@Override
public String getRequiredAuthenticationContextClass() {
return requiredAuthenticationContextClass;
diff --git
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/entity/am/Neo4jSAML2SPClientApp.java
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/entity/am/Neo4jSAML2SPClientApp.java
index 3c6902bfd7..9beffad741 100644
---
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/entity/am/Neo4jSAML2SPClientApp.java
+++
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/entity/am/Neo4jSAML2SPClientApp.java
@@ -25,7 +25,10 @@ import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
+import org.apache.syncope.common.lib.types.MetadataCriteriaDirection;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
import org.apache.syncope.common.lib.types.SAML2SPNameId;
+import org.apache.syncope.common.lib.types.SigningCredentialType;
import org.apache.syncope.common.lib.types.XmlSecAlgorithm;
import org.apache.syncope.core.persistence.api.entity.am.SAML2SPClientApp;
import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
@@ -64,8 +67,50 @@ public class Neo4jSAML2SPClientApp extends AbstractClientApp
implements SAML2SPC
private boolean encryptAssertions;
+ private boolean encryptAttributes;
+
+ private boolean skipGeneratingAssertionNameId;
+
+ private boolean skipGeneratingSubjectConfirmationInResponseTo;
+
+ private boolean skipGeneratingResponseInResponseTo;
+
+ private boolean skipGeneratingSubjectConfirmationNotOnOrAfter;
+
+ private boolean skipGeneratingSubjectConfirmationRecipient;
+
+ private boolean skipGeneratingSubjectConfirmationAddress;
+
+ private boolean skipGeneratingSubjectConfirmationNotBefore;
+
+ private boolean skipGeneratingSubjectConfirmationNameId;
+
+ private boolean skipGeneratingNameIdQualifiers;
+
+ private boolean skipGeneratingTransientNameId;
+
+ private boolean skipValidatingAuthnRequest;
+
+ private boolean skipGeneratingServiceProviderNameIdQualifier;
+
+ private boolean skipGeneratingAuthenticatingAuthority;
+
+ private boolean skipGeneratingNameIdQualifier;
+
+ private boolean skipGeneratingSessionNotOnOrAfter;
+
+ private boolean validateMetadataCertificates;
+
+ private boolean requireSignedRoot;
+
+ private boolean logoutResponseEnabled;
+
private String requiredAuthenticationContextClass;
+ private String metadataCriteriaPattern;
+
+ private String subjectLocality;
+
private SAML2SPNameId requiredNameIdFormat;
private Integer skewAllowance;
@@ -74,6 +119,12 @@ public class Neo4jSAML2SPClientApp extends
AbstractClientApp implements SAML2SPC
private String assertionAudiences;
+ private MetadataCriteriaDirection metadataCriteriaDirection;
+
+ private SigningCredentialType signingCredentialType;
+
+ private SAML2BindingType logoutResponseBinding;
+
@Transient
private Set<String> assertionAudiencesSet = new HashSet<>();
@@ -184,11 +235,256 @@ public class Neo4jSAML2SPClientApp extends
AbstractClientApp implements SAML2SPC
return encryptAssertions;
}
+ @Override
+ public void setMetadataCriteriaPattern(final String
metadataCriteriaPattern) {
+ this.metadataCriteriaPattern = metadataCriteriaPattern;
+ }
+
+ @Override
+ public String getMetadataCriteriaPattern() {
+ return metadataCriteriaPattern;
+ }
+
+ @Override
+ public void setSubjectLocality(final String subjectLocality) {
+ this.subjectLocality = subjectLocality;
+ }
+
+ @Override
+ public String getSubjectLocality() {
+ return subjectLocality;
+ }
+
+ @Override
+ public void setMetadataCriteriaDirection(final MetadataCriteriaDirection
metadataCriteriaDirection) {
+ this.metadataCriteriaDirection = metadataCriteriaDirection;
+ }
+
+ @Override
+ public MetadataCriteriaDirection getMetadataCriteriaDirection() {
+ return metadataCriteriaDirection;
+ }
+
+ @Override
+ public void setSigningCredentialType(final SigningCredentialType
signingCredentialType) {
+ this.signingCredentialType = signingCredentialType;
+ }
+
+ @Override
+ public SigningCredentialType getSigningCredentialType() {
+ return signingCredentialType;
+ }
+
+ @Override
+ public void setLogoutResponseBinding(final SAML2BindingType
logoutResponseBinding) {
+ this.logoutResponseBinding = logoutResponseBinding;
+ }
+
+ @Override
+ public SAML2BindingType getLogoutResponseBinding() {
+ return logoutResponseBinding;
+ }
+
+ @Override
+ public void setRequireSignedRoot(final boolean requireSignedRoot) {
+ this.requireSignedRoot = requireSignedRoot;
+ }
+
+ @Override
+ public boolean isRequireSignedRoot() {
+ return requireSignedRoot;
+ }
+
+ @Override
+ public void setLogoutResponseEnabled(final boolean logoutResponseEnabled) {
+ this.logoutResponseEnabled = logoutResponseEnabled;
+ }
+
+ @Override
+ public boolean isLogoutResponseEnabled() {
+ return logoutResponseEnabled;
+ }
+
@Override
public void setEncryptAssertions(final boolean encryptAssertions) {
this.encryptAssertions = encryptAssertions;
}
+ @Override
+ public boolean isEncryptAttributes() {
+ return encryptAttributes;
+ }
+
+ @Override
+ public void setEncryptAttributes(final boolean encryptAttributes) {
+ this.encryptAttributes = encryptAttributes;
+ }
+
+ @Override
+ public boolean isSkipGeneratingAssertionNameId() {
+ return skipGeneratingAssertionNameId;
+ }
+
+ @Override
+ public void setSkipGeneratingAssertionNameId(final boolean
skipGeneratingAssertionNameId) {
+ this.skipGeneratingAssertionNameId = skipGeneratingAssertionNameId;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationInResponseTo() {
+ return skipGeneratingSubjectConfirmationInResponseTo;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationInResponseTo(
+ final boolean skipGeneratingSubjectConfirmationInResponseTo) {
+ this.skipGeneratingSubjectConfirmationInResponseTo =
skipGeneratingSubjectConfirmationInResponseTo;
+ }
+
+ @Override
+ public boolean isSkipGeneratingResponseInResponseTo() {
+ return skipGeneratingResponseInResponseTo;
+ }
+
+ @Override
+ public void setSkipGeneratingResponseInResponseTo(final boolean
skipGeneratingResponseInResponseTo) {
+ this.skipGeneratingResponseInResponseTo =
skipGeneratingResponseInResponseTo;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationNotOnOrAfter() {
+ return skipGeneratingSubjectConfirmationNotOnOrAfter;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationNotOnOrAfter(
+ final boolean skipGeneratingSubjectConfirmationNotOnOrAfter) {
+ this.skipGeneratingSubjectConfirmationNotOnOrAfter =
skipGeneratingSubjectConfirmationNotOnOrAfter;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationRecipient() {
+ return skipGeneratingSubjectConfirmationRecipient;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationRecipient(
+ final boolean skipGeneratingSubjectConfirmationRecipient) {
+ this.skipGeneratingSubjectConfirmationRecipient =
skipGeneratingSubjectConfirmationRecipient;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationAddress() {
+ return skipGeneratingSubjectConfirmationAddress;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationAddress(final boolean
skipGeneratingSubjectConfirmationAddress) {
+ this.skipGeneratingSubjectConfirmationAddress =
skipGeneratingSubjectConfirmationAddress;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationNotBefore() {
+ return skipGeneratingSubjectConfirmationNotBefore;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationNotBefore(
+ final boolean skipGeneratingSubjectConfirmationNotBefore) {
+ this.skipGeneratingSubjectConfirmationNotBefore =
skipGeneratingSubjectConfirmationNotBefore;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSubjectConfirmationNameId() {
+ return skipGeneratingSubjectConfirmationNameId;
+ }
+
+ @Override
+ public void setSkipGeneratingSubjectConfirmationNameId(final boolean
skipGeneratingSubjectConfirmationNameId) {
+ this.skipGeneratingSubjectConfirmationNameId =
skipGeneratingSubjectConfirmationNameId;
+ }
+
+ @Override
+ public boolean isSkipGeneratingNameIdQualifiers() {
+ return skipGeneratingNameIdQualifiers;
+ }
+
+ @Override
+ public void setSkipGeneratingNameIdQualifiers(final boolean
skipGeneratingNameIdQualifiers) {
+ this.skipGeneratingNameIdQualifiers = skipGeneratingNameIdQualifiers;
+ }
+
+ @Override
+ public boolean isSkipGeneratingTransientNameId() {
+ return skipGeneratingTransientNameId;
+ }
+
+ @Override
+ public void setSkipGeneratingTransientNameId(final boolean
skipGeneratingTransientNameId) {
+ this.skipGeneratingTransientNameId = skipGeneratingTransientNameId;
+ }
+
+ @Override
+ public boolean isSkipValidatingAuthnRequest() {
+ return skipValidatingAuthnRequest;
+ }
+
+ @Override
+ public void setSkipValidatingAuthnRequest(final boolean
skipValidatingAuthnRequest) {
+ this.skipValidatingAuthnRequest = skipValidatingAuthnRequest;
+ }
+
+ @Override
+ public boolean isSkipGeneratingServiceProviderNameIdQualifier() {
+ return skipGeneratingServiceProviderNameIdQualifier;
+ }
+
+ @Override
+ public void setSkipGeneratingServiceProviderNameIdQualifier(
+ final boolean skipGeneratingServiceProviderNameIdQualifier) {
+ this.skipGeneratingServiceProviderNameIdQualifier =
skipGeneratingServiceProviderNameIdQualifier;
+ }
+
+ @Override
+ public boolean isSkipGeneratingAuthenticatingAuthority() {
+ return skipGeneratingAuthenticatingAuthority;
+ }
+
+ @Override
+ public void setSkipGeneratingAuthenticatingAuthority(final boolean
skipGeneratingAuthenticatingAuthority) {
+ this.skipGeneratingAuthenticatingAuthority =
skipGeneratingAuthenticatingAuthority;
+ }
+
+ @Override
+ public boolean isSkipGeneratingNameIdQualifier() {
+ return skipGeneratingNameIdQualifier;
+ }
+
+ @Override
+ public void setSkipGeneratingNameIdQualifier(final boolean
skipGeneratingNameIdQualifier) {
+ this.skipGeneratingNameIdQualifier = skipGeneratingNameIdQualifier;
+ }
+
+ @Override
+ public boolean isSkipGeneratingSessionNotOnOrAfter() {
+ return skipGeneratingSessionNotOnOrAfter;
+ }
+
+ @Override
+ public void setSkipGeneratingSessionNotOnOrAfter(final boolean
skipGeneratingSessionNotOnOrAfter) {
+ this.skipGeneratingSessionNotOnOrAfter =
skipGeneratingSessionNotOnOrAfter;
+ }
+
+ @Override
+ public boolean isValidateMetadataCertificates() {
+ return validateMetadataCertificates;
+ }
+
+ @Override
+ public void setValidateMetadataCertificates(final boolean
validateMetadataCertificates) {
+ this.validateMetadataCertificates = validateMetadataCertificates;
+ }
+
@Override
public String getRequiredAuthenticationContextClass() {
return requiredAuthenticationContextClass;
diff --git
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ClientAppDataBinderImpl.java
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ClientAppDataBinderImpl.java
index 6973dbf5fc..753c6a4804 100644
---
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ClientAppDataBinderImpl.java
+++
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ClientAppDataBinderImpl.java
@@ -134,10 +134,39 @@ public class ClientAppDataBinderImpl implements
ClientAppDataBinder {
}
clientApp.setMetadataLocation(clientAppTO.getMetadataLocation());
clientApp.setMetadataSignatureLocation(clientAppTO.getMetadataSignatureLocation());
+
clientApp.setMetadataCriteriaPattern(clientAppTO.getMetadataCriteriaPattern());
+ clientApp.setSubjectLocality(clientAppTO.getSubjectLocality());
+
clientApp.setMetadataCriteriaDirection(clientAppTO.getMetadataCriteriaDirection());
+
clientApp.setSigningCredentialType(clientAppTO.getSigningCredentialType());
+
clientApp.setLogoutResponseBinding(clientAppTO.getLogoutResponseBinding());
clientApp.setSignAssertions(clientAppTO.isSignAssertions());
clientApp.setSignResponses(clientAppTO.isSignResponses());
clientApp.setEncryptionOptional(clientAppTO.isEncryptionOptional());
clientApp.setEncryptAssertions(clientAppTO.isEncryptAssertions());
+ clientApp.setRequireSignedRoot(clientAppTO.isRequireSignedRoot());
+
clientApp.setLogoutResponseEnabled(clientAppTO.isLogoutResponseEnabled());
+ clientApp.setEncryptAttributes(clientAppTO.isEncryptAttributes());
+
clientApp.setSkipGeneratingAssertionNameId(clientAppTO.isSkipGeneratingAssertionNameId());
+ clientApp.setSkipGeneratingSubjectConfirmationInResponseTo(
+ clientAppTO.isSkipGeneratingSubjectConfirmationInResponseTo());
+
clientApp.setSkipGeneratingResponseInResponseTo(clientAppTO.isSkipGeneratingResponseInResponseTo());
+ clientApp.setSkipGeneratingSubjectConfirmationNotOnOrAfter(
+ clientAppTO.isSkipGeneratingSubjectConfirmationNotOnOrAfter());
+ clientApp.setSkipGeneratingSubjectConfirmationRecipient(
+ clientAppTO.isSkipGeneratingSubjectConfirmationRecipient());
+
clientApp.setSkipGeneratingSubjectConfirmationAddress(clientAppTO.isSkipGeneratingSubjectConfirmationAddress());
+ clientApp.setSkipGeneratingSubjectConfirmationNotBefore(
+ clientAppTO.isSkipGeneratingSubjectConfirmationNotBefore());
+
clientApp.setSkipGeneratingSubjectConfirmationNameId(clientAppTO.isSkipGeneratingSubjectConfirmationNameId());
+
clientApp.setSkipGeneratingNameIdQualifiers(clientAppTO.isSkipGeneratingNameIdQualifiers());
+
clientApp.setSkipGeneratingTransientNameId(clientAppTO.isSkipGeneratingTransientNameId());
+
clientApp.setSkipValidatingAuthnRequest(clientAppTO.isSkipValidatingAuthnRequest());
+ clientApp.setSkipGeneratingServiceProviderNameIdQualifier(
+ clientAppTO.isSkipGeneratingServiceProviderNameIdQualifier());
+
clientApp.setSkipGeneratingAuthenticatingAuthority(clientAppTO.isSkipGeneratingAuthenticatingAuthority());
+
clientApp.setSkipGeneratingNameIdQualifier(clientAppTO.isSkipGeneratingNameIdQualifier());
+
clientApp.setSkipGeneratingSessionNotOnOrAfter(clientAppTO.isSkipGeneratingSessionNotOnOrAfter());
+
clientApp.setValidateMetadataCertificates(clientAppTO.isValidateMetadataCertificates());
clientApp.setRequiredAuthenticationContextClass(clientAppTO.getRequiredAuthenticationContextClass());
clientApp.setRequiredNameIdFormat(clientAppTO.getRequiredNameIdFormat());
clientApp.setSkewAllowance(clientAppTO.getSkewAllowance());
@@ -201,10 +230,39 @@ public class ClientAppDataBinderImpl implements
ClientAppDataBinder {
clientAppTO.setEntityId(clientApp.getEntityId());
clientAppTO.setMetadataLocation(clientApp.getMetadataLocation());
clientAppTO.setMetadataSignatureLocation(clientApp.getMetadataSignatureLocation());
+
clientAppTO.setMetadataCriteriaPattern(clientApp.getMetadataCriteriaPattern());
+ clientAppTO.setSubjectLocality(clientApp.getSubjectLocality());
+
clientAppTO.setMetadataCriteriaDirection(clientApp.getMetadataCriteriaDirection());
+
clientAppTO.setSigningCredentialType(clientApp.getSigningCredentialType());
+
clientAppTO.setLogoutResponseBinding(clientApp.getLogoutResponseBinding());
clientAppTO.setSignAssertions(clientApp.isSignAssertions());
clientAppTO.setSignResponses(clientApp.isSignResponses());
clientAppTO.setEncryptionOptional(clientApp.isEncryptionOptional());
clientAppTO.setEncryptAssertions(clientApp.isEncryptAssertions());
+ clientAppTO.setRequireSignedRoot(clientApp.isRequireSignedRoot());
+
clientAppTO.setLogoutResponseEnabled(clientApp.isLogoutResponseEnabled());
+ clientAppTO.setEncryptAttributes(clientApp.isEncryptAttributes());
+
clientAppTO.setSkipGeneratingAssertionNameId(clientApp.isSkipGeneratingAssertionNameId());
+ clientAppTO.setSkipGeneratingSubjectConfirmationInResponseTo(
+ clientApp.isSkipGeneratingSubjectConfirmationInResponseTo());
+
clientAppTO.setSkipGeneratingResponseInResponseTo(clientApp.isSkipGeneratingResponseInResponseTo());
+ clientAppTO.setSkipGeneratingSubjectConfirmationNotOnOrAfter(
+ clientApp.isSkipGeneratingSubjectConfirmationNotOnOrAfter());
+ clientAppTO.setSkipGeneratingSubjectConfirmationRecipient(
+ clientApp.isSkipGeneratingSubjectConfirmationRecipient());
+
clientAppTO.setSkipGeneratingSubjectConfirmationAddress(clientApp.isSkipGeneratingSubjectConfirmationAddress());
+ clientAppTO.setSkipGeneratingSubjectConfirmationNotBefore(
+ clientApp.isSkipGeneratingSubjectConfirmationNotBefore());
+
clientAppTO.setSkipGeneratingSubjectConfirmationNameId(clientApp.isSkipGeneratingSubjectConfirmationNameId());
+
clientAppTO.setSkipGeneratingNameIdQualifiers(clientApp.isSkipGeneratingNameIdQualifiers());
+
clientAppTO.setSkipGeneratingTransientNameId(clientApp.isSkipGeneratingTransientNameId());
+
clientAppTO.setSkipValidatingAuthnRequest(clientApp.isSkipValidatingAuthnRequest());
+ clientAppTO.setSkipGeneratingServiceProviderNameIdQualifier(
+ clientApp.isSkipGeneratingServiceProviderNameIdQualifier());
+
clientAppTO.setSkipGeneratingAuthenticatingAuthority(clientApp.isSkipGeneratingAuthenticatingAuthority());
+
clientAppTO.setSkipGeneratingNameIdQualifier(clientApp.isSkipGeneratingNameIdQualifier());
+
clientAppTO.setSkipGeneratingSessionNotOnOrAfter(clientApp.isSkipGeneratingSessionNotOnOrAfter());
+
clientAppTO.setValidateMetadataCertificates(clientApp.isValidateMetadataCertificates());
clientAppTO.setRequiredAuthenticationContextClass(clientApp.getRequiredAuthenticationContextClass());
clientAppTO.setRequiredNameIdFormat(clientApp.getRequiredNameIdFormat());
clientAppTO.setSkewAllowance(clientApp.getSkewAllowance());
diff --git
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/SAML2SPClientAppTOMapper.java
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/SAML2SPClientAppTOMapper.java
index 29ff3cda7f..2a8a1636a8 100644
---
a/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/SAML2SPClientAppTOMapper.java
+++
b/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/SAML2SPClientAppTOMapper.java
@@ -70,6 +70,32 @@ public class SAML2SPClientAppTOMapper extends
AbstractClientAppMapper {
service.setSignResponses(TriStateBoolean.fromBoolean(sp.isSignResponses()));
service.setEncryptionOptional(sp.isEncryptionOptional());
service.setEncryptAssertions(sp.isEncryptAssertions());
+ service.setSubjectLocality(sp.getSubjectLocality());
+ service.setLogoutResponseBinding(
+
Optional.ofNullable(sp.getLogoutResponseBinding()).map(Enum::name).orElse(null));
+
service.setMetadataCriteriaDirection(sp.getMetadataCriteriaDirection().name());
+ service.setMetadataCriteriaPattern(sp.getMetadataCriteriaPattern());
+ service.setSigningCredentialType(
+
Optional.ofNullable(sp.getSigningCredentialType()).map(Enum::name).orElse(null));
+ service.setEncryptAttributes(sp.isEncryptAttributes());
+ service.setRequireSignedRoot(sp.isRequireSignedRoot());
+ service.setLogoutResponseEnabled(sp.isLogoutResponseEnabled());
+
service.setSkipGeneratingAssertionNameId(sp.isSkipGeneratingAssertionNameId());
+
service.setSkipGeneratingSubjectConfirmationInResponseTo(sp.isSkipGeneratingSubjectConfirmationInResponseTo());
+
service.setSkipGeneratingResponseInResponseTo(sp.isSkipGeneratingResponseInResponseTo());
+
service.setSkipGeneratingSubjectConfirmationNotOnOrAfter(sp.isSkipGeneratingSubjectConfirmationNotOnOrAfter());
+
service.setSkipGeneratingSubjectConfirmationRecipient(sp.isSkipGeneratingSubjectConfirmationRecipient());
+
service.setSkipGeneratingSubjectConfirmationAddress(sp.isSkipGeneratingSubjectConfirmationAddress());
+
service.setSkipGeneratingSubjectConfirmationNotBefore(sp.isSkipGeneratingSubjectConfirmationNotBefore());
+
service.setSkipGeneratingSubjectConfirmationNameId(sp.isSkipGeneratingSubjectConfirmationNameId());
+
service.setSkipGeneratingNameIdQualifiers(sp.isSkipGeneratingNameIdQualifiers());
+
service.setSkipGeneratingTransientNameId(sp.isSkipGeneratingTransientNameId());
+
service.setSkipValidatingAuthnRequest(sp.isSkipValidatingAuthnRequest());
+
service.setSkipGeneratingServiceProviderNameIdQualifier(sp.isSkipGeneratingServiceProviderNameIdQualifier());
+
service.setSkipGeneratingAuthenticatingAuthority(sp.isSkipGeneratingAuthenticatingAuthority());
+
service.setSkipGeneratingNameIdQualifier(sp.isSkipGeneratingNameIdQualifier());
+
service.setSkipGeneratingSessionNotOnOrAfter(sp.isSkipGeneratingSessionNotOnOrAfter());
+
service.setValidateMetadataCertificates(sp.isValidateMetadataCertificates());
service.setRequiredAuthenticationContextClass(sp.getRequiredAuthenticationContextClass());
service.setRequiredNameIdFormat(sp.getRequiredNameIdFormat().getNameId());
service.setSkewAllowance(Optional.ofNullable(sp.getSkewAllowance()).orElse(0));