package org.apereo.cas.config;
import org.apereo.cas.configuration.CasConfigurationProperties;
import org.apereo.cas.configuration.model.support.saml.sps.AbstractSamlSPProperties;
import org.apereo.cas.services.ServicesManager;
import org.apereo.cas.support.saml.services.SamlRegisteredService;
import org.apereo.cas.support.saml.services.idp.metadata.cache.SamlRegisteredServiceCachingMetadataResolver;
import org.apereo.cas.util.SamlSPUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import javax.annotation.PostConstruct;
/**
* This is {@link BaseCasSamlSPConfiguration}.
*
* @author Misagh Moayyed
* @since 5.1.0
*/
public abstract class BaseCasSamlSPConfiguration {
/** CAS properties. */
@Autowired
protected CasConfigurationProperties casProperties;
@Autowired
@Qualifier("servicesManager")
private ServicesManager servicesManager;
@Autowired
@Qualifier("defaultSamlRegisteredServiceCachingMetadataResolver")
private SamlRegisteredServiceCachingMetadataResolver samlRegisteredServiceCachingMetadataResolver;
@PostConstruct
public void init() {
final SamlRegisteredService service = SamlSPUtils.newSamlServiceProviderService(
getServiceProvider(),
samlRegisteredServiceCachingMetadataResolver);
if (service != null) {
finalizeRegisteredService(service);
SamlSPUtils.saveService(service, this.servicesManager);
}
}
protected abstract AbstractSamlSPProperties getServiceProvider();
/**
* Finalize registered service.
* Template method to customize the service behavior
* and override default options.
*
* @param service the service
*/
protected void finalizeRegisteredService(final SamlRegisteredService service) {
}
}