[java-idp-plugin-metadatagen] branch dev/JMETAGEN-5 updated: Inject argument object directly into Velocity.

Scott Cantor cantor.2 at osu.edu
Wed Jul 5 21:37:39 UTC 2023


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch dev/JMETAGEN-5
in repository java-idp-plugin-metadatagen.

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-plugin-metadatagen.git;a=commit;h=967133f9c4173c515678be772d9294da1efbfcf7

The following commit(s) were added to refs/heads/dev/JMETAGEN-5 by this push:
     new 967133f  Inject argument object directly into Velocity.
967133f is described below

commit 967133f9c4173c515678be772d9294da1efbfcf7
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Jul 5 17:37:36 2023 -0400

    Inject argument object directly into Velocity.
---
 metadatagen-impl/pom.xml                           |  5 +++++
 .../plugin/metadatagen/impl/MetadataGenCLI.java    | 11 ++++++++--
 .../impl/MetadataGenCommandLineArguments.java      | 24 ++++++++++++++++++++++
 .../AttributeAuthorityDescriptor.vm                |  3 +++
 .../metadatagen-templates/EntityDescriptor.vm      | 13 +++++++++---
 .../metadatagen-templates/IDPSSODescriptor.vm      |  3 +++
 .../metadatagen-templates/SPSSODescriptor.vm       |  3 +++
 7 files changed, 57 insertions(+), 5 deletions(-)

diff --git a/metadatagen-impl/pom.xml b/metadatagen-impl/pom.xml
index b288b0a..0fab6c1 100644
--- a/metadatagen-impl/pom.xml
+++ b/metadatagen-impl/pom.xml
@@ -30,6 +30,11 @@
             <artifactId>idp-admin-impl</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-cas-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
         <dependency>
             <groupId>${idp.groupId}</groupId>
             <artifactId>idp-cli</artifactId>
diff --git a/metadatagen-impl/src/main/java/net/shibboleth/idp/plugin/metadatagen/impl/MetadataGenCLI.java b/metadatagen-impl/src/main/java/net/shibboleth/idp/plugin/metadatagen/impl/MetadataGenCLI.java
index b5aa173..b69898a 100644
--- a/metadatagen-impl/src/main/java/net/shibboleth/idp/plugin/metadatagen/impl/MetadataGenCLI.java
+++ b/metadatagen-impl/src/main/java/net/shibboleth/idp/plugin/metadatagen/impl/MetadataGenCLI.java
@@ -70,6 +70,7 @@ import org.springframework.core.env.Environment;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
 
+import net.shibboleth.idp.cas.config.AbstractProtocolConfiguration;
 import net.shibboleth.idp.cli.AbstractIdPHomeAwareCommandLine;
 import net.shibboleth.idp.saml.xmlobject.ExtensionsConstants;
 import net.shibboleth.idp.saml.xmlobject.Scope;
@@ -503,15 +504,21 @@ public final class MetadataGenCLI extends AbstractIdPHomeAwareCommandLine<Metada
      */
     @Nonnull private VelocityContext getVelocityContext() {
         final VelocityContext context = new VelocityContext();
-        context.put("entityID", args.getEntityID());
-        context.put("omitNamespaces", args.isOmitNamespaces());
+        
+        context.put("args", args);
+        
+        // Namespace handling.
         if (!args.isOmitNamespaces()) {
             final Map<String,String> prefixMap = new HashMap<>();
             prefixMap.put(SAMLConstants.SAML20MD_PREFIX, SAMLConstants.SAML20MD_NS);
             prefixMap.put(SAMLConstants.SAML20_PREFIX, SAMLConstants.SAML20_NS);
             prefixMap.put(SignatureConstants.XMLSIG_PREFIX, SignatureConstants.XMLSIG_NS);
+            if (args.isOIDC()) {
+                prefixMap.put("oidcmd", "urn:mace:shibboleth:metadata:oidc:1.0");
+            }
             context.put("namespaces", prefixMap);
         }
+        
         return context;
     }
 
diff --git a/metadatagen-impl/src/main/java/net/shibboleth/idp/plugin/metadatagen/impl/MetadataGenCommandLineArguments.java b/metadatagen-impl/src/main/java/net/shibboleth/idp/plugin/metadatagen/impl/MetadataGenCommandLineArguments.java
index c5a4d8c..fc88306 100644
--- a/metadatagen-impl/src/main/java/net/shibboleth/idp/plugin/metadatagen/impl/MetadataGenCommandLineArguments.java
+++ b/metadatagen-impl/src/main/java/net/shibboleth/idp/plugin/metadatagen/impl/MetadataGenCommandLineArguments.java
@@ -23,6 +23,7 @@ import java.util.List;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.opensaml.saml.common.xml.SAMLConstants;
 import org.opensaml.saml.saml2.metadata.ArtifactResolutionService;
 import org.opensaml.saml.saml2.metadata.AssertionConsumerService;
 import org.opensaml.saml.saml2.metadata.AttributeService;
