1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.wa.starter.mapping;
20
21 import java.util.Optional;
22 import java.util.stream.Collectors;
23 import org.apache.syncope.common.lib.to.ClientAppTO;
24 import org.apache.syncope.common.lib.to.SAML2SPClientAppTO;
25 import org.apache.syncope.common.lib.wa.WAClientApp;
26 import org.apereo.cas.services.RegisteredService;
27 import org.apereo.cas.services.RegisteredServiceAccessStrategy;
28 import org.apereo.cas.services.RegisteredServiceAttributeReleasePolicy;
29 import org.apereo.cas.services.RegisteredServiceAuthenticationPolicy;
30 import org.apereo.cas.services.RegisteredServiceMultifactorPolicy;
31 import org.apereo.cas.services.RegisteredServiceProxyGrantingTicketExpirationPolicy;
32 import org.apereo.cas.services.RegisteredServiceProxyTicketExpirationPolicy;
33 import org.apereo.cas.services.RegisteredServiceServiceTicketExpirationPolicy;
34 import org.apereo.cas.services.RegisteredServiceTicketGrantingTicketExpirationPolicy;
35 import org.apereo.cas.support.saml.services.SamlRegisteredService;
36 import org.apereo.cas.util.model.TriStateBoolean;
37
38 public class SAML2SPClientAppTOMapper extends AbstractClientAppMapper {
39
40 @Override
41 public boolean supports(final ClientAppTO clientApp) {
42 return SAML2SPClientAppTO.class.equals(clientApp.getClass());
43 }
44
45 @Override
46 public RegisteredService map(
47 final WAClientApp clientApp,
48 final RegisteredServiceAuthenticationPolicy authPolicy,
49 final RegisteredServiceMultifactorPolicy mfaPolicy,
50 final RegisteredServiceAccessStrategy accessStrategy,
51 final RegisteredServiceAttributeReleasePolicy attributeReleasePolicy,
52 final RegisteredServiceTicketGrantingTicketExpirationPolicy tgtExpirationPolicy,
53 final RegisteredServiceServiceTicketExpirationPolicy stExpirationPolicy,
54 final RegisteredServiceProxyGrantingTicketExpirationPolicy tgtProxyExpirationPolicy,
55 final RegisteredServiceProxyTicketExpirationPolicy stProxyExpirationPolicy) {
56
57 SAML2SPClientAppTO sp = SAML2SPClientAppTO.class.cast(clientApp.getClientAppTO());
58 SamlRegisteredService service = new SamlRegisteredService();
59 setCommon(service, sp);
60
61 service.setServiceId(sp.getEntityId());
62
63 service.setMetadataLocation(sp.getMetadataLocation());
64 service.setMetadataSignatureLocation(sp.getMetadataSignatureLocation());
65 service.setSignAssertions(TriStateBoolean.fromBoolean(sp.isSignAssertions()));
66 service.setSignResponses(TriStateBoolean.fromBoolean(sp.isSignResponses()));
67 service.setEncryptionOptional(sp.isEncryptionOptional());
68 service.setEncryptAssertions(sp.isEncryptAssertions());
69 service.setRequiredAuthenticationContextClass(sp.getRequiredAuthenticationContextClass());
70 service.setRequiredNameIdFormat(sp.getRequiredNameIdFormat().getNameId());
71 service.setSkewAllowance(Optional.ofNullable(sp.getSkewAllowance()).orElse(0));
72 service.setNameIdQualifier(sp.getNameIdQualifier());
73 if (!sp.getAssertionAudiences().isEmpty()) {
74 service.setAssertionAudiences(sp.getAssertionAudiences().stream().collect(Collectors.joining(",")));
75 }
76 service.setServiceProviderNameIdQualifier(sp.getServiceProviderNameIdQualifier());
77
78 setPolicies(service, authPolicy, mfaPolicy, accessStrategy, attributeReleasePolicy,
79 tgtExpirationPolicy, stExpirationPolicy, tgtProxyExpirationPolicy, stProxyExpirationPolicy);
80
81 return service;
82 }
83 }