From 27852fc61818f9a96d115ffcc237ac7a2a32710a Mon Sep 17 00:00:00 2001 From: cantor Date: Tue, 3 Aug 2010 00:32:22 +0000 Subject: [PATCH] Selective generation of protocols and profile endpoints. git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/branches/REL_2@3284 cb58f699-b61c-0410-a6fe-9272a202ed29 --- configs/metagen.sh | 218 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 161 insertions(+), 57 deletions(-) diff --git a/configs/metagen.sh b/configs/metagen.sh index faf89af..ebbdbac 100755 --- a/configs/metagen.sh +++ b/configs/metagen.sh @@ -1,18 +1,45 @@ #! /bin/sh -while getopts a:c:e:h:n:o:s:t: c +SAML1=0 +SAML2=0 +ARTIFACT=0 +DS=0 +LOGOUT=0 +NAMEIDMGMT=0 + +SAML10PROT="urn:oasis:names:tc:SAML:1.0:protocol" +SAML11PROT="urn:oasis:names:tc:SAML:1.1:protocol" +SAML20PROT="urn:oasis:names:tc:SAML:2.0:protocol" + +SAML20SOAP="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" +SAML20REDIRECT="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" +SAML20POST="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" +SAML20POSTSS="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign" +SAML20ART="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" +SAML20PAOS="urn:oasis:names:tc:SAML:2.0:bindings:PAOS" + +SAML1POST="urn:oasis:names:tc:SAML:1.0:profiles:browser-post" +SAML1ART="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01" + +while getopts a:c:e:h:n:o:s:t:12ADLN c do case $c in - c) CERTS[${#CERTS[*]}]=$OPTARG;; - e) ENTITYID=$OPTARG;; - h) HOSTS[${#HOSTS[*]}]=$OPTARG;; - n) NAKEDHOSTS[${#NAKEDHOSTS[*]}]=$OPTARG;; - o) ORGNAME=$OPTARG;; - a) ADMIN[${#ADMIN[*]}]=$OPTARG;; - s) SUP[${#SUP[*]}]=$OPTARG;; - t) TECH[${#TECH[*]}]=$OPTARG;; - \?) echo metagen -c cert1 [-c cert2 ...] -h host1 [-h host2 ...] [-e entityID] - exit 1;; + c) CERTS[${#CERTS[*]}]=$OPTARG;; + e) ENTITYID=$OPTARG;; + h) HOSTS[${#HOSTS[*]}]=$OPTARG;; + n) NAKEDHOSTS[${#NAKEDHOSTS[*]}]=$OPTARG;; + o) ORGNAME=$OPTARG;; + a) ADMIN[${#ADMIN[*]}]=$OPTARG;; + s) SUP[${#SUP[*]}]=$OPTARG;; + t) TECH[${#TECH[*]}]=$OPTARG;; + 1) SAML1=1;; + 2) SAML2=1;; + A) ARTIFACT=1;; + D) DS=1;; + L) LOGOUT=1;; + N) NAMEIDMGMT=1;; + \?) echo metagen [-12ADLN] -c cert1 [-c cert2 ...] -h host1 [-h host2 ...] [-e entityID] + exit 1;; esac done @@ -37,9 +64,71 @@ if [ -z $ENTITYID ] ; then ENTITYID=https://${HOSTS[0]}/shibboleth fi +# Establish protocols and bindings. + +if [ $SAML1 -eq 0 -a $SAML2 -eq 0 ] ; then + SAML1=1 + SAML2=1 +fi + +if [ $LOGOUT -eq 1 -o $NAMEIDMGMT -eq 1 ] ; then + SAML2=1 + SLO[${#SLO[*]}]=$SAML20SOAP + SLO[${#SLO[*]}]=$SAML20REDIRECT + SLO[${#SLO[*]}]=$SAML20POST + SLOLOC[${#SLOLOC[*]}]="SOAP" + SLOLOC[${#SLOLOC[*]}]="Redirect" + SLOLOC[${#SLOLOC[*]}]="POST" + if [ $ARTIFACT -eq 1 ] ; then + SLO[${#SLO[*]}]=$SAML20ART + SLOLOC[${#SLOLOC[*]}]="Artifact" + fi +fi + +if [ $SAML1 -eq 1 -a $SAML2 -eq 1 ] ; then + PROTENUM="$SAML20PROT $SAML11PROT $SAML10PROT" +elif [ $SAML1 -eq 1 ] ; then + PROTENUM="$SAML11PROT $SAML10PROT" +else + PROTENUM="$SAML20PROT" +fi + +if [ $SAML2 -eq 1 ] ; then + ACS[${#ACS[*]}]=$SAML20POST + ACSLOC[${#ACSLOC[*]}]="SAML2/POST" + ACS[${#ACS[*]}]=$SAML20POSTSS + ACSLOC[${#ACSLOC[*]}]="SAML2/POST-SimpleSign" + if [ $ARTIFACT -eq 1 ] ; then + ACS[${#ACS[*]}]=$SAML20ART + ACSLOC[${#ACSLOC[*]}]="SAML2/Artifact" + fi + ACS[${#ACS[*]}]=$SAML20PAOS + ACSLOC[${#ACSLOC[*]}]="SAML2/ECP" +fi + +if [ $SAML1 -eq 1 ] ; then + ACS[${#ACS[*]}]=$SAML1POST + ACSLOC[${#ACSLOC[*]}]="SAML/POST" + if [ $ARTIFACT -eq 1 ] ; then + ACS[${#ACS[*]}]=$SAML1ART + ACSLOC[${#ACSLOC[*]}]="SAML/Artifact" + fi +fi + +if [ $SAML2 -eq 1 ] ; then + ACS[${#ACS[*]}]=$SAML20PAOS + ACSLOC[${#ACSLOC[*]}]="SAML2/ECP" +fi + cat < - + +EOF + +# Discovery BEGIN +if [ $DS -eq 1 ] ; then + +cat << EOF EOF @@ -64,6 +153,9 @@ cat << EOF EOF +fi +# Discovery END + for c in ${CERTS[@]} do cat << EOF @@ -81,79 +173,91 @@ cat << EOF EOF done -cat << EOF - -EOF +fi +# NameID Mgmt END -count=0 +index=0 for h in ${HOSTS[@]} do - cat < - - - - - -EOF - let "count+=6" + count=0 + while [ $count -lt ${#ACS[*]} ] + do + cat < +EOF + let "count++" + let "index++" + done done for h in ${NAKEDHOSTS[@]} do - cat < - - - - - -EOF - let "count+=6" + count=0 + while [ $count -lt ${#ACS[*]} ] + do + cat < +EOF + let "count++" + let "index++" + done done cat <