default String getEntityID() throws MetadataProviderException { fetchMetadata(); XMLObject metadata = doGetMetadata(); if (metadata instanceof EntityDescriptor) { EntityDescriptor entityDescriptor = (EntityDescriptor) metadata; return entityDescriptor.getEntityID(); } else if (metadata instanceof EntitiesDescriptor) { EntitiesDescriptor desc = (EntitiesDescriptor)metadata; if (desc.getEntityDescriptors().size()!=1) { throw new MetadataProviderException("Invalid metadata. Number of descriptors must be 1, but is "+desc.getEntityDescriptors().size()); } else { return desc.getEntityDescriptors().get(0).getEntityID(); } } else { throw new MetadataProviderException("Unknown descriptor class:"+metadata.getClass().getName()); } }
private void addDescriptors(List<String> result, EntitiesDescriptor descriptors) throws MetadataProviderException { log.debug("Found metadata EntitiesDescriptor with ID", descriptors.getID()); if (descriptors.getEntitiesDescriptors() != null) { for (EntitiesDescriptor descriptor : descriptors.getEntitiesDescriptors()) { addDescriptors(result, descriptor); } } if (descriptors.getEntityDescriptors() != null) { for (EntityDescriptor descriptor : descriptors.getEntityDescriptors()) { addDescriptor(result, descriptor); } } }
private void discoverAndAddIdp(XMLObject metadata, Map<String, SAMLProviderMetadata> idpMap) { if (metadata instanceof EntityDescriptor) { EntityDescriptor entityDescriptor = (EntityDescriptor) metadata; addIdpToMap(entityDescriptor, idpMap); } else if (metadata instanceof EntitiesDescriptor) { EntitiesDescriptor entitiesDescriptor = (EntitiesDescriptor) metadata; if (entitiesDescriptor.getEntityDescriptors() != null) { for (EntityDescriptor entityDescriptor: entitiesDescriptor.getEntityDescriptors()) { addIdpToMap(entityDescriptor, idpMap); } } if (entitiesDescriptor.getEntitiesDescriptors() != null) { for (EntitiesDescriptor entitiesDescriptorInner: entitiesDescriptor.getEntitiesDescriptors()) { discoverAndAddIdp(entitiesDescriptorInner, idpMap); } } } }
/** * Checks that at least one EntitiesDescriptor or EntityDescriptor is present. * * @param entitiesDescriptor * @throws ValidationException */ protected void validateEntityDescriptors(EntitiesDescriptor entitiesDescriptor) throws ValidationException { if ((entitiesDescriptor.getEntitiesDescriptors() == null || entitiesDescriptor.getEntitiesDescriptors().size() < 1) && (entitiesDescriptor.getEntityDescriptors() == null || entitiesDescriptor.getEntityDescriptors() .size() < 1)) { throw new ValidationException("Must have one or more EntitiesDescriptor or EntityDescriptor."); } } }
@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())); }
/** {@inheritDoc} */ protected void processChildElement(XMLObject parentSAMLObject, XMLObject childSAMLObject) throws UnmarshallingException { EntitiesDescriptor entitiesDescriptor = (EntitiesDescriptor) parentSAMLObject; if (childSAMLObject instanceof Extensions) { entitiesDescriptor.setExtensions((Extensions) childSAMLObject); } else if (childSAMLObject instanceof EntitiesDescriptor) { entitiesDescriptor.getEntitiesDescriptors().add((EntitiesDescriptor) childSAMLObject); } else if (childSAMLObject instanceof EntityDescriptor) { entitiesDescriptor.getEntityDescriptors().add((EntityDescriptor) childSAMLObject); } else if (childSAMLObject instanceof Signature) { entitiesDescriptor.setSignature((Signature) childSAMLObject); } else { super.processChildElement(parentSAMLObject, childSAMLObject); } }
/** * Recursively parses descriptors object. Supports both nested entitiesDescriptor * elements and leaf entityDescriptors. EntityID of all found descriptors are added * to the result set. Signatures on all found entities are verified using the given policy * and trust engine. * * @param result result set of parsed entity IDs * @param descriptors descriptors to parse * @throws MetadataProviderException in case signature validation fails */ private void addDescriptors(List<String> result, EntitiesDescriptor descriptors) throws MetadataProviderException { log.debug("Found metadata EntitiesDescriptor with ID", descriptors.getID()); if (descriptors.getEntitiesDescriptors() != null) { for (EntitiesDescriptor descriptor : descriptors.getEntitiesDescriptors()) { addDescriptors(result, descriptor); } } if (descriptors.getEntityDescriptors() != null) { for (EntityDescriptor descriptor : descriptors.getEntityDescriptors()) { addDescriptor(result, descriptor); } } }
List<EntityDescriptor> entityDescriptors = descriptor.getEntityDescriptors(); if (entityDescriptors != null && !entityDescriptors.isEmpty()) { List<EntityDescriptor> emptyEntityDescriptors = new ArrayList<EntityDescriptor>(); if (getRemoveEmptyEntitiesDescriptors()) { if ((entitiesDescriptor.getEntityDescriptors() == null || entitiesDescriptor.getEntityDescriptors() .isEmpty()) && (entitiesDescriptor.getEntitiesDescriptors() == null || entitiesDescriptor
Iterator<EntityDescriptor> entityIter = entitiesDescriptor.getEntityDescriptors().iterator(); while (entityIter.hasNext()) { EntityDescriptor entityChild = entityIter.next(); entitiesDescriptor.getEntityDescriptors().removeAll(toRemove); toRemove.clear();
List<EntityDescriptor> entityDescriptors = descriptor.getEntityDescriptors(); if (entityDescriptors != null && !entityDescriptors.isEmpty()) { for (EntityDescriptor entityDescriptor : entityDescriptors) {
if (ed.getEntityDescriptors() == null) { throw new XMLParserException("EntityDescriptors is null"); if (ed.getEntityDescriptors().isEmpty()) { throw new XMLParserException("EntityDescriptors is empty"); edesc = ed.getEntityDescriptors().get(0);