@@ -33,9 +34,11 @@ import org.slf4j.LoggerFactory;
 
 import com.beust.jcommander.Parameter;
 
+import net.shibboleth.idp.cas.config.AbstractProtocolConfiguration;
 import net.shibboleth.idp.cli.AbstractIdPHomeAwareCommandLineArguments;
 import net.shibboleth.shared.annotation.constraint.Live;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Command line arguments for Metadata Generation.
@@ -408,6 +411,27 @@ public class MetadataGenCommandLineArguments extends AbstractIdPHomeAwareCommand
     @Nullable public String getOutputFile() {
         return outputFile;
     }
+    
+    // Computed values.
+    
+    /**
+     * Compute the appropriate protocol support string.
+     * 
+     * @return the protocolSupportEnumeration constant
+     */
+    @Nonnull public String getProtocolSupportEnumeration() {
+        final List<String> protocolSupportEnum = new ArrayList<>();
+        if (isSAML2()) {
+            protocolSupportEnum.add(SAMLConstants.SAML20P_NS);
+        }
+        if (isCAS()) {
+            protocolSupportEnum.add(AbstractProtocolConfiguration.PROTOCOL_URI);
+        }
+        if (isOIDC()) {
+            protocolSupportEnum.add("http://openid.net/specs/openid-connect-core-1_0.html");
+        }
+        return StringSupport.listToStringValue(protocolSupportEnum, " ");
+    }
 
     /** {@inheritDoc} */
     @Override
diff --git a/metadatagen-impl/src/main/resources/metadatagen-templates/AttributeAuthorityDescriptor.vm b/metadatagen-impl/src/main/resources/metadatagen-templates/AttributeAuthorityDescriptor.vm
new file mode 100644
index 0000000..338d8d1
--- /dev/null
+++ b/metadatagen-impl/src/main/resources/metadatagen-templates/AttributeAuthorityDescriptor.vm
@@ -0,0 +1,3 @@
+    <md:AttributeAuthorityDescriptor protocolSupportEnumeration="$args.protocolSupportEnumeration">
+
+    </md:AttributeAuthorityDescriptor>
diff --git a/metadatagen-impl/src/main/resources/metadatagen-templates/EntityDescriptor.vm b/metadatagen-impl/src/main/resources/metadatagen-templates/EntityDescriptor.vm
index 9cf6857..49239da 100644
--- a/metadatagen-impl/src/main/resources/metadatagen-templates/EntityDescriptor.vm
+++ b/metadatagen-impl/src/main/resources/metadatagen-templates/EntityDescriptor.vm
@@ -1,6 +1,13 @@
-## Open up new EntityDescriptor
-<md:EntityDescriptor#if (!$omitNamespaces)#foreach ($ns in $namespaces.entrySet()) xmlns:$ns.key="$ns.value"#end#end entityID="${entityID}">
+<md:EntityDescriptor#if (!$args.omitNamespaces)#foreach ($ns in $namespaces.entrySet()) xmlns:$ns.key="$ns.value"#end#end entityID="$args.entityID">
 
-## All the interior bits....
+#if ($args.IDP)
+#parse("/metadatagen-templates/IDPSSODescriptor.vm")
+#end
+#if ($args.AA)
+#parse("/metadatagen-templates/AttributeAuthorityDescriptor.vm")
+#end
+#if ($args.SP)
+#parse("/metadatagen-templates/SPSSODescriptor.vm")
+#end
 
 </md:EntityDescriptor>
diff --git a/metadatagen-impl/src/main/resources/metadatagen-templates/IDPSSODescriptor.vm b/metadatagen-impl/src/main/resources/metadatagen-templates/IDPSSODescriptor.vm
new file mode 100644
index 0000000..2405eb5
--- /dev/null
+++ b/metadatagen-impl/src/main/resources/metadatagen-templates/IDPSSODescriptor.vm
@@ -0,0 +1,3 @@
+    <md:IDPSSODescriptor protocolSupportEnumeration="$args.protocolSupportEnumeration">
+
+    </md:IDPSSODescriptor>
diff --git a/metadatagen-impl/src/main/resources/metadatagen-templates/SPSSODescriptor.vm b/metadatagen-impl/src/main/resources/metadatagen-templates/SPSSODescriptor.vm
new file mode 100644
index 0000000..6971f0c
--- /dev/null
+++ b/metadatagen-impl/src/main/resources/metadatagen-templates/SPSSODescriptor.vm
@@ -0,0 +1,3 @@
+    <md:SPSSODescriptor protocolSupportEnumeration="$args.protocolSupportEnumeration">
+
+    </md:SPSSODescriptor>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list