Search in sources :

Example 1 with SamlRegisteredService

use of org.apereo.cas.support.saml.services.SamlRegisteredService in project cas by apereo.

the class JpaServiceRegistryDaoImplTests method verifySamlService.

@Test
public void verifySamlService() {
    final SamlRegisteredService r = new SamlRegisteredService();
    r.setName("test345");
    r.setServiceId("Testing");
    r.setDescription("description");
    r.setAttributeReleasePolicy(new ReturnAllAttributeReleasePolicy());
    final Map fmt = new HashMap();
    fmt.put("key", "value");
    r.setAttributeNameFormats(fmt);
    r.setMetadataCriteriaDirection("INCLUDE");
    r.setMetadataCriteriaRemoveEmptyEntitiesDescriptors(true);
    r.setMetadataSignatureLocation("location");
    r.setRequiredAuthenticationContextClass("Testing");
    final SamlRegisteredService r2 = (SamlRegisteredService) this.dao.save(r);
    assertEquals(r, r2);
}
Also used : HashMap(java.util.HashMap) SamlRegisteredService(org.apereo.cas.support.saml.services.SamlRegisteredService) HashMap(java.util.HashMap) Map(java.util.Map) Test(org.junit.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 2 with SamlRegisteredService

use of org.apereo.cas.support.saml.services.SamlRegisteredService in project cas by apereo.

the class SamlSPUtils method newSamlServiceProviderService.

/**
     * New saml service provider registration.
     *
     * @param sp       the properties
     * @param resolver the resolver
     * @return the saml registered service
     */
public static SamlRegisteredService newSamlServiceProviderService(final AbstractSamlSPProperties sp, final SamlRegisteredServiceCachingMetadataResolver resolver) {
    if (StringUtils.isBlank(sp.getMetadata())) {
        LOGGER.debug("Skipped registration of [{}] since no metadata location is found", sp.getName());
        return null;
    }
    try {
        final SamlRegisteredService service = new SamlRegisteredService();
        service.setName(sp.getName());
        service.setDescription(sp.getDescription());
        service.setEvaluationOrder(Integer.MIN_VALUE);
        service.setMetadataLocation(sp.getMetadata());
        final List<String> attributesToRelease = new ArrayList<>(sp.getAttributes());
        if (StringUtils.isNotBlank(sp.getNameIdAttribute())) {
            attributesToRelease.add(sp.getNameIdAttribute());
            service.setUsernameAttributeProvider(new PrincipalAttributeRegisteredServiceUsernameProvider(sp.getNameIdAttribute()));
        }
        if (StringUtils.isNotBlank(sp.getNameIdFormat())) {
            service.setRequiredNameIdFormat(sp.getNameIdFormat());
        }
        final Map<String, String> attributes = Beans.transformPrincipalAttributesListIntoMap(attributesToRelease);
        service.setAttributeReleasePolicy(new ReturnMappedAttributeReleasePolicy(attributes));
        service.setMetadataCriteriaRoles(SPSSODescriptor.DEFAULT_ELEMENT_NAME.getLocalPart());
        service.setMetadataCriteriaRemoveEmptyEntitiesDescriptors(true);
        service.setMetadataCriteriaRemoveRolelessEntityDescriptors(true);
        if (StringUtils.isNotBlank(sp.getSignatureLocation())) {
            service.setMetadataSignatureLocation(sp.getSignatureLocation());
        }
        final List<String> entityIDList = sp.getEntityIds();
        if (entityIDList.isEmpty()) {
            final ChainingMetadataResolver chainingResolver = resolver.resolve(service);
            if (chainingResolver.getResolvers().isEmpty()) {
                LOGGER.warn("Skipped registration of [{}] since no metadata resolver could be constructed", sp.getName());
                return null;
            }
            chainingResolver.getResolvers().forEach(r -> {
                if (r instanceof AbstractBatchMetadataResolver) {
                    final Iterator<EntityDescriptor> it = ((AbstractBatchMetadataResolver) r).iterator();
                    final Optional<EntityDescriptor> descriptor = StreamSupport.stream(Spliterators.spliteratorUnknownSize(it, Spliterator.ORDERED), false).filter(e -> e.getSPSSODescriptor(SAMLConstants.SAML20P_NS) != null).findFirst();
                    if (descriptor.isPresent()) {
                        entityIDList.add(descriptor.get().getEntityID());
                    } else {
                        LOGGER.warn("Skipped registration of [{}] since no entity id could be found", sp.getName());
                    }
                }
            });
        }
        if (entityIDList.isEmpty()) {
            LOGGER.warn("Skipped registration of [{}] since no metadata entity ids could be found", sp.getName());
            return null;
        }
        final String entityIds = org.springframework.util.StringUtils.collectionToDelimitedString(entityIDList, "|");
        service.setMetadataCriteriaDirection(PredicateFilter.Direction.INCLUDE.name());
        service.setMetadataCriteriaPattern(entityIds);
        LOGGER.debug("Registering saml service [{}] by entity id [{}]", sp.getName(), entityIds);
        service.setServiceId(entityIds);
        return service;
    } catch (final Exception e) {
        throw Throwables.propagate(e);
    }
}
Also used : AbstractBatchMetadataResolver(org.opensaml.saml.metadata.resolver.impl.AbstractBatchMetadataResolver) PrincipalAttributeRegisteredServiceUsernameProvider(org.apereo.cas.services.PrincipalAttributeRegisteredServiceUsernameProvider) Spliterators(java.util.Spliterators) SamlRegisteredServiceCachingMetadataResolver(org.apereo.cas.support.saml.services.idp.metadata.cache.SamlRegisteredServiceCachingMetadataResolver) LoggerFactory(org.slf4j.LoggerFactory) Beans(org.apereo.cas.configuration.support.Beans) StringUtils(org.apache.commons.lang3.StringUtils) AbstractBatchMetadataResolver(org.opensaml.saml.metadata.resolver.impl.AbstractBatchMetadataResolver) ArrayList(java.util.ArrayList) SamlRegisteredService(org.apereo.cas.support.saml.services.SamlRegisteredService) Map(java.util.Map) StreamSupport(java.util.stream.StreamSupport) SAMLConstants(org.opensaml.saml.common.xml.SAMLConstants) ServicesManager(org.apereo.cas.services.ServicesManager) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) Throwables(com.google.common.base.Throwables) RegisteredService(org.apereo.cas.services.RegisteredService) SPSSODescriptor(org.opensaml.saml.saml2.metadata.SPSSODescriptor) List(java.util.List) AbstractSamlSPProperties(org.apereo.cas.configuration.model.support.saml.sps.AbstractSamlSPProperties) ReturnMappedAttributeReleasePolicy(org.apereo.cas.services.ReturnMappedAttributeReleasePolicy) ChainingMetadataResolver(org.opensaml.saml.metadata.resolver.ChainingMetadataResolver) Optional(java.util.Optional) EntityDescriptor(org.opensaml.saml.saml2.metadata.EntityDescriptor) PredicateFilter(org.opensaml.saml.metadata.resolver.filter.impl.PredicateFilter) Spliterator(java.util.Spliterator) ArrayList(java.util.ArrayList) EntityDescriptor(org.opensaml.saml.saml2.metadata.EntityDescriptor) ChainingMetadataResolver(org.opensaml.saml.metadata.resolver.ChainingMetadataResolver) PrincipalAttributeRegisteredServiceUsernameProvider(org.apereo.cas.services.PrincipalAttributeRegisteredServiceUsernameProvider) SamlRegisteredService(org.apereo.cas.support.saml.services.SamlRegisteredService) ReturnMappedAttributeReleasePolicy(org.apereo.cas.services.ReturnMappedAttributeReleasePolicy)

