diff --git a/Sources/SIS/shib-idp/bin/init-idp.sh b/Sources/SIS/shib-idp/bin/init-idp.sh
new file mode 100644
index 0000000..aa6305e
--- /dev/null
+++ b/Sources/SIS/shib-idp/bin/init-idp.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+export JAVA_HOME=/opt/jre-home
+export PATH=$PATH:$JAVA_HOME/bin
+
+cd /opt/shibboleth-idp/bin
+
+# Remove existing config to build starts with an empty config
+rm -r ../conf/
+
+echo "Please complete the following for your IdP environment:"
+./build.sh -Didp.target.dir=/opt/shibboleth-idp init gethostname askscope metadata-gen
+
+mkdir -p /ext-mount/customized-shibboleth-idp/conf/
+
+# Copy the essential and routinely customized config to out Docker mount.
+cd ..
+cp -r credentials/ /ext-mount/customized-shibboleth-idp/
+cp -r metadata/ /ext-mount/customized-shibboleth-idp/
+cp conf/{attribute-resolver.xml,attribute-filter.xml,cas-protocol.xml,idp.properties,ldap.properties,metadata-providers.xml,relying-party.xml,saml-nameid.xml} /ext-mount/customized-shibboleth-idp/conf/
+
+# Copy the basic UI components, which are routinely customized
+cp -r views/ /ext-mount/customized-shibboleth-idp/
+mkdir /ext-mount/customized-shibboleth-idp/webapp/
+cp -r webapp/css/ /ext-mount/customized-shibboleth-idp/webapp/
+cp -r webapp/images/ /ext-mount/customized-shibboleth-idp/webapp/
+cp -r webapp/js/ /ext-mount/customized-shibboleth-idp/webapp/
+rm -r /ext-mount/customized-shibboleth-idp/views/user-prefs.js
+
+echo "A basic Shibboleth IdP config and UI has been copied to ./customized-shibboleth-idp/ (assuming the default volume mapping was used)."
+echo "Most files, if not being customized can be removed from what was exported/the local Docker image and baseline files will be used."
diff --git a/Sources/SIS/shib-idp/bin/run-jetty.sh b/Sources/SIS/shib-idp/bin/run-jetty.sh
new file mode 100644
index 0000000..05a9174
--- /dev/null
+++ b/Sources/SIS/shib-idp/bin/run-jetty.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+#set -x
+
+export JAVA_HOME=/opt/jre-home
+export PATH=$PATH:$JAVA_HOME/bin
+
+if [ -e "/opt/shibboleth-idp/ext-conf/idp-secrets.properties" ]; then
+ export JETTY_BACKCHANNEL_SSL_KEYSTORE_PASSWORD=`gawk 'match($0,/^jetty.backchannel.sslContext.keyStorePassword=\s?(.*)\s?$/, a) {print a[1]}' /opt/shibboleth-idp/ext-conf/idp-secrets.properties`
+ export JETTY_BROWSER_SSL_KEYSTORE_PASSWORD=`gawk 'match($0,/^jetty\.sslContext\.keyStorePassword=\s?(.*)\s?$/, a) {print a[1]}' /opt/shibboleth-idp/ext-conf/idp-secrets.properties`
+fi
+
+export JETTY_ARGS="jetty.sslContext.keyStorePassword=$JETTY_BROWSER_SSL_KEYSTORE_PASSWORD jetty.backchannel.sslContext.keyStorePassword=$JETTY_BACKCHANNEL_SSL_KEYSTORE_PASSWORD"
+sed -i "s/^-Xmx.*$/-Xmx$JETTY_MAX_HEAP/g" /opt/shib-jetty-base/start.ini
+
+exec /etc/init.d/jetty run
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/attribute-filter.xml b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/attribute-filter.xml
new file mode 100644
index 0000000..0df6a7b
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/attribute-filter.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/attribute-resolver.xml b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/attribute-resolver.xml
new file mode 100644
index 0000000..14cf67d
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/attribute-resolver.xml
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ member
+
+
+ urn:mace:example.edu:demoservice:demo-user
+
+
+
+
+
+
+
+
+
+
+ MyDataSource
+ 0)
+ SELECT DISTINCT grouper_memberships_lw_v.group_name
+ FROM grouper.grouper_aval_asn_group_v
+ JOIN grouper.grouper_memberships_lw_v
+ USING (group_id)
+ WHERE subject_id='$uid.get(0)'
+ AND grouper_aval_asn_group_v.attribute_def_name_name='etc:attribute:ShibEntityId:ShibEntityId'
+ AND (value_string = '$requestContext.getPeerEntityId()' OR value_string='DEFAULT')
+ AND grouper_aval_asn_group_v.enabled='T'
+ ORDER BY group_name ASC;
+ #else
+ SELECT 1
+ #end
+ ]]>
+
+
+
+
+
+
+
+ MyDataSource
+ 0)
+ select givenname, surname, fullName, email from myapp_development.users where uid='$uid.get(0)'
+ #else
+ SELECT 1
+ #end
+ ]]>
+
+
+
+
+
+
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/cas-protocol.xml b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/cas-protocol.xml
new file mode 100644
index 0000000..d0b3d55
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/cas-protocol.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/global.xml b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/global.xml
new file mode 100644
index 0000000..3f709bd
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/global.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/ldap.properties b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/ldap.properties
new file mode 100644
index 0000000..2f4d905
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/ldap.properties
@@ -0,0 +1,63 @@
+# LDAP authentication configuration, see authn/ldap-authn-config.xml
+# Note, this doesn't apply to the use of JAAS
+
+## Authenticator strategy, either anonSearchAuthenticator, bindSearchAuthenticator, directAuthenticator, adAuthenticator
+idp.authn.LDAP.authenticator = bindSearchAuthenticator
+
+## Connection properties ##
+idp.authn.LDAP.ldapURL = ldap://tier-demo-ldap:389
+idp.authn.LDAP.useStartTLS = false
+idp.authn.LDAP.useSSL = false
+# Time in milliseconds that connects will block
+#idp.authn.LDAP.connectTimeout = PT3S
+# Time in milliseconds to wait for responses
+#idp.authn.LDAP.responseTimeout = PT3S
+
+## SSL configuration, either jvmTrust, certificateTrust, or keyStoreTrust
+#idp.authn.LDAP.sslConfig = certificateTrust
+## If using certificateTrust above, set to the trusted certificate's path
+idp.authn.LDAP.trustCertificates = %{idp.home}/credentials/ldap-server.crt
+## If using keyStoreTrust above, set to the truststore path
+idp.authn.LDAP.trustStore = %{idp.home}/credentials/ldap-server.truststore
+
+## Return attributes during authentication
+idp.authn.LDAP.returnAttributes = passwordExpirationTime,loginGraceRemaining
+
+## DN resolution properties ##
+
+# Search DN resolution, used by anonSearchAuthenticator, bindSearchAuthenticator
+# for AD: CN=Users,DC=example,DC=org
+idp.authn.LDAP.baseDN = ou=people,dc=example,dc=edu
+#idp.authn.LDAP.subtreeSearch = false
+idp.authn.LDAP.userFilter = (uid={user})
+# bind search configuration
+# for AD: idp.authn.LDAP.bindDN=adminuser@domain.com
+idp.authn.LDAP.bindDN = cn=admin,dc=example,dc=edu
+idp.authn.LDAP.bindDNCredential = password
+
+# Format DN resolution, used by directAuthenticator, adAuthenticator
+# for AD use idp.authn.LDAP.dnFormat=%s@domain.com
+idp.authn.LDAP.dnFormat = uid=%s,ou=people,dc=example,dc=edu
+
+# LDAP attribute configuration, see attribute-resolver.xml
+# Note, this likely won't apply to the use of legacy V2 resolver configurations
+idp.attribute.resolver.LDAP.ldapURL = %{idp.authn.LDAP.ldapURL}
+idp.attribute.resolver.LDAP.connectTimeout = %{idp.authn.LDAP.connectTimeout:PT3S}
+idp.attribute.resolver.LDAP.responseTimeout = %{idp.authn.LDAP.responseTimeout:PT3S}
+idp.attribute.resolver.LDAP.baseDN = %{idp.authn.LDAP.baseDN:undefined}
+idp.attribute.resolver.LDAP.bindDN = %{idp.authn.LDAP.bindDN:undefined}
+idp.attribute.resolver.LDAP.bindDNCredential = %{idp.authn.LDAP.bindDNCredential:undefined}
+idp.attribute.resolver.LDAP.useStartTLS = %{idp.authn.LDAP.useStartTLS:true}
+idp.attribute.resolver.LDAP.trustCertificates = %{idp.authn.LDAP.trustCertificates:undefined}
+idp.attribute.resolver.LDAP.searchFilter = (uid=$resolutionContext.principal)
+
+# LDAP pool configuration, used for both authn and DN resolution
+#idp.pool.LDAP.minSize = 3
+#idp.pool.LDAP.maxSize = 10
+#idp.pool.LDAP.validateOnCheckout = false
+#idp.pool.LDAP.validatePeriodically = true
+#idp.pool.LDAP.validatePeriod = PT5M
+#idp.pool.LDAP.prunePeriod = PT5M
+#idp.pool.LDAP.idleTime = PT10M
+#idp.pool.LDAP.blockWaitTime = PT3S
+#idp.pool.LDAP.failFastInitialize = false
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/metadata-providers.xml b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/metadata-providers.xml
new file mode 100644
index 0000000..fbd2a6d
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/metadata-providers.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/saml-nameid.xml b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/saml-nameid.xml
new file mode 100644
index 0000000..ea97448
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/conf/saml-nameid.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-backchannel.crt b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-backchannel.crt
new file mode 100644
index 0000000..ef29ec6
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-backchannel.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDDzCCAfegAwIBAgIUNhoGlKP7mWuGizduv8qofntjgygwDQYJKoZIhvcNAQEL
+BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTE3MDQxMzIxMTk1M1oXDTM3MDQx
+MzIxMTk1M1owFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEAks/QokbcrFosPTXL+i2iMFQMfZvoFxgqIXH+xxrpljrL
+sglonsbmHGuinnSeywRzfcBB6mEf3BnYzyezP0aB1GJYzItRSd4AoWAx8WblFfgM
+ununMmDpfF1dyTxZxRg/vmhN9EttVugsAoynA17RbiF4vVxx3zhNGS0u3MbaYtH1
+kYIdY9xZMR2wvDo584CQc0/20/FooPnlL0I1s2FD6LFEgvl1sux5owL0ELITSTUF
+KEkQVxpYoFZhsq6qhWQJfVvT98W4CMVpXgggQilAWAK1QgLxJtyx54Y3YruFkXsy
+Yahi04wwaQXmSHDfQbOzy8yzO65on2VjEPGid6PQvQIDAQABo1kwVzAdBgNVHQ4E
+FgQUDkHIVBHNiAcr6vQv/P+5PlKjeAcwNgYDVR0RBC8wLYIJbG9jYWxob3N0hiBo
+dHRwczovL2xvY2FsaG9zdC9pZHAvc2hpYmJvbGV0aDANBgkqhkiG9w0BAQsFAAOC
+AQEAioMgLmAx1nQwFRuiKe9zhHyl9QClOZ/qI1A/pV3QQfItxpnkjecElvpN0MLX
+ugmT0kb0tgyIUxOjHd78kSJOkFKmWPv+iSLouaU4/Y3yOW0uUWOwlExKJNegczBC
+t1OCtSAyStnYWSMUHk/Lgq4LcNKwjeaVczEbBoJO8nC/Zx0VMvLEsiCeWR+1acpT
+BHcQbEkiSJg2WS3krKt0Wq4iL+WjQhkva6zugM0Lxfkyeeg/imcn6A93zr7e6N+/
+SeKGUN2EpNRAAgEVQMVuMuKo7uFzxl2KxmkKckBG4dnDIvco/OE7khgnbNgszaqX
+xDkRFm7ZnBhVnGde7W9xjmw+eA==
+-----END CERTIFICATE-----
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-backchannel.p12 b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-backchannel.p12
new file mode 100644
index 0000000..6e4487a
Binary files /dev/null and b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-backchannel.p12 differ
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-browser.p12 b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-browser.p12
new file mode 100644
index 0000000..7c0df53
Binary files /dev/null and b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-browser.p12 differ
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-encryption.crt b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-encryption.crt
new file mode 100644
index 0000000..2f3e4a4
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-encryption.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDEDCCAfigAwIBAgIVAK/i6INNo2HZzO676jmYDSMUL8pyMA0GCSqGSIb3DQEB
+CwUAMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xNzA0MTMyMTE5NTBaFw0zNzA0
+MTMyMTE5NTBaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAJbpEl+MgBuKc4gzGni76gcQO/sa/IupoK2RRsnGEKPS
+x7q93ZCe4/TTIR8ZArk7aoTtOrV3s7xhOlvwwlUmQEhIupHtk0EDyWxXV4xK8i99
+3rqNkYcHM/C1iZfoKcoEhwQ5pBVukEgxtSIAfsN7UCE88oTRPhTHV8XJkNjw66Vl
+P1MBsO5KQaoKW/Ap86nuhDUHMNFAt/jJ2UFGhEVle4ubckBTltrZDV98m6hHYUws
+nCuRGEXusGDsqgEt93C8zRjAVhyNBNp+jQUHCBPy/6TG7AZ0TkPuQ3AxhDt34y6A
+dgSaCDmy5sI14oa1S1UagSKt8AXpzC0ao8pwqz+t8usCAwEAAaNZMFcwHQYDVR0O
+BBYEFMDqVDwUdJ6wzRLBR0jb3QdW1CFpMDYGA1UdEQQvMC2CCWxvY2FsaG9zdIYg
+aHR0cHM6Ly9sb2NhbGhvc3QvaWRwL3NoaWJib2xldGgwDQYJKoZIhvcNAQELBQAD
+ggEBAFk6YtMiqkuJXY10aeUhabGgkBdpj6RgHreBvhSmn9UTq/4EGgEWNGNYBVn6
+i9i55GzGCtp7RUAuVUTqH5V3Mbp6drUlNbVex05ypYnYM/wIq5W8EENClugPHepZ
+OX0gVUVOeayVUMRHPntNI7HicUDYVvXI/Wjhko/GLqwArNKyenmKlRo1yyedkEKF
+fhy9QowXYTvG82i3nu0JS9v/103WApXjIr3eP8LZpGpurOxyG3D+8vW3oML6C1eV
+FsLdhy3a5kOvGXbzXHn4tFdVCE3oa72FkrsDHZ8YGHb+s2JFHFRsRzDRSmBRV+LA
+3ffQkUP9K+ZGyGQijt6gAEJXcsw=
+-----END CERTIFICATE-----
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-encryption.key b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-encryption.key
new file mode 100644
index 0000000..5240e81
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-encryption.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAlukSX4yAG4pziDMaeLvqBxA7+xr8i6mgrZFGycYQo9LHur3d
+kJ7j9NMhHxkCuTtqhO06tXezvGE6W/DCVSZASEi6ke2TQQPJbFdXjEryL33euo2R
+hwcz8LWJl+gpygSHBDmkFW6QSDG1IgB+w3tQITzyhNE+FMdXxcmQ2PDrpWU/UwGw
+7kpBqgpb8Cnzqe6ENQcw0UC3+MnZQUaERWV7i5tyQFOW2tkNX3ybqEdhTCycK5EY
+Re6wYOyqAS33cLzNGMBWHI0E2n6NBQcIE/L/pMbsBnROQ+5DcDGEO3fjLoB2BJoI
+ObLmwjXihrVLVRqBIq3wBenMLRqjynCrP63y6wIDAQABAoIBABemmXGOFHm8fhTH
+ZYusb6YBvlTBSvkccYkiLoTq3KrAGvtCTFog/Lre5972zX14OV5xy3SrOOj6F+pW
+1i4AG6z4cPzzzdMvo76uBZOAH2qgAGseSsNtto8v9EtxYDM/+GUKH5QYStZ1q9yT
+VUqPpeQ/qAZ2wJMDFtdxmpjVUSkPcnSW5yGQ0kZ82gNCUC4matqwN9glyhNenYKq
+y9h+5Rj+JjP3Xyf7lzJqzyKel9qJ/aSyMpzpA4JeyVbHdAAFL4GihaBnmSBkNrX4
+DuHghMLS+WOk4EeGLRaZIatwKvSBMqeb2gyI6vPyPRxzaQd2OevGvATOsltqjmow
+5ocwAgECgYEAytEE5jKjDMRVvEC42aH2dg6QUXWirz8DmlWaF8C5FJjaJISdUmny
+pxhLZ/GyD1XwaH/RQawBYSq+HPyaUO0xIIzduxyLaZmlu/bLuA/+riLtfvdp3k3z
+j1NlPzer4MnrJ8yZfHehNDm+6tv2PcySxZyXXvW8joQZ52FymqqIsesCgYEAvnuf
+bnnA+4nH2mE+0WOziZ+yDhUQqBB4PCWdjlvHWw/iv1yCxSreS2jD8acJgbBmhOhl
+Di4pncoG4NM0182EW6VVGjEaHnTUwFoCEIjEbCSc+oo8dnsqK2gwb0XNGKI+I/OY
+uAOyP8iqYqae6cUQyHWlg5cmdRCKpc9TI6XOgwECgYEAg+VChmHP33GfP/nnPMEz
+grsd55vU3JriQPACcggHVPnCg5Uqqnn0L+6Au2xXG9oLqinVcBvoGcSuNjOgN5jJ
+Jh315MU/dMFTItXwzha4zY4xXSyRUNzo1ACsC1ytDlbB8vP/rQ4va8NSAXJixPXR
+TWn0lvDAWv5Vyj95RFQ66VkCgYA5OFupTSvapAYEJOhA8ElTk0RilJNfWSs1LjuJ
+MyrMwRXlVD34SqtiTcNmyT3C1qHFVSZePyHDQ5gTW37pQNR8z0qkRpHJCmGKsr8i
+BmOy9MCvRm1pThBZ37+E/ZvhxYMTO67pwDqAjKAaaGEealNjVGv2/qXPzrtHmeMo
+tzs1AQKBgE4zeVwa9ZzHjgAz+mkHtxdXvM1pEYa3drTqyME3eGvttwHj5JoF9P4k
+N9/BMeQqXMa5lS8Y7iL4LkTxxGS8Rld6L3WkY8XwvaMgGxsrPP8GQJp++Nt89dhB
+fd86T52Rs5vBmin6QVTmAfjleqnlk1/DIysc4vNugFTy2PWM5jB5
+-----END RSA PRIVATE KEY-----
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-signing.crt b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-signing.crt
new file mode 100644
index 0000000..7318637
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-signing.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDEDCCAfigAwIBAgIVAI427wUmgnuo//BnofLWvDbJ5LFZMA0GCSqGSIb3DQEB
+CwUAMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xNzA0MTMyMTE5NDlaFw0zNzA0
+MTMyMTE5NDlaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBANrbeJysRIIfnV4NCBkglD7TnnsBiAP8rmYMlKNzB/8P
+lh8T8A/m3ZcSfK5XOooV9HYrJ4zkPYWQfmMTc7gPohtEnVvU2T0BhqXVGItRNPq0
+W8PPyJiaf5cPTej2UU0mvEj6RXzswPmpdabti+hFMK1rwKDGAgyNz7O+ODbtUeEu
+84B4OVehjgc0DOeeIMOpCa0ZZURtGcmWa2J/2D8ONtsT6YLzrBHSjea8ahu2MnC0
+3TmQ008yWlXztWiNkccVstQ7WwT1aEon6ni608OtRLZ64UHRmaM6MZHft2DcyYgd
+bE7wArKpauLscEzAXRaSdJ4lvtgAdjneACbPbTXpvgUCAwEAAaNZMFcwHQYDVR0O
+BBYEFGIsJ7ChRjGGKOTuK+Gf79XdnhazMDYGA1UdEQQvMC2CCWxvY2FsaG9zdIYg
+aHR0cHM6Ly9sb2NhbGhvc3QvaWRwL3NoaWJib2xldGgwDQYJKoZIhvcNAQELBQAD
+ggEBACzq9+IaRqb44oWy3cX+oQUxBozCOd0dn3cAHn/7U2EAt47YLucaT66K5LYq
+VpfqYUYP7FXq9lqpYXQgUNn8DuSDroBzQIOx0YVsS4sRKMv+pTBr6WqrIcbDB9Np
+VHqdIxIDD9kxwy8eTEKmeDmjl6ZjGnxa8WjwP6PFXBWJI/vQvxNACqnThIsoKLGv
+KPta+ROPrtMMbphsVyHClHlLWp/r015B545FBiasFW+jHzS0/pc8eknNafQ2+chX
+GPNfHvJXgg3kDHtW6bydWnWIcCKqaTHFSObgEivuMoCJ0cZVjVEFIpzB3J71qMkc
+SJ5zygjKVMFLsbAkzGUFYG1DbBM=
+-----END CERTIFICATE-----
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-signing.key b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-signing.key
new file mode 100644
index 0000000..ebc8880
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/idp-signing.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpQIBAAKCAQEA2tt4nKxEgh+dXg0IGSCUPtOeewGIA/yuZgyUo3MH/w+WHxPw
+D+bdlxJ8rlc6ihX0disnjOQ9hZB+YxNzuA+iG0SdW9TZPQGGpdUYi1E0+rRbw8/I
+mJp/lw9N6PZRTSa8SPpFfOzA+al1pu2L6EUwrWvAoMYCDI3Ps744Nu1R4S7zgHg5
+V6GOBzQM554gw6kJrRllRG0ZyZZrYn/YPw422xPpgvOsEdKN5rxqG7YycLTdOZDT
+TzJaVfO1aI2RxxWy1DtbBPVoSifqeLrTw61EtnrhQdGZozoxkd+3YNzJiB1sTvAC
+sqlq4uxwTMBdFpJ0niW+2AB2Od4AJs9tNem+BQIDAQABAoIBAQDFNE949S0CB1S4
+g4uRgK6z8eFyuw2BcjT/VUS2Bxfkd3nw5PlCiueOkiTwvz7LYD8YH4iSxrK84FdS
+FRwHdWa/pVMZhTB+bRqT4PEtz+2qHcw2I8t/3m8rganVSeY2W7n7FDB7AaZdEJon
+4RJZJ8dV7Kr085azEzFdqABlVfCasxX8SdG6XyTiSRBla1SHhw7DB1OYphWTHob5
+1NOM3GYefgI+hcMnCFDNyXJcdyYoHAMqt6dVbJjMFO5yu0AcSI5gxtNpU6bG7E36
+Bm/hGUG1WYdl1EkWFfogo0Fw0Sm9h4hZDyYgm0j/ZCdGh8PI6JSR2Dbs41aPpzHu
+9IFDnFqBAoGBAPTSKSLqDMiEQxyTFhkxnvZE6p7z27UW6sf9wwncEkM8bB9FmnZs
+/5x/HRnBjsQMxoYeKX+5w7XRo2qlAmAwo4wGAipkEswzqYmKIxXZaL1VquJ9zQWa
+G5nY6ybARLW2JEtod3rnqXYqL7/OkS5QN4JRkm/KWxOYWlXpYUwNOzohAoGBAOTZ
+zt1BjfXCWK3I1HmJRo2qLgJMqLlM9umOLFQ734xYbA7V9f5oMzjAUBSwT8v/Ls1F
+DTVdDOKroBpivhRkk5S3SRpuoNQhIJXIsqv91NPSDF3hXQyTU4F+ar5T19BWU5oz
+wS+LbIjHgY00517fwd4662c0Ib54RXZtI+lvZ+9lAoGBAIftg595+Zz/Kk/cLoHQ
+diTfwLB+TrctwS9G6po30P/5tUJrn8Yu4IDgZqTdPcoGGddvObVLy6jQe34Dnd0Q
+RE3DLEKjC3jLGk9eHfrMmgW9YcKc/E8m8DosIOuEBuIo/d/MYcIgi4srAxXot9zR
+9u/pIHfnD0hC560Zhcb29bJhAoGAYGw5EdZWFu9M5+QPSioB1RyYCBX+nRyFiECE
+AvW7KenzlYim/gsvUcENvLnQ1VXuhUSL3SkYjcTcT2G9TuBVojpbjcyA7QAMN6/5
+QChR7PG6ji+vQeYtMAlwtkKjUr+cuAMIaZzoHPVaa4GX3syOZbETkEdR1GvecJhp
+oihzdVUCgYEAqkMNBgZuVKaQA0WbrQvVfOp657kGFObvVu/lzCVHhGw83MN6kCUP
+cIMhZGxaBpSdXY4LqYnqP5A/NYMbpB+SHve5kMxTd5bGqmZRjleR2z5sH/nlGucP
+YTo0H8nFFUzK5h5Xi4X/uYMlv1o/7TqdCUfPCfVLRN0ZKv28N1C/11o=
+-----END RSA PRIVATE KEY-----
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/jetty.crt b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/jetty.crt
new file mode 100644
index 0000000..7a58283
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/jetty.crt
@@ -0,0 +1,28 @@
+-----BEGIN CERTIFICATE-----
+MIIErTCCA5WgAwIBAgIJAOSlrj6xJUHHMA0GCSqGSIb3DQEBCwUAMIGVMQswCQYD
+VQQGEwJVUzELMAkGA1UECBMCV0kxEDAOBgNVBAcTB01hZGlzb24xGDAWBgNVBAoT
+D1RJRVIgVW5pdmVyc2l0eTESMBAGA1UECxMJSW50ZXJuZXQyMRIwEAYDVQQDEwls
+b2NhbGhvc3QxJTAjBgkqhkiG9w0BCQEWFnRpZXItYXBpQGludGVybmV0Mi5lZHUw
+HhcNMTcwNDEzMjE0MzA5WhcNMTcwNTEzMjE0MzA5WjCBlTELMAkGA1UEBhMCVVMx
+CzAJBgNVBAgTAldJMRAwDgYDVQQHEwdNYWRpc29uMRgwFgYDVQQKEw9USUVSIFVu
+aXZlcnNpdHkxEjAQBgNVBAsTCUludGVybmV0MjESMBAGA1UEAxMJbG9jYWxob3N0
+MSUwIwYJKoZIhvcNAQkBFhZ0aWVyLWFwaUBpbnRlcm5ldDIuZWR1MIIBIjANBgkq
+hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqwTB3FgmlPOh/aw3wgD3xWxbVxLdsEQ5
+2py0IjLVEfFZyzXMIVjtzhS+9m3U5ER9L9XnXlHZTT46rb3M3f74o8/46xr7KGOb
+CVRqhjqWErjiYgGwbVoq1UuC1+AvRXX4adqTuIFaUL4ITMHxlm5v/bhPO9RKdUmK
+P9PRNdHeZLpMzo5uKINQUFt3DDI+Xf52fiLj7MbLvrVaabZBNRcwm+atSNai8RGn
+6bKC2L5dX9QxQ6JQ/uIUYawHETPEeoPsNkCcxq6VLJKNEpR7Dlt78mpty/N0M3y9
+3h8qODjI6XbL30Ug1iBOI4sum688YhePY/t3VCrWOwkEvffZcDAbRwIDAQABo4H9
+MIH6MB0GA1UdDgQWBBTXvg4SGbM+edkQP4ejVF3T2EPPpTCBygYDVR0jBIHCMIG/
+gBTXvg4SGbM+edkQP4ejVF3T2EPPpaGBm6SBmDCBlTELMAkGA1UEBhMCVVMxCzAJ
+BgNVBAgTAldJMRAwDgYDVQQHEwdNYWRpc29uMRgwFgYDVQQKEw9USUVSIFVuaXZl
+cnNpdHkxEjAQBgNVBAsTCUludGVybmV0MjESMBAGA1UEAxMJbG9jYWxob3N0MSUw
+IwYJKoZIhvcNAQkBFhZ0aWVyLWFwaUBpbnRlcm5ldDIuZWR1ggkA5KWuPrElQccw
+DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAZUN0cEMk61Okf8n+R4W1
+hpVgs7q7cpn77OfCG0d8X5mP+NMzrBCFTwHGpTK2FJAM4/B87Im81F9ydPXPCoVN
+dkldZddDU6ZcSwlxQQda/lwoosPu2xX3gE6dkrSV8lNvUAHq3b/RyFG3glU17NUB
+EtWP8iDpu2d6LuoBmlhSmA+6TsHxynU1wduNOIkDXisGJF19hExiR9ypEDCITvp3
+rfhiXaakPLTLcuVlwTpc1HUwmFQ4yWTH1pxid7ykjN1QRV2rP98RYCubrDpkd7bY
+ApwKcoTbcMmfabl13RvDlrrw9srBk4BDVsBTF2TQtFwBlMl1ZzXW1mkKJ/S22/7t
+JQ==
+-----END CERTIFICATE-----
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/jetty.key b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/jetty.key
new file mode 100644
index 0000000..e6448e8
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/jetty.key
@@ -0,0 +1,30 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,69574AB259C87F77
+
+rViCFIARC3FSSYAyrxeTvbow6OcpiWBs/aPJulxYsuJ0FE8QKwFSeBYkt+fP+5bs
+x/9OXImLaOgmcDc72URhlhqDF2bNGQJA/dorkUhe4v7co8kV/o1lGoCnF2irBOD7
+3IDv5SJUzveeocW9GCc5mng1YIHNmHh7rCQScAc17mVUEBWwvx46tQP2BNMA6VoP
+dVyfCJ/3UoCPCFwel74EMmh9dC7HyTgt/KweBZIEE17jxLFirS1VwKuZ4idDvXKL
+5ZvHkXV73OL8UVgWzgCfyKtKlaiZDq4L9/zgjfPK0+35thihzvOum0fB/m4hVDV9
+8iqcLBScRjWLJKfSANWsj/pQC6waXB2oXq/ulOT221EnUDRkITRp/RdkfDSPMNxj
+1X7/tVQhFF+Dle+909FRWHt43jK4edRJnMp982lF9YXGcZVe6D30tOomhTR8ABO/
+ANR0SmoR+M8oBTZOPGeTlE5UjzN24QSGFsLwj6ucuARfZU++NppYYe6TwKivxQow
+YmoK6QUsLHQthHUYwPB8ohZgP7YXrFZGxZvQFGehrl4JLdAgsQfm4QhcXBjkIrLA
+geaZZT9eopy+36adYlsAII4vVpl5YM1wDTF44IsofJYJj67OYF4qbCUmOe4pls9g
+lg8vq2C/fJRfWTb+F7q55/VbsHhvEvQtYnXLIlR8pzpDq9UxYOL6coxpBGvjJ8hh
+rmeEMqIpbFs5KjxbLN+AK6ZMi7V2q9neI7mHM98WpGuifdVltTa//qt3IwJl8xA2
+PxqYAZ0Mu87o5yKvKg/yoPHKAjx/OleUUckSH0IZ3Bh+xiaQi9TmcR3ohzFgBxgK
+TLXw//WjQZlVyIe/FS1JmeCnxT0WMAG/YZFxfrzFDRjYSRgMAAEHl26fFqODBjGF
+nnVM2jWwihWCt3gCOmbg+XuoXuWdWEYq2g0rvgn4J2YUmUQe5MEk/yzx+eBBtoZd
+4M/ji3GbxShvvPyerkC0GajrWKfr9uJaomFzAvwP2PVsbeLppDLz6px9hu0wdpeD
+ECVIPh85QH6/8prvSLsH9amaURhDHxhbI1XXAFqF4HpaAsQ5y2ZY6Y8O29I0onYR
+5qisReWIp/NB5cc8aRcyrOPCyxKGEKmsZk09nINwPMl4Kr6RWMQDIV+8F8AGSc/n
+bY8gPZYB5yZfZgPkd5J235JxsF6gJuoM4fV6S3WPeqPCabhTJ1ES5N6ZMynDalQh
+2jTYqGhLAKGPqHxNsok+Lr3+u4F+Y7AhK5MW6qIYWx4Gw0upon1PZCCUfyASUn5Z
+5EyicZvpRLY4UNnRFDjnsB5xdEay9GwJq9qLGicnfCE1Wf5gQEoU7Sk/7hDcEMVk
+6X4Z0XC549r6x8B/+IqVgPMbvdJRl8mYuNUluNQmKgsp4Qv7T3GiJGSISyN3GKlW
+AjXKAQ3ucBwfXo0ZRt86/Vdtd8hhMfXqoGLWELiLHDP+ey7nTcSQkTvQrpuergi3
+yx5qs65b3Z2+pxpGltos8YSyJGpgbKkD1n5bWf5TWbv3q1cZ/TyY7fD/aHdK/cGK
+CKmojrQ65VT6MALnmjoqftRvgq0bpvfhWiQCG8EFD99kv1toh1gDGQ==
+-----END RSA PRIVATE KEY-----
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/sealer.jks b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/sealer.jks
new file mode 100644
index 0000000..b015c5e
Binary files /dev/null and b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/sealer.jks differ
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/sealer.kver b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/sealer.kver
new file mode 100644
index 0000000..189c664
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/credentials/sealer.kver
@@ -0,0 +1,2 @@
+#Thu Apr 13 21:19:57 UTC 2017
+CurrentVersion=1
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/metadata/idp-metadata.xml b/Sources/SIS/shib-idp/customized-shibboleth-idp/metadata/idp-metadata.xml
new file mode 100644
index 0000000..746ba46
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/metadata/idp-metadata.xml
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+ example.edu
+
+
+
+
+
+
+
+MIIDDzCCAfegAwIBAgIUNhoGlKP7mWuGizduv8qofntjgygwDQYJKoZIhvcNAQEL
+BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTE3MDQxMzIxMTk1M1oXDTM3MDQx
+MzIxMTk1M1owFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEAks/QokbcrFosPTXL+i2iMFQMfZvoFxgqIXH+xxrpljrL
+sglonsbmHGuinnSeywRzfcBB6mEf3BnYzyezP0aB1GJYzItRSd4AoWAx8WblFfgM
+ununMmDpfF1dyTxZxRg/vmhN9EttVugsAoynA17RbiF4vVxx3zhNGS0u3MbaYtH1
+kYIdY9xZMR2wvDo584CQc0/20/FooPnlL0I1s2FD6LFEgvl1sux5owL0ELITSTUF
+KEkQVxpYoFZhsq6qhWQJfVvT98W4CMVpXgggQilAWAK1QgLxJtyx54Y3YruFkXsy
+Yahi04wwaQXmSHDfQbOzy8yzO65on2VjEPGid6PQvQIDAQABo1kwVzAdBgNVHQ4E
+FgQUDkHIVBHNiAcr6vQv/P+5PlKjeAcwNgYDVR0RBC8wLYIJbG9jYWxob3N0hiBo
+dHRwczovL2xvY2FsaG9zdC9pZHAvc2hpYmJvbGV0aDANBgkqhkiG9w0BAQsFAAOC
+AQEAioMgLmAx1nQwFRuiKe9zhHyl9QClOZ/qI1A/pV3QQfItxpnkjecElvpN0MLX
+ugmT0kb0tgyIUxOjHd78kSJOkFKmWPv+iSLouaU4/Y3yOW0uUWOwlExKJNegczBC
+t1OCtSAyStnYWSMUHk/Lgq4LcNKwjeaVczEbBoJO8nC/Zx0VMvLEsiCeWR+1acpT
+BHcQbEkiSJg2WS3krKt0Wq4iL+WjQhkva6zugM0Lxfkyeeg/imcn6A93zr7e6N+/
+SeKGUN2EpNRAAgEVQMVuMuKo7uFzxl2KxmkKckBG4dnDIvco/OE7khgnbNgszaqX
+xDkRFm7ZnBhVnGde7W9xjmw+eA==
+
+
+
+
+
+
+
+
+
+MIIDEDCCAfigAwIBAgIVAI427wUmgnuo//BnofLWvDbJ5LFZMA0GCSqGSIb3DQEB
+CwUAMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xNzA0MTMyMTE5NDlaFw0zNzA0
+MTMyMTE5NDlaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBANrbeJysRIIfnV4NCBkglD7TnnsBiAP8rmYMlKNzB/8P
+lh8T8A/m3ZcSfK5XOooV9HYrJ4zkPYWQfmMTc7gPohtEnVvU2T0BhqXVGItRNPq0
+W8PPyJiaf5cPTej2UU0mvEj6RXzswPmpdabti+hFMK1rwKDGAgyNz7O+ODbtUeEu
+84B4OVehjgc0DOeeIMOpCa0ZZURtGcmWa2J/2D8ONtsT6YLzrBHSjea8ahu2MnC0
+3TmQ008yWlXztWiNkccVstQ7WwT1aEon6ni608OtRLZ64UHRmaM6MZHft2DcyYgd
+bE7wArKpauLscEzAXRaSdJ4lvtgAdjneACbPbTXpvgUCAwEAAaNZMFcwHQYDVR0O
+BBYEFGIsJ7ChRjGGKOTuK+Gf79XdnhazMDYGA1UdEQQvMC2CCWxvY2FsaG9zdIYg
+aHR0cHM6Ly9sb2NhbGhvc3QvaWRwL3NoaWJib2xldGgwDQYJKoZIhvcNAQELBQAD
+ggEBACzq9+IaRqb44oWy3cX+oQUxBozCOd0dn3cAHn/7U2EAt47YLucaT66K5LYq
+VpfqYUYP7FXq9lqpYXQgUNn8DuSDroBzQIOx0YVsS4sRKMv+pTBr6WqrIcbDB9Np
+VHqdIxIDD9kxwy8eTEKmeDmjl6ZjGnxa8WjwP6PFXBWJI/vQvxNACqnThIsoKLGv
+KPta+ROPrtMMbphsVyHClHlLWp/r015B545FBiasFW+jHzS0/pc8eknNafQ2+chX
+GPNfHvJXgg3kDHtW6bydWnWIcCKqaTHFSObgEivuMoCJ0cZVjVEFIpzB3J71qMkc
+SJ5zygjKVMFLsbAkzGUFYG1DbBM=
+
+
+
+
+
+
+
+
+
+MIIDEDCCAfigAwIBAgIVAK/i6INNo2HZzO676jmYDSMUL8pyMA0GCSqGSIb3DQEB
+CwUAMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xNzA0MTMyMTE5NTBaFw0zNzA0
+MTMyMTE5NTBaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAJbpEl+MgBuKc4gzGni76gcQO/sa/IupoK2RRsnGEKPS
+x7q93ZCe4/TTIR8ZArk7aoTtOrV3s7xhOlvwwlUmQEhIupHtk0EDyWxXV4xK8i99
+3rqNkYcHM/C1iZfoKcoEhwQ5pBVukEgxtSIAfsN7UCE88oTRPhTHV8XJkNjw66Vl
+P1MBsO5KQaoKW/Ap86nuhDUHMNFAt/jJ2UFGhEVle4ubckBTltrZDV98m6hHYUws
+nCuRGEXusGDsqgEt93C8zRjAVhyNBNp+jQUHCBPy/6TG7AZ0TkPuQ3AxhDt34y6A
+dgSaCDmy5sI14oa1S1UagSKt8AXpzC0ao8pwqz+t8usCAwEAAaNZMFcwHQYDVR0O
+BBYEFMDqVDwUdJ6wzRLBR0jb3QdW1CFpMDYGA1UdEQQvMC2CCWxvY2FsaG9zdIYg
+aHR0cHM6Ly9sb2NhbGhvc3QvaWRwL3NoaWJib2xldGgwDQYJKoZIhvcNAQELBQAD
+ggEBAFk6YtMiqkuJXY10aeUhabGgkBdpj6RgHreBvhSmn9UTq/4EGgEWNGNYBVn6
+i9i55GzGCtp7RUAuVUTqH5V3Mbp6drUlNbVex05ypYnYM/wIq5W8EENClugPHepZ
+OX0gVUVOeayVUMRHPntNI7HicUDYVvXI/Wjhko/GLqwArNKyenmKlRo1yyedkEKF
+fhy9QowXYTvG82i3nu0JS9v/103WApXjIr3eP8LZpGpurOxyG3D+8vW3oML6C1eV
+FsLdhy3a5kOvGXbzXHn4tFdVCE3oa72FkrsDHZ8YGHb+s2JFHFRsRzDRSmBRV+LA
+3ffQkUP9K+ZGyGQijt6gAEJXcsw=
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ example.edu
+
+
+
+
+
+
+MIIDDzCCAfegAwIBAgIUNhoGlKP7mWuGizduv8qofntjgygwDQYJKoZIhvcNAQEL
+BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTE3MDQxMzIxMTk1M1oXDTM3MDQx
+MzIxMTk1M1owFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEAks/QokbcrFosPTXL+i2iMFQMfZvoFxgqIXH+xxrpljrL
+sglonsbmHGuinnSeywRzfcBB6mEf3BnYzyezP0aB1GJYzItRSd4AoWAx8WblFfgM
+ununMmDpfF1dyTxZxRg/vmhN9EttVugsAoynA17RbiF4vVxx3zhNGS0u3MbaYtH1
+kYIdY9xZMR2wvDo584CQc0/20/FooPnlL0I1s2FD6LFEgvl1sux5owL0ELITSTUF
+KEkQVxpYoFZhsq6qhWQJfVvT98W4CMVpXgggQilAWAK1QgLxJtyx54Y3YruFkXsy
+Yahi04wwaQXmSHDfQbOzy8yzO65on2VjEPGid6PQvQIDAQABo1kwVzAdBgNVHQ4E
+FgQUDkHIVBHNiAcr6vQv/P+5PlKjeAcwNgYDVR0RBC8wLYIJbG9jYWxob3N0hiBo
+dHRwczovL2xvY2FsaG9zdC9pZHAvc2hpYmJvbGV0aDANBgkqhkiG9w0BAQsFAAOC
+AQEAioMgLmAx1nQwFRuiKe9zhHyl9QClOZ/qI1A/pV3QQfItxpnkjecElvpN0MLX
+ugmT0kb0tgyIUxOjHd78kSJOkFKmWPv+iSLouaU4/Y3yOW0uUWOwlExKJNegczBC
+t1OCtSAyStnYWSMUHk/Lgq4LcNKwjeaVczEbBoJO8nC/Zx0VMvLEsiCeWR+1acpT
+BHcQbEkiSJg2WS3krKt0Wq4iL+WjQhkva6zugM0Lxfkyeeg/imcn6A93zr7e6N+/
+SeKGUN2EpNRAAgEVQMVuMuKo7uFzxl2KxmkKckBG4dnDIvco/OE7khgnbNgszaqX
+xDkRFm7ZnBhVnGde7W9xjmw+eA==
+
+
+
+
+
+
+
+
+
+MIIDEDCCAfigAwIBAgIVAI427wUmgnuo//BnofLWvDbJ5LFZMA0GCSqGSIb3DQEB
+CwUAMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xNzA0MTMyMTE5NDlaFw0zNzA0
+MTMyMTE5NDlaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBANrbeJysRIIfnV4NCBkglD7TnnsBiAP8rmYMlKNzB/8P
+lh8T8A/m3ZcSfK5XOooV9HYrJ4zkPYWQfmMTc7gPohtEnVvU2T0BhqXVGItRNPq0
+W8PPyJiaf5cPTej2UU0mvEj6RXzswPmpdabti+hFMK1rwKDGAgyNz7O+ODbtUeEu
+84B4OVehjgc0DOeeIMOpCa0ZZURtGcmWa2J/2D8ONtsT6YLzrBHSjea8ahu2MnC0
+3TmQ008yWlXztWiNkccVstQ7WwT1aEon6ni608OtRLZ64UHRmaM6MZHft2DcyYgd
+bE7wArKpauLscEzAXRaSdJ4lvtgAdjneACbPbTXpvgUCAwEAAaNZMFcwHQYDVR0O
+BBYEFGIsJ7ChRjGGKOTuK+Gf79XdnhazMDYGA1UdEQQvMC2CCWxvY2FsaG9zdIYg
+aHR0cHM6Ly9sb2NhbGhvc3QvaWRwL3NoaWJib2xldGgwDQYJKoZIhvcNAQELBQAD
+ggEBACzq9+IaRqb44oWy3cX+oQUxBozCOd0dn3cAHn/7U2EAt47YLucaT66K5LYq
+VpfqYUYP7FXq9lqpYXQgUNn8DuSDroBzQIOx0YVsS4sRKMv+pTBr6WqrIcbDB9Np
+VHqdIxIDD9kxwy8eTEKmeDmjl6ZjGnxa8WjwP6PFXBWJI/vQvxNACqnThIsoKLGv
+KPta+ROPrtMMbphsVyHClHlLWp/r015B545FBiasFW+jHzS0/pc8eknNafQ2+chX
+GPNfHvJXgg3kDHtW6bydWnWIcCKqaTHFSObgEivuMoCJ0cZVjVEFIpzB3J71qMkc
+SJ5zygjKVMFLsbAkzGUFYG1DbBM=
+
+
+
+
+
+
+
+
+
+MIIDEDCCAfigAwIBAgIVAK/i6INNo2HZzO676jmYDSMUL8pyMA0GCSqGSIb3DQEB
+CwUAMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xNzA0MTMyMTE5NTBaFw0zNzA0
+MTMyMTE5NTBaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAJbpEl+MgBuKc4gzGni76gcQO/sa/IupoK2RRsnGEKPS
+x7q93ZCe4/TTIR8ZArk7aoTtOrV3s7xhOlvwwlUmQEhIupHtk0EDyWxXV4xK8i99
+3rqNkYcHM/C1iZfoKcoEhwQ5pBVukEgxtSIAfsN7UCE88oTRPhTHV8XJkNjw66Vl
+P1MBsO5KQaoKW/Ap86nuhDUHMNFAt/jJ2UFGhEVle4ubckBTltrZDV98m6hHYUws
+nCuRGEXusGDsqgEt93C8zRjAVhyNBNp+jQUHCBPy/6TG7AZ0TkPuQ3AxhDt34y6A
+dgSaCDmy5sI14oa1S1UagSKt8AXpzC0ao8pwqz+t8usCAwEAAaNZMFcwHQYDVR0O
+BBYEFMDqVDwUdJ6wzRLBR0jb3QdW1CFpMDYGA1UdEQQvMC2CCWxvY2FsaG9zdIYg
+aHR0cHM6Ly9sb2NhbGhvc3QvaWRwL3NoaWJib2xldGgwDQYJKoZIhvcNAQELBQAD
+ggEBAFk6YtMiqkuJXY10aeUhabGgkBdpj6RgHreBvhSmn9UTq/4EGgEWNGNYBVn6
+i9i55GzGCtp7RUAuVUTqH5V3Mbp6drUlNbVex05ypYnYM/wIq5W8EENClugPHepZ
+OX0gVUVOeayVUMRHPntNI7HicUDYVvXI/Wjhko/GLqwArNKyenmKlRo1yyedkEKF
+fhy9QowXYTvG82i3nu0JS9v/103WApXjIr3eP8LZpGpurOxyG3D+8vW3oML6C1eV
+FsLdhy3a5kOvGXbzXHn4tFdVCE3oa72FkrsDHZ8YGHb+s2JFHFRsRzDRSmBRV+LA
+3ffQkUP9K+ZGyGQijt6gAEJXcsw=
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/metadata/web-app.xml b/Sources/SIS/shib-idp/customized-shibboleth-idp/metadata/web-app.xml
new file mode 100644
index 0000000..0aeeee1
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/metadata/web-app.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TIER API and Ent Reg Working Group
+ tier-api@internet2.edu
+
+
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/client-storage/client-storage-read.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/client-storage/client-storage-read.vm
new file mode 100644
index 0000000..1993c14
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/client-storage/client-storage-read.vm
@@ -0,0 +1,53 @@
+##
+## Velocity template to read from local storage.
+##
+## Velocity context will contain the following properties
+## flowExecutionUrl - the form action location
+## flowRequestContext - the Spring Web Flow RequestContext
+## flowExecutionKey - the SWF execution key (this is built into the flowExecutionUrl)
+## profileRequestContext - root of context tree
+## loadContext - context with details about the storage keys to load
+## encoder - HTMLEncoder class
+## request - HttpServletRequest
+## response - HttpServletResponse
+## environment - Spring Environment object for property resolution
+#set ($title = $springMacroRequestContext.getMessage("idp.title", "Web Login Service"))
+#set ($titleSuffix = $springMacroRequestContext.getMessage("idp.client-storage-read.suffix", "Loading Session Information"))
+##
+
+
+
+
+
+ $title - $titleSuffix
+
+
+
+
+
+
+
+
$title - $titleSuffix
+
+
+ $springMacroRequestContext.getMessage("idp.client-storage-read.text", "Loading login session information from the browser...")
+
+
+ #parse( "client-storage/read.vm" )
+
+
+
+
+
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/client-storage/client-storage-write.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/client-storage/client-storage-write.vm
new file mode 100644
index 0000000..4b92d6b
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/client-storage/client-storage-write.vm
@@ -0,0 +1,53 @@
+##
+## Velocity template to write to local storage.
+##
+## Velocity context will contain the following properties
+## flowExecutionUrl - the form action location
+## flowRequestContext - the Spring Web Flow RequestContext
+## flowExecutionKey - the SWF execution key (this is built into the flowExecutionUrl)
+## profileRequestContext - root of context tree
+## saveContext - context with details about the storage data to save
+## encoder - HTMLEncoder class
+## request - HttpServletRequest
+## response - HttpServletResponse
+## environment - Spring Environment object for property resolution
+#set ($title = $springMacroRequestContext.getMessage("idp.title", "Web Login Service"))
+#set ($titleSuffix = $springMacroRequestContext.getMessage("idp.client-storage-write.suffix", "Saving Session Information..."))
+##
+
+
+
+
+
+ $title - $titleSuffix
+
+
+
+
+
+
+
+
$title - $titleSuffix
+
+
+ $springMacroRequestContext.getMessage("idp.client-storage-write.text", "Saving login session information to the browser...")
+
+
+ #parse( "client-storage/write.vm" )
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/duo.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/duo.vm
new file mode 100644
index 0000000..cf4f96a
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/duo.vm
@@ -0,0 +1,83 @@
+##
+## Velocity Template for Duo login view-state
+##
+## Velocity context will contain the following properties
+## flowExecutionUrl - the form action location
+## flowRequestContext - the Spring Web Flow RequestContext
+## flowExecutionKey - the SWF execution key (this is built into the flowExecutionUrl)
+## profileRequestContext - root of context tree
+## authenticationContext - context with authentication request information
+## rpUIContext - the context with SP UI information from the metadata
+## canonicalUsername - name of user passed to Duo
+## duoHost - API hostname for Duo frame
+## duoRequest - signed Duo request message
+## duoScriptPath - path to Duo JavaScript source
+## encoder - HTMLEncoder class
+## request - HttpServletRequest
+## response - HttpServletResponse
+## environment - Spring Environment object for property resolution
+## custom - arbitrary object injected by deployer
+##
+
+
+
+
+
+
+ #springMessageText("idp.title", "Web Login Service")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#springMessageText("idp.login.duoRequired", "Authentication with Duo is required for the requested service.")
+
+
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/error.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/error.vm
new file mode 100644
index 0000000..dcb8e2b
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/error.vm
@@ -0,0 +1,73 @@
+##
+## Velocity Template for error end-state
+##
+## Velocity context will contain the following properties
+## flowRequestContext - the Spring Web Flow RequestContext
+## profileRequestContext - root of context tree
+## encoder - HTMLEncoder class
+## request - HttpServletRequest
+## response - HttpServletResponse
+## environment - Spring Environment object for property resolution
+## custom - arbitrary object injected by deployer
+##
+#set ($title = $springMacroRequestContext.getMessage("idp.title", "Web Login Service"))
+#set ($defaultTitleSuffix = $springMacroRequestContext.getMessage("idp.title.suffix", "Error"))
+##
+#if ($flowRequestContext)
+ ## This handles flow events, the most common case.
+ #set ($eventId = $flowRequestContext.getCurrentEvent().getId())
+ #set ($eventKey = $springMacroRequestContext.getMessage("$eventId", "error"))
+ #set ($titleSuffix = $springMacroRequestContext.getMessage("${eventKey}.title", "$defaultTitleSuffix"))
+ #set ($message = $springMacroRequestContext.getMessage("${eventKey}.message", "$defaultTitleSuffix: $eventId"))
+ #if ($eventId == "AccessDenied" or $eventId == "ContextCheckDenied")
+ $response.setStatus(403)
+ #elseif ($eventId == "AttributeReleaseRejected" || $eventId == "TermsRejected")
+ $response.setStatus(200)
+ #elseif ($eventKey == "unexpected" || $eventKey == "runtime-error" || $eventKey == "error")
+ $response.setStatus(500)
+ #else
+ $response.setStatus(400)
+ #end
+#elseif ($exception)
+ ## This handles exceptions that reach the Spring-MVC exception handler.
+ #set ($eventId = $exception.getClass().getSimpleName())
+ #set ($eventKey = $springMacroRequestContext.getMessage("$eventId", "error"))
+ #set ($titleSuffix = $springMacroRequestContext.getMessage("${eventKey}.title", "$defaultTitleSuffix"))
+ #set ($message = $springMacroRequestContext.getMessage("${eventKey}.message", "$defaultTitleSuffix: $eventId"))
+#else
+ ## This is a catch-all that theoretically shouldn't happen?
+ #set ($titleSuffix = $defaultTitleSuffix)
+ #set ($message = $springMacroRequestContext.getMessage("idp.message", "An unidentified error occurred."))
+#end
+##
+
+
+
+
+
+ $title - $titleSuffix
+
+
+
+
+
+
+
+
+
$title - $titleSuffix
+
+
+
+ #evaluate($message)
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/intercept/attribute-release.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/intercept/attribute-release.vm
new file mode 100644
index 0000000..0b74551
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/intercept/attribute-release.vm
@@ -0,0 +1,158 @@
+##
+## Velocity Template for DisplayAttributeReleasePage view-state
+##
+## Velocity context will contain the following properties :
+##
+## attributeReleaseContext - context holding consentable attributes
+## attributeReleaseFlowDescriptor - attribute consent flow descriptor
+## attributeDisplayNameFunction - function to display attribute name
+## consentContext - context representing the state of a consent flow
+## encoder - HTMLEncoder class
+## flowExecutionKey - SWF execution key (this is built into the flowExecutionUrl)
+## flowExecutionUrl - form action location
+## flowRequestContext - Spring Web Flow RequestContext
+## profileRequestContext - OpenSAML profile request context
+## request - HttpServletRequest
+## response - HttpServletResponse
+## rpUIContext - context with SP UI information from the metadata
+## environment - Spring Environment object for property resolution
+#set ($serviceName = $rpUIContext.serviceName)
+#set ($serviceDescription = $rpUIContext.serviceDescription)
+#set ($informationURL = $rpUIContext.informationURL)
+#set ($privacyStatementURL = $rpUIContext.privacyStatementURL)
+#set ($rpOrganizationLogo = $rpUIContext.getLogo())
+#set ($rpOrganizationName = $rpUIContext.organizationName)
+#set ($replaceDollarWithNewline = true)
+##
+
+
+
+
+
+
+ #springMessageText("idp.attribute-release.title", "Information Release")
+
+
+
+
+
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/intercept/expiring-password.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/intercept/expiring-password.vm
new file mode 100644
index 0000000..4395844
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/intercept/expiring-password.vm
@@ -0,0 +1,54 @@
+##
+## Velocity Template for expiring password view
+##
+## Velocity context will contain the following properties
+## flowExecutionUrl - the form action location
+## flowRequestContext - the Spring Web Flow RequestContext
+## flowExecutionKey - the SWF execution key (this is built into the flowExecutionUrl)
+## profileRequestContext - root of context tree
+## authenticationContext - context with authentication request information
+## authenticationErrorContext - context with login error state
+## authenticationWarningContext - context with login warning state
+## ldapResponseContext - context with LDAP state (if using native LDAP)
+## encoder - HTMLEncoder class
+## request - HttpServletRequest
+## response - HttpServletResponse
+## environment - Spring Environment object for property resolution
+## custom - arbitrary object injected by deployer
+##
+
+
+
+
+
+ #springMessageText("idp.title", "Web Login Service")
+
+
+
+
+
+
+
+
+
+
#springMessageText("idp.login.expiringSoon", "Your password will be expiring soon!")
+
+
+
+
#springMessageText("idp.login.changePassword", "To create a new password now, go to")
+ #.
+
#springMessageText("idp.login.proceedBegin", "Your login will proceed in 20 seconds or you may click")
+ #springMessageText("idp.login.proceedHere", "here")
+ #springMessageText("idp.login.proceedEnd", "to continue").
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/intercept/terms-of-use.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/intercept/terms-of-use.vm
new file mode 100644
index 0000000..1bf12c7
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/intercept/terms-of-use.vm
@@ -0,0 +1,67 @@
+##
+## Velocity Template for DisplayTermsOfUsePage view-state
+##
+## Velocity context will contain the following properties :
+##
+## encoder - HTMLEncoder class
+## flowExecutionKey - SWF execution key (this is built into the flowExecutionUrl)
+## flowExecutionUrl - form action location
+## flowRequestContext - Spring Web Flow RequestContext
+## request - HttpServletRequest
+## response - HttpServletResponse
+## rpUIContext - context with SP UI information from the metadata
+## termsOfUseId - terms of use ID to lookup message strings
+## environment - Spring Environment object for property resolution
+#set ($serviceName = $rpUIContext.serviceName)
+#set ($rpOrganizationLogo = $rpUIContext.getLogo())
+##
+
+
+
+
+
+
+ #springMessageText("${termsOfUseId}.title", "Terms of Use")
+
+
+
#springMessageText("${termsOfUseId}.title", "Terms of Use")
+
+ #end
+
+ #springMessageText("${termsOfUseId}.text", "Terms of Use Text...")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/login-error.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/login-error.vm
new file mode 100644
index 0000000..44676b3
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/login-error.vm
@@ -0,0 +1,24 @@
+## Velocity Template for login error message production, included by login.vm
+##
+## authenticationErrorContext - context containing error data, if available
+##
+#if ($authenticationErrorContext && $authenticationErrorContext.getClassifiedErrors().size() > 0 && $authenticationErrorContext.getClassifiedErrors().iterator().next() != "ReselectFlow")
+ ## This handles errors that are classified by the message maps in the authentication config.
+ #set ($eventId = $authenticationErrorContext.getClassifiedErrors().iterator().next())
+ #set ($eventKey = $springMacroRequestContext.getMessage("$eventId", "login"))
+ #set ($message = $springMacroRequestContext.getMessage("${eventKey}.message", "Login Failure: $eventId"))
+#elseif ($authenticationErrorContext && $authenticationErrorContext.getExceptions().size() > 0)
+ ## This handles login exceptions that are left unclassified.
+ #set ($loginException = $authenticationErrorContext.getExceptions().get(0))
+ #if ($loginException.getMessage())
+ #set ($message = "Login Failure: $loginException.getMessage()")
+ #else
+ #set ($message = $loginException.toString())
+ #end
+#end
+
+#if ($message)
+
+
$encoder.encodeForHTML($message)
+
+#end
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/login.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/login.vm
new file mode 100644
index 0000000..c421a99
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/login.vm
@@ -0,0 +1,140 @@
+##
+## Velocity Template for DisplayUsernamePasswordPage view-state
+##
+## Velocity context will contain the following properties
+## flowExecutionUrl - the form action location
+## flowRequestContext - the Spring Web Flow RequestContext
+## flowExecutionKey - the SWF execution key (this is built into the flowExecutionUrl)
+## profileRequestContext - root of context tree
+## authenticationContext - context with authentication request information
+## authenticationErrorContext - context with login error state
+## authenticationWarningContext - context with login warning state
+## ldapResponseContext - context with LDAP state (if using native LDAP)
+## rpUIContext - the context with SP UI information from the metadata
+## extendedAuthenticationFlows - collection of "extended" AuthenticationFlowDescriptor objects
+## passwordPrincipals - contents of the shibboleth.authn.Password.PrincipalOverride bean
+## encoder - HTMLEncoder class
+## request - HttpServletRequest
+## response - HttpServletResponse
+## environment - Spring Environment object for property resolution
+## custom - arbitrary object injected by deployer
+##
+#set ($rpContext = $profileRequestContext.getSubcontext('net.shibboleth.idp.profile.context.RelyingPartyContext'))
+#set ($username = $authenticationContext.getSubcontext('net.shibboleth.idp.authn.context.UsernamePasswordContext', true).getUsername())
+#set ($passwordEnabled = false)
+#if (!$passwordPrincipals or $passwordPrincipals.isEmpty() or $authenticationContext.isAcceptable($passwordPrincipals))
+ #set ($passwordEnabled = true)
+#end
+##
+
+
+
+
+
+ #springMessageText("idp.title", "Web Login Service")
+
+
+
+
+
+
+
+
+
+
+
+ #parse("login-error.vm")
+
+
+
+ #*
+ //
+ // SP Description & Logo (optional)
+ // These idpui lines will display added information (if available
+ // in the metadata) about the Service Provider (SP) that requested
+ // authentication. These idpui lines are "active" in this example
+ // (not commented out) - this extra SP info will be displayed.
+ // Remove or comment out these lines to stop the display of the
+ // added SP information.
+ //
+ *#
+ #set ($logo = $rpUIContext.getLogo())
+ #if ($logo)
+
+ #end
+ #set ($desc = $rpUIContext.getServiceDescription())
+ #if ($desc)
+ $encoder.encodeForHTML($desc)
+ #end
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/logout-complete.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/logout-complete.vm
new file mode 100644
index 0000000..d780252
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/logout-complete.vm
@@ -0,0 +1,59 @@
+##
+## Velocity Template for logout flow's concluding view-state (no propagation)
+##
+## Velocity context will contain the following properties
+## flowExecutionUrl - the form action location
+## flowRequestContext - the Spring Web Flow RequestContext
+## flowExecutionKey - the SWF execution key (this is built into the flowExecutionUrl)
+## profileRequestContext - root of context tree
+## logoutContext - context with SPSession details for logout operation
+## multiRPContext - context with RelyingPartyContexts and possibly SP UI information from the metadata
+## encoder - HTMLEncoder class
+## request - HttpServletRequest
+## response - HttpServletResponse
+## environment - Spring Environment object for property resolution
+## custom - arbitrary object injected by deployer
+##
+
+
+
+
+
+ #springMessageText("idp.title", "Web Login Service")
+
+
+
+
+
+
+
+
+
+
+
+
+
#springMessageText("idp.logout.local", "You elected not to log out of all the applications accessed during your session.")
+
+
+
\ No newline at end of file
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/logout-propagate.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/logout-propagate.vm
new file mode 100644
index 0000000..86b3fa1
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/logout-propagate.vm
@@ -0,0 +1,58 @@
+##
+## Velocity Template for logout flow's concluding view-state (with propagation)
+##
+## Velocity context will contain the following properties
+## flowExecutionUrl - the form action location
+## flowRequestContext - the Spring Web Flow RequestContext
+## flowExecutionKey - the SWF execution key (this is built into the flowExecutionUrl)
+## profileRequestContext - root of context tree
+## logoutContext - context with SPSession details for logout operation
+## multiRPContext - context with RelyingPartyContexts and possibly SP UI information from the metadata
+## htmlEncoder - HTMLEncoder class
+## urlEncoder - urlEncoder class
+## codecUtil - CodecUtil class
+## request - HttpServletRequest
+## response - HttpServletResponse
+## environment - Spring Environment object for property resolution
+## custom - arbitrary object injected by deployer
+##
+
+
+
+
+
+ #springMessageText("idp.title", "Web Login Service")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#springMessageText("idp.logout.attempt", "Attempting to log out of the following services:")
+
+
+
\ No newline at end of file
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/logout.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/logout.vm
new file mode 100644
index 0000000..2342855
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/logout.vm
@@ -0,0 +1,91 @@
+##
+## Velocity Template for logout flow's starting view-state
+##
+## Velocity context will contain the following properties
+## flowExecutionUrl - the form action location
+## flowRequestContext - the Spring Web Flow RequestContext
+## flowExecutionKey - the SWF execution key (this is built into the flowExecutionUrl)
+## profileRequestContext - root of context tree
+## logoutContext - context with SPSession details for logout operation
+## multiRPContext - context with RelyingPartyContexts and possibly SP UI information from the metadata
+## encoder - HTMLEncoder class
+## request - HttpServletRequest
+## response - HttpServletResponse
+## environment - Spring Environment object for property resolution
+## custom - arbitrary object injected by deployer
+##
+
+
+
+
+
+ #if ( $logoutContext and !$logoutContext.getSessionMap().isEmpty() )
+
+ #end
+ #springMessageText("idp.title", "Web Login Service")
+
+
+
+
+
+
+
+
+
+
+
+
+
This page is displayed when a logout operation at the Identity Provider completes. This page is an example
+ and should be customized. It is not fully internationalized because the presentation will be a highly localized
+ decision, and we don't have a good suggestion for a default.
+
+
+ #if ( $logoutContext and !$logoutContext.getSessionMap().isEmpty() )
+
#springMessageText("idp.logout.ask", "Would you like to attempt to log out of all services accessed during your session? Please select Yes or No to ensure the logout operation completes, or wait a few seconds for Yes.")
+
+
+
+
+
+
#springMessageText("idp.logout.contactServices", "If you proceed, the system will attempt to contact the following services:")
+
+
+
\ No newline at end of file
diff --git a/Sources/SIS/shib-idp/customized-shibboleth-idp/views/spnego-unavailable.vm b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/spnego-unavailable.vm
new file mode 100644
index 0000000..3673f02
--- /dev/null
+++ b/Sources/SIS/shib-idp/customized-shibboleth-idp/views/spnego-unavailable.vm
@@ -0,0 +1,49 @@
+##
+## Velocity Template for SPNEGO unauthorized page
+##
+## This is not a Spring Webflow view, but a special view internal to the
+## SPNEGO login flow, so it doesn't contain all of the usual SWF variables.
+##
+## Velocity context will contain the following properties
+## encoder - HTMLEncoder class
+## request - HttpServletRequest
+## response - HttpServletResponse
+## profileRequestContext - root of context tree
+## errorUrl - URL to call to indicate error and return back to the login flow
+##
+#set ($eventKey = $springMacroRequestContext.getMessage("SPNEGOUnavailable", "spnego-unavailable"))
+
+
+
+
+
+ #springMessageText("idp.title", "Web Login Sevice") - #springMessageText("${eventKey}.title", "Error")
+
+
+
+
+