@Override public IdpExtendedMetadata clone() { return (IdpExtendedMetadata) super.clone(); } }
private ExtendedMetadata getExtendedMetadata(String entityID, MetadataProvider provider) throws MetadataProviderException { if (provider instanceof ExtendedMetadataProvider) { ExtendedMetadataProvider extendedProvider = (ExtendedMetadataProvider) provider; ExtendedMetadata extendedMetadata = extendedProvider.getExtendedMetadata(entityID); if (extendedMetadata != null) { return extendedMetadata.clone(); } } return null; }
private ExtendedMetadata getExtendedMetadata(String entityID, MetadataProvider provider) throws MetadataProviderException { if (provider instanceof ExtendedMetadataProvider) { ExtendedMetadataProvider extendedProvider = (ExtendedMetadataProvider) provider; ExtendedMetadata extendedMetadata = extendedProvider.getExtendedMetadata(entityID); if (extendedMetadata != null) { return extendedMetadata.clone(); } } return null; }
@Override public ExtendedMetadata getExtendedMetadata(String entityID) throws MetadataProviderException { for (MetadataProvider provider : getProviders()) { ExtendedMetadata extendedMetadata = getExtendedMetadata(entityID, provider); if (extendedMetadata != null) { return extendedMetadata; } } return getDefaultExtendedMetadata().clone(); }
@Override public ExtendedMetadata getExtendedMetadata(String entityID) throws MetadataProviderException { for (MetadataProvider provider : getAvailableProviders()) { ExtendedMetadata extendedMetadata = getExtendedMetadata(entityID, provider); if (extendedMetadata != null) { return extendedMetadata; } } return getDefaultExtendedMetadata().clone(); }
private ExtendedMetadata getExtendedMetadata(String entityID, MetadataProvider provider) throws MetadataProviderException { if (provider instanceof ExtendedMetadataProvider) { ExtendedMetadataProvider extendedProvider = (ExtendedMetadataProvider) provider; ExtendedMetadata extendedMetadata = extendedProvider.getExtendedMetadata(entityID); if (extendedMetadata != null) { return extendedMetadata.clone(); } } return null; }
/** * Tries to locate ExtendedMetadata by trying one provider after another. Only providers implementing * ExtendedMetadataProvider are considered. * <p> * In case none of the providers can supply the extended version, the default is used. * <p> * A copy of the internal representation is always returned, modifying the returned object will not be reflected * in the subsequent calls. * * @param entityID entity ID to load extended metadata for * @return extended metadata or defaults * @throws MetadataProviderException never thrown */ public ExtendedMetadata getExtendedMetadata(String entityID) throws MetadataProviderException { try { lock.readLock().lock(); for (MetadataProvider provider : getProviders()) { ExtendedMetadata extendedMetadata = getExtendedMetadata(entityID, provider); if (extendedMetadata != null) { return extendedMetadata; } } return getDefaultExtendedMetadata().clone(); } finally { lock.readLock().unlock(); } }
@Bean BeanFactoryPostProcessor idpMetadataLoader() { return beanFactory -> { PathMatchingResourcePatternResolver metadataFilesResolver = new PathMatchingResourcePatternResolver(); try { Resource[] idpMetadataFiles = metadataFilesResolver.getResources("classpath:/idp-*.xml"); Stream.of(idpMetadataFiles).forEach(idpMetadataFile -> { try { Timer refreshTimer = new Timer(true); ResourceBackedMetadataProvider delegate = null; delegate = new ResourceBackedMetadataProvider(refreshTimer, new SpringResourceWrapperOpenSAMLResource(idpMetadataFile)); delegate.setParserPool(parserPool()); ExtendedMetadata extendedMetadata = extendedMetadata().clone(); ExtendedMetadataDelegate provider = new ExtendedMetadataDelegate(delegate, extendedMetadata); provider.setMetadataTrustCheck(true); provider.setMetadataRequireSignature(false); String idpFileName = idpMetadataFile.getFilename(); String idpName = idpFileName.substring(idpFileName.lastIndexOf("idp-") + 4, idpFileName.lastIndexOf(".xml")); extendedMetadata.setAlias(idpName); beanFactory.registerSingleton(idpName, provider); log.info("Loaded Idp Metadata bean {}: {}", idpName, idpMetadataFile); } catch (Exception e) { throw new IllegalStateException("Unable to initialize IDP Metadata", e); } }); } catch (Exception e) { throw new IllegalStateException("Unable to initialize IDP Metadata", e); } }; }
/** * Generates extended metadata. Default extendedMetadata object is cloned if present and used for defaults. * The following properties are always overriden from the properties of this bean: * discoveryUrl, discoveryResponseUrl, signingKey, encryptionKey, entityAlias and tlsKey. * Property local of the generated metadata is always set to true. * * @return generated extended metadata */ public ExtendedMetadata generateExtendedMetadata() { ExtendedMetadata metadata; if (extendedMetadata != null) { metadata = extendedMetadata.clone(); } else { metadata = new ExtendedMetadata(); } String entityBaseURL = getEntityBaseURL(); String entityAlias = getEntityAlias(); if (isIncludeDiscovery()) { metadata.setIdpDiscoveryURL(getDiscoveryURL(entityBaseURL, entityAlias)); metadata.setIdpDiscoveryResponseURL(getDiscoveryResponseURL(entityBaseURL, entityAlias)); } else { metadata.setIdpDiscoveryURL(null); metadata.setIdpDiscoveryResponseURL(null); } metadata.setLocal(true); return metadata; }