Example 3 with SamlRegisteredService

use of org.apereo.cas.support.saml.services.SamlRegisteredService in project cas by apereo.

the class CasSamlSPAsanaConfiguration method init.

@PostConstruct
public void init() {
    final SamlRegisteredService service = SamlSPUtils.newSamlServiceProviderService(casProperties.getSamlSP().getAsana(), samlRegisteredServiceCachingMetadataResolver);
    if (service != null) {
        service.setSignResponses(true);
        SamlSPUtils.saveService(service, this.servicesManager);
    }
}
Also used : SamlRegisteredService(org.apereo.cas.support.saml.services.SamlRegisteredService) PostConstruct(javax.annotation.PostConstruct)

Example 4 with SamlRegisteredService

use of org.apereo.cas.support.saml.services.SamlRegisteredService in project cas by apereo.

the class CasSamlSPEvernoteConfiguration method init.

@PostConstruct
public void init() {
    final SamlRegisteredService service = SamlSPUtils.newSamlServiceProviderService(casProperties.getSamlSP().getEvernote(), samlRegisteredServiceCachingMetadataResolver);
    if (service != null) {
        service.setSignResponses(true);
        SamlSPUtils.saveService(service, this.servicesManager);
    }
}
Also used : SamlRegisteredService(org.apereo.cas.support.saml.services.SamlRegisteredService) PostConstruct(javax.annotation.PostConstruct)

