aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java28
1 files changed, 20 insertions, 8 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java
index 71de16a97..b38b862ef 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java
@@ -1,6 +1,7 @@
package at.gv.egovernment.moa.id.protocols.pvp2x.metadata;
import java.io.File;
+import java.util.Iterator;
import java.util.List;
import javax.xml.namespace.QName;
@@ -8,6 +9,7 @@ import javax.xml.namespace.QName;
import org.opensaml.saml2.metadata.EntitiesDescriptor;
import org.opensaml.saml2.metadata.EntityDescriptor;
import org.opensaml.saml2.metadata.RoleDescriptor;
+import org.opensaml.saml2.metadata.provider.ChainingMetadataProvider;
import org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider;
import org.opensaml.saml2.metadata.provider.MetadataFilter;
import org.opensaml.saml2.metadata.provider.MetadataProvider;
@@ -17,20 +19,30 @@ import org.opensaml.xml.parse.BasicParserPool;
import at.gv.egovernment.moa.id.protocols.pvp2x.config.PVPConfiguration;
import at.gv.egovernment.moa.id.protocols.pvp2x.verification.MetadataSignatureFilter;
+import at.gv.egovernment.moa.logging.Logger;
public class MOAMetadataProvider implements MetadataProvider {
MetadataProvider internalProvider;
public MOAMetadataProvider() throws MetadataProviderException {
- FilesystemMetadataProvider fsProvider = new FilesystemMetadataProvider(
- new File(PVPConfiguration.getInstance().getMetadataFile()));
- fsProvider.setParserPool(new BasicParserPool());
- internalProvider = fsProvider;
- internalProvider.setRequireValidMetadata(true);
- MetadataFilter filter = new MetadataSignatureFilter();
- internalProvider.setMetadataFilter(filter);
- fsProvider.initialize();
+ ChainingMetadataProvider chainProvider = new ChainingMetadataProvider();
+ Logger.info("Loading metadata");
+ List<String> files = PVPConfiguration.getInstance().getMetadataFiles();
+ Iterator<String> fileIt = files.iterator();
+ while (fileIt.hasNext()) {
+ String file = fileIt.next();
+ Logger.info("Loading metadata file: " + file);
+ FilesystemMetadataProvider fsProvider = new FilesystemMetadataProvider(
+ new File(file));
+ fsProvider.setParserPool(new BasicParserPool());
+ fsProvider.setRequireValidMetadata(true);
+ MetadataFilter filter = new MetadataSignatureFilter();
+ fsProvider.setMetadataFilter(filter);
+ chainProvider.addMetadataProvider(fsProvider);
+ fsProvider.initialize();
+ }
+ internalProvider = chainProvider;
}
public boolean requireValidMetadata() {