/
Per-entity Output
Per-entity Output
This command line configuration example:
reads a file
path/to/input/aggregate.xml
containing a SAML metadata aggregatedecomposes that aggregate into its constituent entity metadata documents
signs each of those per-entity documents using a private key located in
path/to/secrets/private-key.pem
writes the results into multiple files in the directory
path/to/output
. Each file is named as a function of the entity'sentityID
attribute:the string
"_"
, followed bya lower-case, hex-encoded, SHA-1 hash of the
entityID
, followed bythe string
".xml"
You can execute the example as follows:
$ .../mda.sh per-entity.xml main
The example configuration file is as follows; it has been verified with MDA version 0.10.0-SNAPSHOT as of 2023-10-25:
<?xml version="1.0" encoding="UTF-8"?>
<beans default-init-method="initialize"
xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- Import the Standard bean definition resource. -->
<!-- See https://shibboleth.atlassian.net/wiki/spaces/MA1/pages/3162439683/Standard+bean+definition+resource -->
<import resource="classpath:net/shibboleth/metadata/beans.xml"/>
<!-- First, we define the stages for our pipeline -->
<bean id="source" parent="mda.DOMFilesystemSourceStage">
<property name="id" value="source"/>
<property name="parserPool">
<bean parent="mda.BasicParserPool"/>
</property>
<property name="source">
<bean class="java.io.File">
<constructor-arg value="path/to/input/aggregate.xml"/>
</bean>
</property>
</bean>
<bean id="disassembleEntitiesDescriptor" parent="mda.EntitiesDescriptorDisassemblerStage">
<property name="id" value="disassembleEntitiesDescriptor"/>
</bean>
<bean id="populateItemIds" parent="mda.EntityDescriptorItemIdPopulationStage">
<property name="id" value="populateItemIds"/>
</bean>
<bean id="generateContentReferenceId" parent="mda.GenerateIdStage">
<property name="id" value="generateContentReferenceId" />
</bean>
<bean id="signMetadata" parent="mda.XMLSignatureSigningStage">
<property name="id" value="signMetadata"/>
<property name="privateKey">
<bean parent="mda.PrivateKeyFactoryBean">
<property name="resource">
<bean class="org.springframework.core.io.FileSystemResource">
<constructor-arg>
<bean class="java.io.File">
<constructor-arg value="path/to/secrets/private-key.pem"/>
</bean>
</constructor-arg>
</bean>
</property>
</bean>
</property>
</bean>
<bean id="serialize" parent="mda.MultiOutputSerializationStage">
<property name="id" value="serializeIdPs"/>
<property name="serializer">
<bean id="domSerializer" parent="mda.DOMElementSerializer"/>
</property>
<property name="outputStrategy">
<bean parent="mda.FilesInDirectoryMultiOutputStrategy">
<property name="nameSuffix" value=".xml"/>
<property name="namePrefix" value="_"/>
<property name="directory">
<bean class="java.io.File">
<constructor-arg value="path/to/output"/>
</bean>
</property>
<property name="nameTransformer">
<bean parent="mda.SHA1StringTransformer"/>
</property>
</bean>
</property>
</bean>
<!-- Next we define a pipeline with all the stages in it -->
<bean id="main" parent="mda.SimplePipeline">
<property name="id" value="main"/>
<property name="stages">
<list>
<ref bean="source"/>
<ref bean="disassembleEntitiesDescriptor"/>
<ref bean="populateItemIds"/>
<ref bean="generateContentReferenceId"/>
<ref bean="signMetadata"/>
<ref bean="serialize"/>
</list>
</property>
</bean>
</beans>
, multiple selections available,
Related content
Aggregate and Republish
Aggregate and Republish
More like this
Filter Aggregate
Filter Aggregate
Read with this
Aggregate and Sign
Aggregate and Sign
More like this
Generate Discovery Feed
Generate Discovery Feed
More like this
General Configuration
General Configuration
Read with this
Configuration Examples
Configuration Examples
Read with this