Example 5 with SamlRegisteredService

use of org.apereo.cas.support.saml.services.SamlRegisteredService in project cas by apereo.

the class CasSamlSPInCommonConfiguration method init.

@PostConstruct
public void init() {
    final SamlRegisteredService service = SamlSPUtils.newSamlServiceProviderService(casProperties.getSamlSP().getInCommon(), samlRegisteredServiceCachingMetadataResolver);
    if (service != null) {
        service.setSignResponses(true);
        SamlSPUtils.saveService(service, servicesManager);
        LOGGER.info("Launching background thread to load the InCommon metadata. Depending on bandwidth, this might take a while...");
        new Thread(() -> {
            LOGGER.debug("Loading InCommon metadata at [{}]...", service.getMetadataLocation());
            final ChainingMetadataResolver chainingResolver = samlRegisteredServiceCachingMetadataResolver.resolve(service);
            if (!chainingResolver.getResolvers().isEmpty()) {
                LOGGER.info("Loaded InCommon metadata. [{}] metadata resolver(s) available.", chainingResolver.getResolvers().size());
            }
        }).start();
    }
}
Also used : ChainingMetadataResolver(org.opensaml.saml.metadata.resolver.ChainingMetadataResolver) SamlRegisteredService(org.apereo.cas.support.saml.services.SamlRegisteredService) PostConstruct(javax.annotation.PostConstruct)

Aggregations

SamlRegisteredService (org.apereo.cas.support.saml.services.SamlRegisteredService)31 PostConstruct (javax.annotation.PostConstruct)16 Test (org.junit.Test)6 UnauthorizedServiceException (org.apereo.cas.services.UnauthorizedServiceException)5 SamlRegisteredServiceServiceProviderMetadataFacade (org.apereo.cas.support.saml.services.idp.metadata.SamlRegisteredServiceServiceProviderMetadataFacade)5 RegisteredService (org.apereo.cas.services.RegisteredService)4 Map (java.util.Map)3 AuthnRequest (org.opensaml.saml.saml2.core.AuthnRequest)3 URL (java.net.URL)2 HashMap (java.util.HashMap)2 RegisteredServiceEditBean (org.apereo.cas.mgmt.services.web.beans.RegisteredServiceEditBean)2 RegisteredServiceOAuthTypeEditBean (org.apereo.cas.mgmt.services.web.beans.RegisteredServiceOAuthTypeEditBean)2 RegisteredServicePublicKeyEditBean (org.apereo.cas.mgmt.services.web.beans.RegisteredServicePublicKeyEditBean)2 RegisteredServiceSamlTypeEditBean (org.apereo.cas.mgmt.services.web.beans.RegisteredServiceSamlTypeEditBean)2 DefaultRegisteredServiceProperty (org.apereo.cas.services.DefaultRegisteredServiceProperty)2 JsonServiceRegistryDao (org.apereo.cas.services.JsonServiceRegistryDao)2 OidcRegisteredService (org.apereo.cas.services.OidcRegisteredService)2 RegexRegisteredService (org.apereo.cas.services.RegexRegisteredService)2 OAuthRegisteredService (org.apereo.cas.support.oauth.services.OAuthRegisteredService)2 MessageContext (org.opensaml.messaging.context.MessageContext)2