/** Constructor. */ public ChainingEntitiesDescriptor() throws MetadataProviderException { childDescriptors = new ArrayList<XMLObject>(); for (MetadataProvider provider : getProviders()) { childDescriptors.add(provider.getMetadata()); } }
/** {@inheritDoc} */ public List<XMLObject> getOrderedChildren() { ArrayList<XMLObject> descriptors = new ArrayList<>(); try { for (MetadataProvider provider : getProviders()) { descriptors.add(provider.getMetadata()); } } catch (MetadataProviderException e) { log.error("Unable to generate list of child descriptors", e); } return descriptors; }
@Override protected List<String> parseProvider(MetadataProvider provider) throws MetadataProviderException { List<String> result = new LinkedList<String>(); XMLObject object = provider.getMetadata(); if (object instanceof EntityDescriptor) { addDescriptor(result, (EntityDescriptor) object); } else if (object instanceof EntitiesDescriptor) { addDescriptors(result, (EntitiesDescriptor) object); } return result; }
public XMLObject getMetadata() throws MetadataProviderException { return delegate.getMetadata(); }
/** {@inheritDoc} */ public List<XMLObject> getOrderedChildren() { ArrayList<XMLObject> descriptors = new ArrayList<XMLObject>(); try { for (MetadataProvider provider : providers) { descriptors.add(provider.getMetadata()); } } catch (MetadataProviderException e) { log.error("Unable to generate list of child descriptors", e); } return descriptors; }
/** Constructor. */ public ChainingEntitiesDescriptor() { childDescriptors = new ArrayList<XMLObject>(); Lock readLock = providerLock.readLock(); readLock.lock(); try { for (MetadataProvider provider : providers) { childDescriptors.add(provider.getMetadata()); } } catch (MetadataProviderException e) { log.error("Unable to get metadata from child metadata provider", e); } finally { readLock.unlock(); } }
@SneakyThrows private boolean isLocal(ExtendedMetadataDelegate delegate) { delegate.initialize(); XMLObject metadata = delegate.getDelegate().getMetadata(); List<EntityDescriptor> descriptors = EntityDescriptor.class.isAssignableFrom(metadata.getClass()) ? Collections.singletonList((EntityDescriptor) metadata) : (EntitiesDescriptor.class.isAssignableFrom(metadata.getClass()) ? ((EntitiesDescriptor) metadata).getEntityDescriptors() : Collections.emptyList()); return descriptors.stream() .anyMatch(ed -> isLocal(delegate, ed.getEntityID())); }
/** * Parses the provider and returns set of entityIDs contained inside the provider. * * @param provider provider to parse * @return set of entityIDs available in the provider * @throws MetadataProviderException error */ protected List<String> parseProvider(MetadataProvider provider) throws MetadataProviderException { List<String> result = new LinkedList<String>(); XMLObject object = provider.getMetadata(); if (object instanceof EntityDescriptor) { addDescriptor(result, (EntityDescriptor) object); } else if (object instanceof EntitiesDescriptor) { addDescriptors(result, (EntitiesDescriptor) object); } return result; }
private static EntityDescriptor getEntityDescriptor(MetadataProvider metadataProvider) throws SamlException { EntityDescriptor descriptor; try { descriptor = (EntityDescriptor) metadataProvider.getMetadata(); } catch (MetadataProviderException ex) { throw new SamlException("Cannot retrieve the entity descriptor", ex); } if (descriptor == null) { throw new SamlException("Cannot retrieve the entity descriptor"); } return descriptor; }
@Override public void run() { try { log.trace("Executing metadata refresh task"); // Invoking getMetadata performs a refresh in case it's needed // Potentially expensive operation, but other threads can still load existing cached data for (MetadataProvider provider : getProviders()) { provider.getMetadata(); } // Refresh the metadataManager if needed if (isRefreshRequired()) { if (isRefreshNowAndClear()) { refreshMetadata(); } } } catch (Throwable e) { log.warn("Metadata refreshing has failed", e); } }
metadata.getMetadata(); } catch (MetadataProviderException e) {
/** {@inheritDoc} */ protected Iterable<Credential> resolveFromSource(CriteriaSet criteriaSet) throws SecurityException { checkCriteriaRequirements(criteriaSet); String entityID = criteriaSet.get(EntityIDCriteria.class).getEntityID(); MetadataCriteria mdCriteria = criteriaSet.get(MetadataCriteria.class); QName role = mdCriteria.getRole(); String protocol = mdCriteria.getProtocol(); UsageCriteria usageCriteria = criteriaSet.get(UsageCriteria.class); UsageType usage = null; if (usageCriteria != null) { usage = usageCriteria.getUsage(); } else { usage = UsageType.UNSPECIFIED; } // See Jira issue SIDP-229. log.debug("Forcing on-demand metadata provider refresh if necessary"); try { metadata.getMetadata(); } catch (MetadataProviderException e) { // don't care about errors at this level } MetadataCacheKey cacheKey = new MetadataCacheKey(entityID, role, protocol, usage); Collection<Credential> credentials = retrieveFromCache(cacheKey); if (credentials == null) { credentials = retrieveFromMetadata(entityID, role, protocol, usage); cacheCredentials(cacheKey, credentials); } return credentials; }
/** {@inheritDoc} */ public Iterable<PKIXValidationInformation> resolve(CriteriaSet criteriaSet) throws SecurityException { checkCriteriaRequirements(criteriaSet); String entityID = criteriaSet.get(EntityIDCriteria.class).getEntityID(); MetadataCriteria mdCriteria = criteriaSet.get(MetadataCriteria.class); QName role = mdCriteria.getRole(); String protocol = mdCriteria.getProtocol(); UsageCriteria usageCriteria = criteriaSet.get(UsageCriteria.class); UsageType usage = null; if (usageCriteria != null) { usage = usageCriteria.getUsage(); } else { usage = UsageType.UNSPECIFIED; } // See Jira issue SIDP-229. log.debug("Forcing on-demand metadata provider refresh if necessary"); try { metadata.getMetadata(); } catch (MetadataProviderException e) { // don't care about errors at this level } MetadataCacheKey cacheKey = new MetadataCacheKey(entityID, role, protocol, usage); List<PKIXValidationInformation> pkixInfoSet = retrievePKIXInfoFromCache(cacheKey); if (pkixInfoSet == null) { pkixInfoSet = retrievePKIXInfoFromMetadata(entityID, role, protocol, usage); cachePKIXInfo(cacheKey, pkixInfoSet); } return pkixInfoSet; }