All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.pac4j.saml.metadata.SAML2ServiceProviderMetadataResolver Maven / Gradle / Ivy

There is a newer version: 6.1.0
Show newest version
package org.pac4j.saml.metadata;

import lombok.val;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
import org.opensaml.core.criterion.EntityIdCriterion;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.saml.metadata.resolver.MetadataResolver;
import org.opensaml.saml.metadata.resolver.impl.FilesystemMetadataResolver;
import org.pac4j.saml.config.SAML2Configuration;
import org.pac4j.saml.exceptions.SAMLException;

/**
 * 

SAML2ServiceProviderMetadataResolver class.

* * @author Misagh Moayyed * @since 1.7 */ public class SAML2ServiceProviderMetadataResolver implements SAML2MetadataResolver { protected final SAML2Configuration configuration; private MetadataResolver metadataResolver; /** *

Constructor for SAML2ServiceProviderMetadataResolver.

* * @param configuration a {@link SAML2Configuration} object */ public SAML2ServiceProviderMetadataResolver(final SAML2Configuration configuration) { this.configuration = configuration; this.metadataResolver = prepareServiceProviderMetadata(); } /** *

destroy.

*/ public void destroy() { if (this.metadataResolver instanceof FilesystemMetadataResolver) { ((FilesystemMetadataResolver) this.metadataResolver).destroy(); this.metadataResolver = null; } } /** *

prepareServiceProviderMetadata.

* * @return a {@link MetadataResolver} object */ protected MetadataResolver prepareServiceProviderMetadata() { try { val metadataGenerator = configuration.toMetadataGenerator(); val resource = configuration.getServiceProviderMetadataResource(); if (resource == null || !resource.exists() || configuration.isForceServiceProviderMetadataGeneration()) { val entity = metadataGenerator.buildEntityDescriptor(); val metadata = metadataGenerator.getMetadata(entity); metadataGenerator.storeMetadata(metadata, configuration.isForceServiceProviderMetadataGeneration()); } return metadataGenerator.buildMetadataResolver(); } catch (final Exception e) { throw new SAMLException("Unable to generate metadata for service provider", e); } } /** {@inheritDoc} */ @Override public final MetadataResolver resolve(final boolean force) { if (force) { this.metadataResolver = prepareServiceProviderMetadata(); } return this.metadataResolver; } /** {@inheritDoc} */ @Override public final String getEntityId() { return configuration.getServiceProviderEntityId(); } /** {@inheritDoc} */ @Override public String getMetadata() { try { val metadataGenerator = configuration.toMetadataGenerator(); val entity = metadataGenerator.buildEntityDescriptor(); return metadataGenerator.getMetadata(entity); } catch (final Exception e) { throw new SAMLException("Unable to fetch metadata", e); } } /** {@inheritDoc} */ @Override public XMLObject getEntityDescriptorElement() { try { return resolve().resolveSingle(new CriteriaSet(new EntityIdCriterion(getEntityId()))); } catch (final ResolverException e) { throw new SAMLException("Unable to resolve metadata", e); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy