diff --git a/demo/postgresql/docker-compose.yml b/demo/postgresql/docker-compose.yml
new file mode 100644
index 0000000..79a3738
--- /dev/null
+++ b/demo/postgresql/docker-compose.yml
@@ -0,0 +1,23 @@
+version: "3.3"
+
+services:
+ postgresql:
+ build: ./postgresql/
+ environment:
+ - POSTGRES_PASSWORD=password
+ expose:
+ - 5432
+ ports:
+ - 5432:5432
+ networks:
+ - net
+ volumes:
+ - data:/var/lib/postgresql/data
+
+
+networks:
+ net:
+ driver: bridge
+
+volumes:
+ data:
diff --git a/demo/postgresql/midpoint-additions-for-standalone-run.yml b/demo/postgresql/midpoint-additions-for-standalone-run.yml
new file mode 100644
index 0000000..2e3cabe
--- /dev/null
+++ b/demo/postgresql/midpoint-additions-for-standalone-run.yml
@@ -0,0 +1,37 @@
+#
+# This is a file with additions to ../midpoint/docker-compose.yml file, to be used in the following way:
+#
+# (in this directory)
+#
+# $ docker-compose up
+#
+# (in ../midpoint directory)
+#
+# $ docker-compose -f docker-compose.yml -f ../demo/postgresql/midpoint-additions-for-standalone-run.yml up midpoint-server
+#
+# It expects that PostgreSQL is started independently of midPoint. When executing the containers in this way, there are two compositions with the following containers:
+#
+# "midpoint"
+#
+# - midpoint-server
+#
+# "postgresql"
+#
+# - postgresql
+#
+
+version: "3.3"
+
+services:
+ midpoint-server:
+ environment:
+ - REPO_DATABASE_TYPE=postgresql
+ - REPO_HOST=postgresql
+ - REPO_DATABASE=midpoint
+ - REPO_USER=midpoint
+ networks:
+ - postgresql_net
+
+networks:
+ postgresql_net:
+ external: true
diff --git a/demo/postgresql/midpoint-additions.yml b/demo/postgresql/midpoint-additions.yml
new file mode 100644
index 0000000..5cf43d4
--- /dev/null
+++ b/demo/postgresql/midpoint-additions.yml
@@ -0,0 +1,38 @@
+#
+# This is a file with additions to ../midpoint/docker-compose.yml file, to be used in the following way:
+#
+# (in ../midpoint directory)
+#
+# $ docker-compose -f docker-compose.yml -f ../demo/postgresql/midpoint-additions.yml up midpoint-server postgresql
+#
+# It expects that PostgreSQL is started as part of midPoint composition. So there will be three containers there:
+#
+# 1) midpoint-server
+# 2) postgresql
+#
+
+version: "3.3"
+
+services:
+ postgresql:
+ build: ../demo/postgresql/postgresql/
+ environment:
+ - POSTGRES_PASSWORD=password
+ expose:
+ - 5432
+ ports:
+ - 5432:5432
+ networks:
+ - back
+ volumes:
+ - postgresql_data:/var/lib/postgresql/data
+
+ midpoint-server:
+ environment:
+ - REPO_DATABASE_TYPE=postgresql
+ - REPO_HOST=postgresql
+ - REPO_DATABASE=midpoint
+ - REPO_USER=midpoint
+
+volumes:
+ postgresql_data:
diff --git a/demo/postgresql/postgresql/Dockerfile b/demo/postgresql/postgresql/Dockerfile
new file mode 100644
index 0000000..dcaf4d6
--- /dev/null
+++ b/demo/postgresql/postgresql/Dockerfile
@@ -0,0 +1,3 @@
+FROM postgres:9.5
+
+COPY container_files/* /docker-entrypoint-initdb.d/
diff --git a/demo/postgresql/postgresql/container_files/init-user-db.sh b/demo/postgresql/postgresql/container_files/init-user-db.sh
new file mode 100755
index 0000000..95df619
--- /dev/null
+++ b/demo/postgresql/postgresql/container_files/init-user-db.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -e
+
+echo Creating midPoint user and database
+
+psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
+ CREATE USER midpoint WITH PASSWORD '456654' LOGIN SUPERUSER;
+ CREATE DATABASE midpoint WITH OWNER = midpoint ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'en_US.utf8' LC_CTYPE = 'en_US.utf8' CONNECTION LIMIT = -1;
+EOSQL
+
+echo midPoint user and database were created
+
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/idp-metadata.xml b/demo/shibboleth/configs-and-secrets/shibboleth/idp-metadata.xml
similarity index 91%
rename from shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/idp-metadata.xml
rename to demo/shibboleth/configs-and-secrets/shibboleth/idp-metadata.xml
index 5a70824..35914b7 100644
--- a/shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/idp-metadata.xml
+++ b/demo/shibboleth/configs-and-secrets/shibboleth/idp-metadata.xml
@@ -101,18 +101,6 @@ p+tGUbGS2l873J5PrsbpeKEVR/IIoKo=
-
-
-
-
urn:mace:shibboleth:1.0:nameIdentifier
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/grouper/shibboleth2.xml b/demo/shibboleth/configs-and-secrets/shibboleth/shibboleth2.xml
similarity index 99%
rename from shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/grouper/shibboleth2.xml
rename to demo/shibboleth/configs-and-secrets/shibboleth/shibboleth2.xml
index 0c38f82..a644264 100644
--- a/shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/grouper/shibboleth2.xml
+++ b/demo/shibboleth/configs-and-secrets/shibboleth/shibboleth2.xml
@@ -22,7 +22,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/shibboleth-integration/mp-gr/idp/shibboleth-idp/conf/attribute-resolver.xml b/demo/shibboleth/idp/shibboleth-idp/conf/attribute-resolver.xml
similarity index 100%
rename from shibboleth-integration/mp-gr/idp/shibboleth-idp/conf/attribute-resolver.xml
rename to demo/shibboleth/idp/shibboleth-idp/conf/attribute-resolver.xml
diff --git a/shibboleth-integration/mp-gr/idp/shibboleth-idp/conf/idp.properties b/demo/shibboleth/idp/shibboleth-idp/conf/idp.properties
similarity index 100%
rename from shibboleth-integration/mp-gr/idp/shibboleth-idp/conf/idp.properties
rename to demo/shibboleth/idp/shibboleth-idp/conf/idp.properties
diff --git a/shibboleth-integration/mp-gr/idp/shibboleth-idp/conf/ldap.properties b/demo/shibboleth/idp/shibboleth-idp/conf/ldap.properties
similarity index 100%
rename from shibboleth-integration/mp-gr/idp/shibboleth-idp/conf/ldap.properties
rename to demo/shibboleth/idp/shibboleth-idp/conf/ldap.properties
diff --git a/shibboleth-integration/mp-gr/idp/shibboleth-idp/conf/metadata-providers.xml b/demo/shibboleth/idp/shibboleth-idp/conf/metadata-providers.xml
similarity index 97%
rename from shibboleth-integration/mp-gr/idp/shibboleth-idp/conf/metadata-providers.xml
rename to demo/shibboleth/idp/shibboleth-idp/conf/metadata-providers.xml
index f70135e..684b387 100644
--- a/shibboleth-integration/mp-gr/idp/shibboleth-idp/conf/metadata-providers.xml
+++ b/demo/shibboleth/idp/shibboleth-idp/conf/metadata-providers.xml
@@ -25,7 +25,6 @@
-
-
-
-
urn:mace:shibboleth:1.0:nameIdentifier
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
diff --git a/shibboleth-integration/mp-gr/idp/shibboleth-idp/metadata/grouper-sp.xml b/demo/shibboleth/idp/shibboleth-idp/metadata/midpoint-sp.xml
similarity index 62%
rename from shibboleth-integration/mp-gr/idp/shibboleth-idp/metadata/grouper-sp.xml
rename to demo/shibboleth/idp/shibboleth-idp/metadata/midpoint-sp.xml
index 9bde5ef..54f0577 100644
--- a/shibboleth-integration/mp-gr/idp/shibboleth-idp/metadata/grouper-sp.xml
+++ b/demo/shibboleth/idp/shibboleth-idp/metadata/midpoint-sp.xml
@@ -2,7 +2,7 @@
This is example metadata only. Do *NOT* supply it as is without review,
and do *NOT* provide it in real time to your partners.
-->
-
+
@@ -25,32 +25,34 @@ and do *NOT* provide it in real time to your partners.
-
-
+
+
- sp.example.org
+ midpoint.sp.example.org
- CN=sp.example.org,O=Internet2/TIER,L=Ann Arbor,ST=MI,C=US
- MIIDPDCCAiQCCQDNZe8r0hVtuTANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJV
+ CN=midpoint.sp.example.org,O=Internet2/TIER,L=Ann Arbor,ST=MI,C=US
+ MIIDqDCCApCgAwIBAgIJAKUZrfriIt9cMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNV
+BAYTAlVTMQswCQYDVQQIDAJNSTESMBAGA1UEBwwJQW5uIEFyYm9yMRcwFQYDVQQK
+DA5JbnRlcm5ldDIvVElFUjEgMB4GA1UEAwwXZXZvbHZldW0uc3AuZXhhbXBsZS5v
+cmcwHhcNMTgwOTE0MDU0NjU3WhcNMTkwOTE0MDU0NjU3WjBpMQswCQYDVQQGEwJV
UzELMAkGA1UECAwCTUkxEjAQBgNVBAcMCUFubiBBcmJvcjEXMBUGA1UECgwOSW50
-ZXJuZXQyL1RJRVIxFzAVBgNVBAMMDnNwLmV4YW1wbGUub3JnMB4XDTE3MDkyMjE5
-NTAzNVoXDTI3MDkyMDE5NTAzNVowYDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAk1J
-MRIwEAYDVQQHDAlBbm4gQXJib3IxFzAVBgNVBAoMDkludGVybmV0Mi9USUVSMRcw
-FQYDVQQDDA5zcC5leGFtcGxlLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBAMTNJmsNpTpR4NrDJwOgK/o3UYlNdi1c6xBflt+liLAsQc160QReV4dS
-SGK8LZvN58a/BTIsH8dLhQlUQ8qQUY2AfolVrNxb7Waumeh/POzYUTRylnoGpU3W
-bGMEPxE/AdgP5U/adYvyu4XI5epv7wjZJOTqcVag15SalY+aso+ZC/5l+UzRxmWB
-ZxKTsSL1y7PFehY4/Zl3Y3oGVsVl/zspt5lteoZQeeVxUX29S3Af11yHY4xpEp+7
-rvAzY/nlsTiHAsUoCFK/NFQ2evvSRx52B9Fk1cWP1MDVDm2QjQqD9xBGYSnX6bhQ
-ejVx7JUJHlblu2Q5p5XdW0BihgFluoECAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
-n/qhYnIviPs4tglCdrw+M7gbqKNWadDC3F9HDYzlJMFeS/ae2turhEUgQPbYPDQQ
-eO3oOILtvCXNFUPM58jf8V5YFRrOqrTgx44kexQDaHO5YYNft5tF5TdvBYE2gOVr
-GdYrH2iSP8WX+Yy7JH5uqkfwWzEntWHJdey39rCWKAUCCB35+/2b4N53Qmlv2+ug
-CpNJYFtXInd4YMmM5HjXLyoWXtjnKiwDqYUCeYPSwAajnCqRqRXUX0gYTFDRiwRP
-HbmO9We0nqoc/71nikmGGoSRMO/zWVMFjwmAx1fGiWdU61sjGX8sHifzmVyJVEBI
-Z75p+JrWYZJYrx/vpWxL8g==
+ZXJuZXQyL1RJRVIxIDAeBgNVBAMMF2V2b2x2ZXVtLnNwLmV4YW1wbGUub3JnMIIB
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw5v1zxlM94yaBssgNNbIUJwW
+XxbGxgSs2AWBeg2aEi/VQd2UE5ivZakNJlqWSJyHo2xE4kxeSyBBxinjSyhmpNao
+xIcqQsgW0gxo4SEHo3kUXWPo+of/pj6CslutsSJZWGTRV0dHITvaWX+NM8eXMfgu
+mJFwy3RMdLaWQhY1Dyi2jNoO+DZnfNgPyPeEZcmORaoeEID9QdZfHtcgTf2QfSHq
++xsTwHB6Ro5t7YD2ma8Krb/XcDTfsq3qJemd7LhPj5lGmhYSMgDbgwEkZgZ1kBOP
+lfsP2BvX5nipv7Vd1C5YXmv+NDR8V3yAWBC7ZAenxGmrnkaSVXnpUplUsGGm1QID
+AQABo1MwUTAdBgNVHQ4EFgQUuxSZwW6V1P/b0tsTM32OU/v/n+UwHwYDVR0jBBgw
+FoAUuxSZwW6V1P/b0tsTM32OU/v/n+UwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
+9w0BAQsFAAOCAQEAJWLXEfZkPeUyiGvsIUjczzdF3ptqXoP9aETS2pOV9sTri19R
+TsQZW6XQRHGtuEOsqEGH8yiTdGR5hbGC+ynH/xTJnK+tBn/R3KrgxLKyMvoUzAPl
+mhVq1dh+ZEtbsRpQRRubP6nm9kXNma0cXrkJSzuWM0W+l/xSOOYiSRRk3XWJfVjn
+9jQlcJRh5SOkKN08oZHrCYKxToEuOfV8PtRj3T80DhsBTv2SHqhg4cBhzQPb0Kjm
+9m4IkYOz8c5ZtuHDGnqMHw60Nyt+jyik4mMFP2frcOVP0W0sgwcfHllYzHoA/Khq
+Yk3TBVs1BjPuNDJWHct8Eo68YP2/ZvzqfVM87Q==
@@ -64,15 +66,15 @@ Z75p+JrWYZJYrx/vpWxL8g==
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/httpd/grouper/cachain-cer.pem b/grouper-midpoint/mp-gr/configs-and-secrets/httpd/grouper/cachain-cer.pem
similarity index 100%
rename from shibboleth-integration/mp-gr/configs-and-secrets/httpd/grouper/cachain-cer.pem
rename to grouper-midpoint/mp-gr/configs-and-secrets/httpd/grouper/cachain-cer.pem
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/httpd/grouper/host-cert.pem b/grouper-midpoint/mp-gr/configs-and-secrets/httpd/grouper/host-cert.pem
similarity index 100%
rename from shibboleth-integration/mp-gr/configs-and-secrets/httpd/grouper/host-cert.pem
rename to grouper-midpoint/mp-gr/configs-and-secrets/httpd/grouper/host-cert.pem
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/httpd/grouper/host-key.pem b/grouper-midpoint/mp-gr/configs-and-secrets/httpd/grouper/host-key.pem
similarity index 100%
rename from shibboleth-integration/mp-gr/configs-and-secrets/httpd/grouper/host-key.pem
rename to grouper-midpoint/mp-gr/configs-and-secrets/httpd/grouper/host-key.pem
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/httpd/midpoint/host-cert.pem b/grouper-midpoint/mp-gr/configs-and-secrets/httpd/midpoint/host-cert.pem
similarity index 100%
rename from shibboleth-integration/mp-gr/configs-and-secrets/httpd/midpoint/host-cert.pem
rename to grouper-midpoint/mp-gr/configs-and-secrets/httpd/midpoint/host-cert.pem
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/httpd/midpoint/host-key.pem b/grouper-midpoint/mp-gr/configs-and-secrets/httpd/midpoint/host-key.pem
similarity index 100%
rename from shibboleth-integration/mp-gr/configs-and-secrets/httpd/midpoint/host-key.pem
rename to grouper-midpoint/mp-gr/configs-and-secrets/httpd/midpoint/host-key.pem
diff --git a/grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/shibboleth2.xml b/grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/grouper/shibboleth2.xml
similarity index 100%
rename from grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/shibboleth2.xml
rename to grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/grouper/shibboleth2.xml
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/grouper/sp-cert.pem b/grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/grouper/sp-cert.pem
similarity index 100%
rename from shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/grouper/sp-cert.pem
rename to grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/grouper/sp-cert.pem
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/grouper/sp-key.pem b/grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/grouper/sp-key.pem
similarity index 100%
rename from shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/grouper/sp-key.pem
rename to grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/grouper/sp-key.pem
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/midpoint/shibboleth2.xml b/grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/midpoint/shibboleth2.xml
similarity index 100%
rename from shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/midpoint/shibboleth2.xml
rename to grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/midpoint/shibboleth2.xml
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/midpoint/sp-cert.pem b/grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/midpoint/sp-cert.pem
similarity index 100%
rename from shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/midpoint/sp-cert.pem
rename to grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/midpoint/sp-cert.pem
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/midpoint/sp-key.pem b/grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/midpoint/sp-key.pem
similarity index 100%
rename from shibboleth-integration/mp-gr/configs-and-secrets/shibboleth/midpoint/sp-key.pem
rename to grouper-midpoint/mp-gr/configs-and-secrets/shibboleth/midpoint/sp-key.pem
diff --git a/grouper-midpoint/mp-gr/docker-compose.yml b/grouper-midpoint/mp-gr/docker-compose.yml
index 96553b8..0a456af 100644
--- a/grouper-midpoint/mp-gr/docker-compose.yml
+++ b/grouper-midpoint/mp-gr/docker-compose.yml
@@ -66,9 +66,10 @@ services:
target: grouper_grouper-loader.properties
- source: subject.properties
target: grouper_subject.properties
- - source: sp-key.pem
+ - source: grouper-sp-key.pem
target: shib_sp-key.pem
- - source: host-key.pem
+ - source: grouper-host-key.pem
+ target: host-key.pem
volumes:
- type: bind
source: ./configs-and-secrets/grouper/grouper.properties
@@ -77,19 +78,19 @@ services:
source: ./configs-and-secrets/grouper/grouper.client.properties
target: /opt/grouper/conf/grouper.client.properties
- type: bind
- source: ./configs-and-secrets/shibboleth/sp-cert.pem
+ source: ./configs-and-secrets/shibboleth/grouper/sp-cert.pem
target: /etc/shibboleth/sp-cert.pem
- type: bind
- source: ./configs-and-secrets/shibboleth/shibboleth2.xml
+ source: ./configs-and-secrets/shibboleth/grouper/shibboleth2.xml
target: /etc/shibboleth/shibboleth2.xml
- type: bind
source: ./configs-and-secrets/shibboleth/idp-metadata.xml
target: /etc/shibboleth/idp-metadata.xml
- type: bind
- source: ./configs-and-secrets/httpd/host-cert.pem
+ source: ./configs-and-secrets/httpd/grouper/host-cert.pem
target: /etc/pki/tls/certs/host-cert.pem
- type: bind
- source: ./configs-and-secrets/httpd/host-cert.pem
+ source: ./configs-and-secrets/httpd/grouper/host-cert.pem
target: /etc/pki/tls/certs/cachain.pem
@@ -220,18 +221,41 @@ services:
midpoint-server:
build: ./midpoint-server/
depends_on:
- - midpoint-data
+ - midpoint-data
expose:
- - 8080
+ - "8080"
+ - "4438"
ports:
- - 8080:8080
- volumes:
- - midpoint_home:/opt/midpoint/var
+ - "8080:80"
+ - "4438:443"
+ environment:
+ - ACTIVE_PROFILE=default
networks:
- - front
- - back
+ - front
+ - back
secrets:
- - m_database_password.txt
+ - m_database_password.txt
+ - source: midpoint-sp-key.pem
+ target: shib_sp-key.pem
+ - source: midpoint-host-key.pem
+ target: host-key.pem
+ volumes:
+ - midpoint_home:/opt/midpoint/var
+ - type: bind
+ source: ./configs-and-secrets/shibboleth/midpoint/sp-cert.pem
+ target: /etc/shibboleth/sp-cert.pem
+ - type: bind
+ source: ./configs-and-secrets/shibboleth/midpoint/shibboleth2.xml
+ target: /etc/shibboleth/shibboleth2.xml
+ - type: bind
+ source: ./configs-and-secrets/shibboleth/idp-metadata.xml
+ target: /etc/shibboleth/idp-metadata.xml
+ - type: bind
+ source: ./configs-and-secrets/httpd/midpoint/host-cert.pem
+ target: /etc/pki/tls/certs/host-cert.pem
+ - type: bind
+ source: ./configs-and-secrets/httpd/midpoint/host-cert.pem
+ target: /etc/pki/tls/certs/cachain.pem
idp:
build: ./idp/
@@ -273,14 +297,18 @@ secrets:
file: ./configs-and-secrets/grouper/grouper.hibernate.properties
grouper-loader.properties:
file: ./configs-and-secrets/grouper/grouper-loader.properties
- host-key.pem:
- file: ./configs-and-secrets/httpd/host-key.pem
+ grouper-host-key.pem:
+ file: ./configs-and-secrets/httpd/grouper/host-key.pem
rabbitmq_password.txt:
file: ./configs-and-secrets/grouper/rabbitmq_password.txt
subject.properties:
file: ./configs-and-secrets/grouper/subject.properties
- sp-key.pem:
- file: ./configs-and-secrets/shibboleth/sp-key.pem
+ grouper-sp-key.pem:
+ file: ./configs-and-secrets/shibboleth/grouper/sp-key.pem
+ midpoint-host-key.pem:
+ file: ./configs-and-secrets/httpd/midpoint/host-key.pem
+ midpoint-sp-key.pem:
+ file: ./configs-and-secrets/shibboleth/midpoint/sp-key.pem
m_database_password.txt:
file: ./configs-and-secrets/midpoint/database_password.txt
diff --git a/grouper-midpoint/mp-gr/idp/shibboleth-idp/conf/attribute-filter.xml b/grouper-midpoint/mp-gr/idp/shibboleth-idp/conf/attribute-filter.xml
index 62000f1..21ffdb8 100644
--- a/grouper-midpoint/mp-gr/idp/shibboleth-idp/conf/attribute-filter.xml
+++ b/grouper-midpoint/mp-gr/idp/shibboleth-idp/conf/attribute-filter.xml
@@ -34,4 +34,14 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/grouper-midpoint/mp-gr/idp/shibboleth-idp/conf/metadata-providers.xml b/grouper-midpoint/mp-gr/idp/shibboleth-idp/conf/metadata-providers.xml
index 9fc5b77..f70135e 100644
--- a/grouper-midpoint/mp-gr/idp/shibboleth-idp/conf/metadata-providers.xml
+++ b/grouper-midpoint/mp-gr/idp/shibboleth-idp/conf/metadata-providers.xml
@@ -26,6 +26,7 @@
+
+
+
+
+
+
+ example.org
+
+
+
+
+
+
+
+MIIDEzCCAfugAwIBAgIUS9SuTXwsFVVG+LjOEAbLqqT/el0wDQYJKoZIhvcNAQEL
+BQAwFTETMBEGA1UEAwwKaWRwdGVzdGJlZDAeFw0xNTEyMTEwMjIwMjZaFw0zNTEy
+MTEwMjIwMjZaMBUxEzARBgNVBAMMCmlkcHRlc3RiZWQwggEiMA0GCSqGSIb3DQEB
+AQUAA4IBDwAwggEKAoIBAQCMAoDHx8xCIfv/6QKqt9mcHYmEJ8y2dKprUbpdcOjH
+YvNPIl/lHPsUyrb+Nc+q2CDeiWjVk1mWYq0UpIwpBMuw1H6+oOqr4VQRi65pin0M
+SfE0MWIaFo5FPvpvoptkHD4gvREbm4swyXGMczcMRfqgalFXhUD2wz8W3XAM5Cq2
+03XeJbj6TwjvKatG5XPdeUe2FBGuOO2q54L1hcIGnLMCQrg7D31lR13PJbjnJ0No
+5C3k8TPuny6vJsBC03GNLNKfmrKVTdzr3VKp1uay1G3DL9314fgmbl8HA5iRQmy+
+XInUU6/8NXZSF59p3ITAOvZQeZsbJjg5gGDip5OZo9YlAgMBAAGjWzBZMB0GA1Ud
+DgQWBBRPlM4VkKZ0U4ec9GrIhFQl0hNbLDA4BgNVHREEMTAvggppZHB0ZXN0YmVk
+hiFodHRwczovL2lkcHRlc3RiZWQvaWRwL3NoaWJib2xldGgwDQYJKoZIhvcNAQEL
+BQADggEBAIZ0a1ov3my3ljJG588I/PHx+TxAWONWmpKbO9c/qI3Drxk4oRIffiac
+ANxdvtabgIzrlk5gMMisD7oyqHJiWgKv5Bgctd8w3IS3lLl7wHX65mTKQRXniG98
+NIjkvfrhe2eeJxecOqnDI8GOhIGCIqZUn8ShdM/yHjhQ2Mh0Hj3U0LlKvnmfGSQl
+j0viGwbFCaNaIP3zc5UmCrdE5h8sWL3Fu7ILKM9RyFa2ILHrJScV9t623IcHffHP
+IeaY/WtuapsrqRFxuQL9QFWN0FsRIdLmjTq+00+B/XnnKRKFBuWfjhHLF/uu8f+E
+t6Lf23Kb8yD6ZR7dihMZAGHnYQ/hlhM=
+
+
+
+
+
+
+
+
+
+MIIDFDCCAfygAwIBAgIVAN3vv+b7KN5Se9m1RZsCllp/B/hdMA0GCSqGSIb3DQEB
+CwUAMBUxEzARBgNVBAMMCmlkcHRlc3RiZWQwHhcNMTUxMjExMDIyMDE0WhcNMzUx
+MjExMDIyMDE0WjAVMRMwEQYDVQQDDAppZHB0ZXN0YmVkMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAh91caeY0Q85uhaUyqFwP2bMjwMFxMzRlAoqBHd7g
+u6eo4duaeLz1BaoR2XTBpNNvFR5oHH+TkKahVDGeH5+kcnIpxI8JPdsZml1srvf2
+Z6dzJsulJZUdpqnngycTkGtZgEoC1vmYVky2BSAIIifmdh6s0epbHnMGLsHzMKfJ
+Cb/Q6dYzRWTCPtzE2VMuQqqWgeyMr7u14x/Vqr9RPEFsgY8GIu5jzB6AyUIwrLg+
+MNkv6aIdcHwxYTGL7ijfy6rSWrgBflQoYRYNEnseK0ZHgJahz4ovCag6wZAoPpBs
+uYlY7lEr89Ucb6NHx3uqGMsXlDFdE4QwfDLLhCYHPvJ0uwIDAQABo1swWTAdBgNV
+HQ4EFgQUAkOgED3iYdmvQEOMm6u/JmD/UTQwOAYDVR0RBDEwL4IKaWRwdGVzdGJl
+ZIYhaHR0cHM6Ly9pZHB0ZXN0YmVkL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEB
+CwUAA4IBAQBIdd4YWlnvJjql8+zKKgmWgIY7U8DA8e6QcbAf8f8cdE33RSnjI63X
+sv/y9GfmbAVAD6RIAXPFFeRYJ08GOxGI9axfNaKdlsklJ9bk4ducHqgCSWYVer3s
+RQBjxyOfSTvk9YCJvdJVQRJLcCvxwKakFCsOSnV3t9OvN86Ak+fKPVB5j2fM/0fZ
+Kqjn3iqgdNPTLXPsuJLJO5lITRiBa4onmVelAiCstI9PQiaEck+oAHnMTnC9JE/B
+DHv3e4rwq3LznlqPw0GSd7xqNTdMDwNOWjkuOr3sGpWS8ms/ZHHXV1Vd22uPe70i
+s00xrv14zLifcc8oj5DYzOhYRifRXgHX
+
+
+
+
+
+
+
+
+
+MIIDEzCCAfugAwIBAgIUG6Nn1rlERS1vsi88tcdzSYX0oqAwDQYJKoZIhvcNAQEL
+BQAwFTETMBEGA1UEAwwKaWRwdGVzdGJlZDAeFw0xNTEyMTEwMjIwMTRaFw0zNTEy
+MTEwMjIwMTRaMBUxEzARBgNVBAMMCmlkcHRlc3RiZWQwggEiMA0GCSqGSIb3DQEB
+AQUAA4IBDwAwggEKAoIBAQCBXv0o3fmT8iluyLjJ4lBAVCW+ZRVyEXPYQuRi7vfD
+cO4a6d1kxiJLsaK0W88VNxjFQRr8PgDkWr28vwoH1rgk4pLsszLD48DBzD942peJ
+l/S6FnsIJjmaHcBh4pbNhU4yowu63iKkvttrcZAEbpEro6Z8CziWEx8sywoaYEQG
+ifPkr9ORV6Cn3txq+9gMBePG41GrtZrUGIu+xrndL0Shh4Pq0eq/9MAsVlIIXEa8
+9WfH8J2kFcTOfoWtIc70b7TLZQsx4YnNcnrGLSUEcstFyPLX+Xtv5SNZF89OOIxX
+VNjNvgE5DbJb9hMM4UAFqI+1bo9QqtxwThjc/sOvIxzNAgMBAAGjWzBZMB0GA1Ud
+DgQWBBStTyogRPuAVG6q7yPyav1uvE+7pTA4BgNVHREEMTAvggppZHB0ZXN0YmVk
+hiFodHRwczovL2lkcHRlc3RiZWQvaWRwL3NoaWJib2xldGgwDQYJKoZIhvcNAQEL
+BQADggEBAFMfoOv+oISGjvamq7+Y4G7ep5vxlAPeK3RATYPYvAmyH946qZXh98ni
+QXyuqZW5P5eEt86toY45IwDU5r09SKwHughEe99iiEkxh0mb2qo84qX9/qcg+kyN
+jeLd/OSyolpUCEFNwOFcog7pj7Eer+6AHbwTn1Mjb5TBsKwtDMJsaxPvdj0u7M5r
+xL/wHkFhn1rCo2QiojzjSlV3yLTh49iTyhE3cG+RxaNKDCxhp0jSSLX1BW/ZoPA8
++PMJEA+Q0QbyRD8aJOHN5O8jGxCa/ZzcOnYVL6AsEXoDiY3vAUYh1FUonOWw0m9H
+p+tGUbGS2l873J5PrsbpeKEVR/IIoKo=
+
+
+
+
+
+
+ urn:mace:shibboleth:1.0:nameIdentifier
+ urn:oasis:names:tc:SAML:2.0:nameid-format:transient
+
+
+
+
+
+
+
+
+
+
+
+
+ localhost
+
+
+
+
+
+
+MIIDEzCCAfugAwIBAgIUS9SuTXwsFVVG+LjOEAbLqqT/el0wDQYJKoZIhvcNAQEL
+BQAwFTETMBEGA1UEAwwKaWRwdGVzdGJlZDAeFw0xNTEyMTEwMjIwMjZaFw0zNTEy
+MTEwMjIwMjZaMBUxEzARBgNVBAMMCmlkcHRlc3RiZWQwggEiMA0GCSqGSIb3DQEB
+AQUAA4IBDwAwggEKAoIBAQCMAoDHx8xCIfv/6QKqt9mcHYmEJ8y2dKprUbpdcOjH
+YvNPIl/lHPsUyrb+Nc+q2CDeiWjVk1mWYq0UpIwpBMuw1H6+oOqr4VQRi65pin0M
+SfE0MWIaFo5FPvpvoptkHD4gvREbm4swyXGMczcMRfqgalFXhUD2wz8W3XAM5Cq2
+03XeJbj6TwjvKatG5XPdeUe2FBGuOO2q54L1hcIGnLMCQrg7D31lR13PJbjnJ0No
+5C3k8TPuny6vJsBC03GNLNKfmrKVTdzr3VKp1uay1G3DL9314fgmbl8HA5iRQmy+
+XInUU6/8NXZSF59p3ITAOvZQeZsbJjg5gGDip5OZo9YlAgMBAAGjWzBZMB0GA1Ud
+DgQWBBRPlM4VkKZ0U4ec9GrIhFQl0hNbLDA4BgNVHREEMTAvggppZHB0ZXN0YmVk
+hiFodHRwczovL2lkcHRlc3RiZWQvaWRwL3NoaWJib2xldGgwDQYJKoZIhvcNAQEL
+BQADggEBAIZ0a1ov3my3ljJG588I/PHx+TxAWONWmpKbO9c/qI3Drxk4oRIffiac
+ANxdvtabgIzrlk5gMMisD7oyqHJiWgKv5Bgctd8w3IS3lLl7wHX65mTKQRXniG98
+NIjkvfrhe2eeJxecOqnDI8GOhIGCIqZUn8ShdM/yHjhQ2Mh0Hj3U0LlKvnmfGSQl
+j0viGwbFCaNaIP3zc5UmCrdE5h8sWL3Fu7ILKM9RyFa2ILHrJScV9t623IcHffHP
+IeaY/WtuapsrqRFxuQL9QFWN0FsRIdLmjTq+00+B/XnnKRKFBuWfjhHLF/uu8f+E
+t6Lf23Kb8yD6ZR7dihMZAGHnYQ/hlhM=
+
+
+
+
+
+
+
+
+
+MIIDFDCCAfygAwIBAgIVAN3vv+b7KN5Se9m1RZsCllp/B/hdMA0GCSqGSIb3DQEB
+CwUAMBUxEzARBgNVBAMMCmlkcHRlc3RiZWQwHhcNMTUxMjExMDIyMDE0WhcNMzUx
+MjExMDIyMDE0WjAVMRMwEQYDVQQDDAppZHB0ZXN0YmVkMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAh91caeY0Q85uhaUyqFwP2bMjwMFxMzRlAoqBHd7g
+u6eo4duaeLz1BaoR2XTBpNNvFR5oHH+TkKahVDGeH5+kcnIpxI8JPdsZml1srvf2
+Z6dzJsulJZUdpqnngycTkGtZgEoC1vmYVky2BSAIIifmdh6s0epbHnMGLsHzMKfJ
+Cb/Q6dYzRWTCPtzE2VMuQqqWgeyMr7u14x/Vqr9RPEFsgY8GIu5jzB6AyUIwrLg+
+MNkv6aIdcHwxYTGL7ijfy6rSWrgBflQoYRYNEnseK0ZHgJahz4ovCag6wZAoPpBs
+uYlY7lEr89Ucb6NHx3uqGMsXlDFdE4QwfDLLhCYHPvJ0uwIDAQABo1swWTAdBgNV
+HQ4EFgQUAkOgED3iYdmvQEOMm6u/JmD/UTQwOAYDVR0RBDEwL4IKaWRwdGVzdGJl
+ZIYhaHR0cHM6Ly9pZHB0ZXN0YmVkL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEB
+CwUAA4IBAQBIdd4YWlnvJjql8+zKKgmWgIY7U8DA8e6QcbAf8f8cdE33RSnjI63X
+sv/y9GfmbAVAD6RIAXPFFeRYJ08GOxGI9axfNaKdlsklJ9bk4ducHqgCSWYVer3s
+RQBjxyOfSTvk9YCJvdJVQRJLcCvxwKakFCsOSnV3t9OvN86Ak+fKPVB5j2fM/0fZ
+Kqjn3iqgdNPTLXPsuJLJO5lITRiBa4onmVelAiCstI9PQiaEck+oAHnMTnC9JE/B
+DHv3e4rwq3LznlqPw0GSd7xqNTdMDwNOWjkuOr3sGpWS8ms/ZHHXV1Vd22uPe70i
+s00xrv14zLifcc8oj5DYzOhYRifRXgHX
+
+
+
+
+
+
+
+
+
+MIIDEzCCAfugAwIBAgIUG6Nn1rlERS1vsi88tcdzSYX0oqAwDQYJKoZIhvcNAQEL
+BQAwFTETMBEGA1UEAwwKaWRwdGVzdGJlZDAeFw0xNTEyMTEwMjIwMTRaFw0zNTEy
+MTEwMjIwMTRaMBUxEzARBgNVBAMMCmlkcHRlc3RiZWQwggEiMA0GCSqGSIb3DQEB
+AQUAA4IBDwAwggEKAoIBAQCBXv0o3fmT8iluyLjJ4lBAVCW+ZRVyEXPYQuRi7vfD
+cO4a6d1kxiJLsaK0W88VNxjFQRr8PgDkWr28vwoH1rgk4pLsszLD48DBzD942peJ
+l/S6FnsIJjmaHcBh4pbNhU4yowu63iKkvttrcZAEbpEro6Z8CziWEx8sywoaYEQG
+ifPkr9ORV6Cn3txq+9gMBePG41GrtZrUGIu+xrndL0Shh4Pq0eq/9MAsVlIIXEa8
+9WfH8J2kFcTOfoWtIc70b7TLZQsx4YnNcnrGLSUEcstFyPLX+Xtv5SNZF89OOIxX
+VNjNvgE5DbJb9hMM4UAFqI+1bo9QqtxwThjc/sOvIxzNAgMBAAGjWzBZMB0GA1Ud
+DgQWBBStTyogRPuAVG6q7yPyav1uvE+7pTA4BgNVHREEMTAvggppZHB0ZXN0YmVk
+hiFodHRwczovL2lkcHRlc3RiZWQvaWRwL3NoaWJib2xldGgwDQYJKoZIhvcNAQEL
+BQADggEBAFMfoOv+oISGjvamq7+Y4G7ep5vxlAPeK3RATYPYvAmyH946qZXh98ni
+QXyuqZW5P5eEt86toY45IwDU5r09SKwHughEe99iiEkxh0mb2qo84qX9/qcg+kyN
+jeLd/OSyolpUCEFNwOFcog7pj7Eer+6AHbwTn1Mjb5TBsKwtDMJsaxPvdj0u7M5r
+xL/wHkFhn1rCo2QiojzjSlV3yLTh49iTyhE3cG+RxaNKDCxhp0jSSLX1BW/ZoPA8
++PMJEA+Q0QbyRD8aJOHN5O8jGxCa/ZzcOnYVL6AsEXoDiY3vAUYh1FUonOWw0m9H
+p+tGUbGS2l873J5PrsbpeKEVR/IIoKo=
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/midpoint/configs-and-secrets/midpoint/shibboleth/shibboleth2.xml b/midpoint/configs-and-secrets/midpoint/shibboleth/shibboleth2.xml
new file mode 100644
index 0000000..a644264
--- /dev/null
+++ b/midpoint/configs-and-secrets/midpoint/shibboleth/shibboleth2.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SAML2
+
+
+
+ SAML2 Local
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/midpoint/configs-and-secrets/midpoint/shibboleth/sp-cert.pem b/midpoint/configs-and-secrets/midpoint/shibboleth/sp-cert.pem
new file mode 100644
index 0000000..0f5474e
--- /dev/null
+++ b/midpoint/configs-and-secrets/midpoint/shibboleth/sp-cert.pem
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDqDCCApCgAwIBAgIJAKUZrfriIt9cMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNV
+BAYTAlVTMQswCQYDVQQIDAJNSTESMBAGA1UEBwwJQW5uIEFyYm9yMRcwFQYDVQQK
+DA5JbnRlcm5ldDIvVElFUjEgMB4GA1UEAwwXZXZvbHZldW0uc3AuZXhhbXBsZS5v
+cmcwHhcNMTgwOTE0MDU0NjU3WhcNMTkwOTE0MDU0NjU3WjBpMQswCQYDVQQGEwJV
+UzELMAkGA1UECAwCTUkxEjAQBgNVBAcMCUFubiBBcmJvcjEXMBUGA1UECgwOSW50
+ZXJuZXQyL1RJRVIxIDAeBgNVBAMMF2V2b2x2ZXVtLnNwLmV4YW1wbGUub3JnMIIB
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw5v1zxlM94yaBssgNNbIUJwW
+XxbGxgSs2AWBeg2aEi/VQd2UE5ivZakNJlqWSJyHo2xE4kxeSyBBxinjSyhmpNao
+xIcqQsgW0gxo4SEHo3kUXWPo+of/pj6CslutsSJZWGTRV0dHITvaWX+NM8eXMfgu
+mJFwy3RMdLaWQhY1Dyi2jNoO+DZnfNgPyPeEZcmORaoeEID9QdZfHtcgTf2QfSHq
++xsTwHB6Ro5t7YD2ma8Krb/XcDTfsq3qJemd7LhPj5lGmhYSMgDbgwEkZgZ1kBOP
+lfsP2BvX5nipv7Vd1C5YXmv+NDR8V3yAWBC7ZAenxGmrnkaSVXnpUplUsGGm1QID
+AQABo1MwUTAdBgNVHQ4EFgQUuxSZwW6V1P/b0tsTM32OU/v/n+UwHwYDVR0jBBgw
+FoAUuxSZwW6V1P/b0tsTM32OU/v/n+UwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
+9w0BAQsFAAOCAQEAJWLXEfZkPeUyiGvsIUjczzdF3ptqXoP9aETS2pOV9sTri19R
+TsQZW6XQRHGtuEOsqEGH8yiTdGR5hbGC+ynH/xTJnK+tBn/R3KrgxLKyMvoUzAPl
+mhVq1dh+ZEtbsRpQRRubP6nm9kXNma0cXrkJSzuWM0W+l/xSOOYiSRRk3XWJfVjn
+9jQlcJRh5SOkKN08oZHrCYKxToEuOfV8PtRj3T80DhsBTv2SHqhg4cBhzQPb0Kjm
+9m4IkYOz8c5ZtuHDGnqMHw60Nyt+jyik4mMFP2frcOVP0W0sgwcfHllYzHoA/Khq
+Yk3TBVs1BjPuNDJWHct8Eo68YP2/ZvzqfVM87Q==
+-----END CERTIFICATE-----
diff --git a/midpoint/configs-and-secrets/midpoint/shibboleth/sp-key.pem b/midpoint/configs-and-secrets/midpoint/shibboleth/sp-key.pem
new file mode 100644
index 0000000..b4c7a68
--- /dev/null
+++ b/midpoint/configs-and-secrets/midpoint/shibboleth/sp-key.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDDm/XPGUz3jJoG
+yyA01shQnBZfFsbGBKzYBYF6DZoSL9VB3ZQTmK9lqQ0mWpZInIejbETiTF5LIEHG
+KeNLKGak1qjEhypCyBbSDGjhIQejeRRdY+j6h/+mPoKyW62xIllYZNFXR0chO9pZ
+f40zx5cx+C6YkXDLdEx0tpZCFjUPKLaM2g74Nmd82A/I94RlyY5Fqh4QgP1B1l8e
+1yBN/ZB9Ier7GxPAcHpGjm3tgPaZrwqtv9dwNN+yreol6Z3suE+PmUaaFhIyANuD
+ASRmBnWQE4+V+w/YG9fmeKm/tV3ULlhea/40NHxXfIBYELtkB6fEaaueRpJVeelS
+mVSwYabVAgMBAAECggEAeQxOdTaG9ro/puyUpZ40oA23mmiR4YCLJbNiiJFaQt7u
+7a+dLvNRt2uCA7YTQiP7nBooFpKD16HCkkrhqWT7AA8GqXero2AHHz0mugqim3sW
+KyTkzATVI5+TaaRqPC+xco4RLh2h2uMbID9atixRWE7pJuj6EC2MEr3bBlKPyyyj
+gYEi7PLZC5oEMHCZSteVik0yXI3kJJEneuVgFHTc+mwuz/qzqJP7f93i77c/FcRd
+pWCo1fg0Xuxh3M17Y/0e0ZzSBowbRVv7VkJDKZmdAYE+DaODdaIR8rrQVqkIEX4A
+4m/ufAS5j2Rck0MEY9mu5STQByo1EGiAsxTp8pVCkQKBgQD905GZiMIZ+yBM1aXa
+ZJj/BF2a/s/wf3N6YLtfobWGDAGXDIe07lr+jSK1+vYRcqHW/a6/H0JsVg+gD9Gs
+10p0ry8AVWqR+5GRRDUKBMBXVDxMFZybXvMzRnR67SJA6TVEirMHYeawtzEjzha0
+csIo0kCe3Ke22mR8aebFSFDonwKBgQDFSMTvC/y18k8n9NQ3Rsu2Z4itH3nZ3fM3
+e7+gFxQyCXJHR/kTaAPVb2HAsuA+lAemnEHJUhOjao0QiUilWkE44wSfx7LwFPWP
+XO89oOWGKhOclkzs2nvxOcC/pEjWm83cgOz/IPWqkw0/wefmh6RDcPz1JgwO2Jij
+P14FGG9YCwKBgQDPdmOlODBeB/Iomt+Kl3qtxaW0j9zp12JNfk7oJUY3IA0Uprss
+2T0qnbTnRQ5myGkbThHMSQKDhfwTeZqJSRakNKOYBDisxQ//yd4IKEYFmuYF0gxE
+ueDR4h5GcxfyMirFsRAPUqe5fKH/f+zy5HFp6B/FONkkDXDgd7aVPTxURQKBgF8q
+sUUXJTqnvqNpqQ1ZK1+8JeRNcLw2IuM64L9bIrTYdbYI9A/2dxL4fdE0+JN3WRF4
+AwwYeby044N8lfydwySr7kkdTiYeFi6oCAhUmyPTHE7G+iivZGaDE4Xeu/w6gF3E
+G48e2SMFeLiu0y0TdZvK31tqlRp8RXVKVhJjLSLtAoGBAP01ZMUJu5AU19c7xRTy
+kfVzE6PI+E8ZZ6qEWMs2Xt3NQL4Bffh94QQCmQYX3AY7xVD1gAQgbLXx4lEDQdzu
+i/kV4t+oeYwXSn1UEgOQj504qwR3gi4JZdfa0LbiMzhp9qyxofyk7Lre7Tc3Xmu1
+jyigTF7oAYoPBWk/mAthK1wO
+-----END PRIVATE KEY-----
diff --git a/midpoint/docker-compose.yml b/midpoint/docker-compose.yml
index 88d6af0..430dcde 100644
--- a/midpoint/docker-compose.yml
+++ b/midpoint/docker-compose.yml
@@ -17,48 +17,66 @@ services:
networks:
- back
volumes:
- - midpoint_mysql:/var/lib/mysql
+ - midpoint_data:/var/lib/mysql
midpoint-server:
build: ./midpoint-server/
- depends_on:
- - midpoint-data
expose:
- - 8080
+ - 443
ports:
- - 8080:8080
- volumes:
- - midpoint_home:/opt/midpoint/var
+ - 8443:443
+ environment:
+ - AUTHENTICATION
+ - ENV
+ - USERTOKEN
+ - REPO_DATABASE_TYPE
+ - REPO_JDBC_URL
+ - REPO_HOST
+ - REPO_PORT
+ - REPO_DATABASE
+ - REPO_USER
+ - REPO_PASSWORD_FILE
+ - KEYSTORE_PASSWORD_FILE
+ - MEM
networks:
- - back
+ - back
secrets:
- - m_database_password.txt
- - m_keystore_password.txt
-# the following is just to demonstrate required normalization of logging parameters
-# environment:
-# - LOGFILE=midpoint.log
-# - COMPONENT=midpoint;tier
-# - "USERTOKEN=user token "
-# - ENV=demo only
-#
-# repository configuration examples
-# - REPO_DATABASE_TYPE=mariadb
-# - REPO_HOST=xyz
-# - REPO_PORT=10000
-# the following overrides default URL construction
-# - REPO_JDBC_URL=jdbc:mariadb://midpoint-data:3306/midpoint
+ - m_database_password.txt
+ - m_keystore_password.txt
+ - m_sp-key.pem
+ - m_host-key.pem
+ volumes:
+ - midpoint_home:/opt/midpoint/var
+ - type: bind
+ source: ./configs-and-secrets/midpoint/shibboleth/shibboleth2.xml
+ target: /etc/shibboleth/shibboleth2.xml
+ - type: bind
+ source: ./configs-and-secrets/midpoint/shibboleth/idp-metadata.xml
+ target: /etc/shibboleth/idp-metadata.xml
+ - type: bind
+ source: ./configs-and-secrets/midpoint/shibboleth/sp-cert.pem
+ target: /etc/shibboleth/sp-cert.pem
+ - type: bind
+ source: ./configs-and-secrets/midpoint/httpd/host-cert.pem
+ target: /etc/pki/tls/certs/host-cert.pem
+ - type: bind
+ source: ./configs-and-secrets/midpoint/httpd/host-cert.pem
+ target: /etc/pki/tls/certs/cachain.pem
networks:
back:
driver: bridge
-
secrets:
+ m_host-key.pem:
+ file: ./configs-and-secrets/midpoint/httpd/host-key.pem
+ m_sp-key.pem:
+ file: ./configs-and-secrets/midpoint/shibboleth/sp-key.pem
m_database_password.txt:
- file: ./configs-and-secrets/midpoint/database_password.txt
+ file: ./configs-and-secrets/midpoint/application/database_password.txt
m_keystore_password.txt:
- file: ./configs-and-secrets/midpoint/keystore_password.txt
+ file: ./configs-and-secrets/midpoint/application/keystore_password.txt
volumes:
- midpoint_mysql:
+ midpoint_data:
midpoint_home:
diff --git a/midpoint/midpoint-data/Dockerfile b/midpoint/midpoint-data/Dockerfile
index fcaa4e0..3249b23 100644
--- a/midpoint/midpoint-data/Dockerfile
+++ b/midpoint/midpoint-data/Dockerfile
@@ -23,13 +23,9 @@ RUN mysql_install_db \
&& echo "/usr/bin/mysqld_safe &" > /tmp/config \
&& echo "mysqladmin --silent --wait=30 ping || exit 1" >> /tmp/config \
&& echo "mysql -e \"CREATE USER 'root'@'%' IDENTIFIED BY '`cat /tmp/database_password.txt`';\"" >> /tmp/config \
- && echo "echo ok0" >> /tmp/config \
&& echo "mysql -e 'GRANT ALL PRIVILEGES ON *.* TO \"root\"@\"%\" WITH GRANT OPTION;'" >> /tmp/config \
- && echo "echo ok1" >> /tmp/config \
&& echo "mysql -e 'CREATE DATABASE midpoint CHARACTER SET utf8 COLLATE utf8_bin;'" >> /tmp/config \
- && echo "echo ok2" >> /tmp/config \
&& echo "mysql -e \"SET PASSWORD FOR 'root'@'localhost' = PASSWORD('`cat /tmp/database_password.txt`');\"" >> /tmp/config \
- && echo "echo ok3" >> /tmp/config \
&& cat /tmp/config \
&& bash /tmp/config \
&& rm -f /tmp/config /tmp/database_password.txt
diff --git a/midpoint/midpoint-server/Dockerfile b/midpoint/midpoint-server/Dockerfile
index 4e58c39..6baaf22 100644
--- a/midpoint/midpoint-server/Dockerfile
+++ b/midpoint/midpoint-server/Dockerfile
@@ -6,22 +6,34 @@ FROM tier/shibboleth_sp
MAINTAINER info@evolveum.com
-# TODO switch to other appropriate Java implementation
-
RUN yum -y install java-1.8.0-openjdk
+RUN rm /etc/shibboleth/sp-key.pem /etc/shibboleth/sp-cert.pem
+
+COPY container_files/httpd/conf/* /etc/httpd/conf.d/
+COPY container_files/shibboleth/* /etc/shibboleth/
+COPY container_files/usr-local-bin/* /usr/local/bin/
+
+RUN cp /dev/null /etc/httpd/conf.d/ssl.conf \
+ && sed -i 's/LogFormat "/LogFormat "httpd;access_log;%{ENV}e;%{USERTOKEN}e;/g' /etc/httpd/conf/httpd.conf \
+ && echo -e "\nErrorLogFormat \"httpd;error_log;%{ENV}e;%{USERTOKEN}e;[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i\"" >> /etc/httpd/conf/httpd.conf \
+ && sed -i 's/CustomLog "logs\/access_log"/CustomLog "\/tmp\/logpipe"/g' /etc/httpd/conf/httpd.conf \
+ && sed -i 's/ErrorLog "logs\/error_log"/ErrorLog "\/tmp\/logpipe"/g' /etc/httpd/conf/httpd.conf \
+ && echo -e "\nPassEnv ENV" >> /etc/httpd/conf/httpd.conf \
+ && echo -e "\nPassEnv USERTOKEN" >> /etc/httpd/conf/httpd.conf
+
# Build arguments
ARG MP_VERSION=3.9-SNAPSHOT
ARG MP_DIST_FILE=midpoint-${MP_VERSION}-dist.tar.gz
-ENV MP_DIR=/opt/midpoint
-
-# Copying files
+ENV MP_DIR /opt/midpoint
RUN mkdir -p ${MP_DIR}/var
+
COPY ${MP_DIST_FILE} ${MP_DIR}
-COPY container_files/ ${MP_DIR}/
+COPY container_files/mp-dir/ ${MP_DIR}/
+
RUN echo 'Extracting midPoint archive...' \
&& tar xzf ${MP_DIR}/midpoint-${MP_VERSION}-dist.tar.gz -C ${MP_DIR} --strip-components=1
@@ -30,39 +42,29 @@ VOLUME ${MP_DIR}/var
# Repository parameters
ENV REPO_HOST midpoint-data
-ENV REPO_PORT 3306
+ENV REPO_PORT default
ENV REPO_USER root
ENV REPO_DATABASE midpoint
ENV REPO_JDBC_URL default
ENV REPO_PASSWORD_FILE /run/secrets/m_database_password.txt
ENV REPO_DATABASE_TYPE mariadb
-ENV KEYSTORE_PASSWORD_FILE /run/secrets/m_keystore_password.txt
-
# Logging parameters
-ENV COMPONENT midpoint
-ENV LOGFILE midpoint.log
ENV ENV demo
ENV USERTOKEN $MP_VERSION
+# Authentication/web
+
+ENV AUTHENTICATION internal
+ENV SSO_HEADER uid
+ENV AJP_ENABLED true
+ENV AJP_PORT 9090
+ENV LOGOUT_URL https://localhost:8443/Shibboleth.sso/Logout
+
# Other parameters
-ENV MEM 2048M
-
-# Execution
-
-CMD java -Xmx$MEM -Xms2048M -Dfile.encoding=UTF8 \
- -Dmidpoint.home=$MP_DIR/var \
- -Dmidpoint.repository.database=$REPO_DATABASE_TYPE \
- -Dmidpoint.repository.jdbcUsername=$REPO_USER \
- -Dmidpoint.repository.jdbcPassword_FILE=$REPO_PASSWORD_FILE \
- -Dmidpoint.repository.jdbcUrl="`$MP_DIR/repository-url`" \
- -Dmidpoint.repository.hibernateHbm2ddl=none \
- -Dmidpoint.repository.missingSchemaAction=create \
- -Dmidpoint.repository.initializationFailTimeout=60000 \
- -Dmidpoint.keystore.keyStorePassword_FILE=$KEYSTORE_PASSWORD_FILE \
- -Dmidpoint.logging.console.enabled=true \
- -Dmidpoint.logging.console.prefix="`$MP_DIR/log-prefix`" \
- -Dmidpoint.logging.console.timezone=UTC \
- -jar $MP_DIR/lib/midpoint.war
+ENV KEYSTORE_PASSWORD_FILE /run/secrets/m_keystore_password.txt
+ENV MEM 2048m
+
+ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
diff --git a/midpoint/midpoint-server/container_files/httpd/conf/midpoint.conf.auth.internal b/midpoint/midpoint-server/container_files/httpd/conf/midpoint.conf.auth.internal
new file mode 100644
index 0000000..690a4cd
--- /dev/null
+++ b/midpoint/midpoint-server/container_files/httpd/conf/midpoint.conf.auth.internal
@@ -0,0 +1,6 @@
+
+Timeout 2400
+ProxyTimeout 2400
+ProxyBadHeader Ignore
+
+ProxyPass /midpoint ajp://localhost:9090/midpoint timeout=2400
\ No newline at end of file
diff --git a/midpoint/midpoint-server/container_files/httpd/conf/midpoint.conf.auth.shibboleth b/midpoint/midpoint-server/container_files/httpd/conf/midpoint.conf.auth.shibboleth
new file mode 100644
index 0000000..e827b9f
--- /dev/null
+++ b/midpoint/midpoint-server/container_files/httpd/conf/midpoint.conf.auth.shibboleth
@@ -0,0 +1,15 @@
+
+Timeout 2400
+ProxyTimeout 2400
+ProxyBadHeader Ignore
+
+ProxyPass /midpoint ajp://localhost:9090/midpoint timeout=2400
+
+
+
+ AuthType shibboleth
+ ShibRequestSetting requireSession 1
+ ShibRequireSession on
+ ShibUseHeaders On
+ require shibboleth
+
diff --git a/midpoint/midpoint-server/container_files/httpd/conf/ssl-enable.conf b/midpoint/midpoint-server/container_files/httpd/conf/ssl-enable.conf
new file mode 100644
index 0000000..35bf295
--- /dev/null
+++ b/midpoint/midpoint-server/container_files/httpd/conf/ssl-enable.conf
@@ -0,0 +1,28 @@
+# modern configuration, tweak to your needs
+SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
+SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
+SSLHonorCipherOrder on
+SSLCompression off
+
+# OCSP Stapling, only in httpd 2.3.3 and later
+SSLUseStapling on
+SSLStaplingResponderTimeout 5
+SSLStaplingReturnResponderErrors off
+SSLStaplingCache shmcb:/var/run/ocsp(128000)
+
+Listen 443 https
+
+ RewriteEngine on
+ RewriteRule "^/$" "/midpoint/" [R]
+
+
+ SSLEngine on
+ SSLCertificateChainFile /etc/pki/tls/certs/cachain.pem
+
+ SSLCertificateFile /etc/pki/tls/certs/host-cert.pem
+
+ SSLCertificateKeyFile /etc/pki/tls/private/host-key.pem
+
+ # HSTS (mod_headers is required) (15768000 seconds = 6 months)
+ Header always set Strict-Transport-Security "max-age=15768000"
+
diff --git a/midpoint/midpoint-server/container_files/log-prefix b/midpoint/midpoint-server/container_files/log-prefix
deleted file mode 100755
index fb7c278..0000000
--- a/midpoint/midpoint-server/container_files/log-prefix
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-C=${COMPONENT//[;]/_}
-L=${LOGFILE//[;]/_}
-E=${ENV//[; ]/_}
-U=${USERTOKEN//[; ]/_}
-echo $C\;$L\;$E\;$U\;
diff --git a/midpoint/midpoint-server/container_files/mp-dir/active-spring-profiles b/midpoint/midpoint-server/container_files/mp-dir/active-spring-profiles
new file mode 100755
index 0000000..40058e6
--- /dev/null
+++ b/midpoint/midpoint-server/container_files/mp-dir/active-spring-profiles
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+case $AUTHENTICATION in
+ shibboleth)
+ echo "default,sso"
+ ;;
+ internal)
+ echo "default"
+ ;;
+ *)
+ echo "default"
+esac
+
diff --git a/midpoint/midpoint-server/container_files/repository-url b/midpoint/midpoint-server/container_files/mp-dir/repository-url
similarity index 51%
rename from midpoint/midpoint-server/container_files/repository-url
rename to midpoint/midpoint-server/container_files/mp-dir/repository-url
index 8681880..2ba287a 100755
--- a/midpoint/midpoint-server/container_files/repository-url
+++ b/midpoint/midpoint-server/container_files/mp-dir/repository-url
@@ -1,6 +1,33 @@
#!/bin/bash
+function resolvePort() {
+ if [ $REPO_PORT == "default" ]; then
+ case $REPO_DATABASE_TYPE in
+ mariadb)
+ echo 3306
+ ;;
+ mysql)
+ echo 3306
+ ;;
+ oracle)
+ echo 1521
+ ;;
+ postgresql)
+ echo 5432
+ ;;
+ sqlserver)
+ echo 1433
+ ;;
+ *)
+ echo "~~~~~ please supply JDBC port for your repository ~~~~~"
+ esac
+ else
+ echo $REPO_PORT
+ fi
+}
+
if [ $REPO_JDBC_URL == "default" ]; then
+ REPO_PORT=$( resolvePort )
case $REPO_DATABASE_TYPE in
mariadb)
echo "jdbc:mariadb://$REPO_HOST:$REPO_PORT/$REPO_DATABASE?characterEncoding=utf8"
diff --git a/midpoint/midpoint-server/container_files/shibboleth/attribute-map.xml b/midpoint/midpoint-server/container_files/shibboleth/attribute-map.xml
new file mode 100644
index 0000000..a6725f3
--- /dev/null
+++ b/midpoint/midpoint-server/container_files/shibboleth/attribute-map.xml
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/shibboleth-integration/mp-gr/midpoint-server/container_files/shibboleth/native.logger b/midpoint/midpoint-server/container_files/shibboleth/native.logger
similarity index 100%
rename from shibboleth-integration/mp-gr/midpoint-server/container_files/shibboleth/native.logger
rename to midpoint/midpoint-server/container_files/shibboleth/native.logger
diff --git a/shibboleth-integration/mp-gr/midpoint-server/container_files/shibboleth/shibd.logger b/midpoint/midpoint-server/container_files/shibboleth/shibd.logger
similarity index 100%
rename from shibboleth-integration/mp-gr/midpoint-server/container_files/shibboleth/shibd.logger
rename to midpoint/midpoint-server/container_files/shibboleth/shibd.logger
diff --git a/midpoint/midpoint-server/container_files/usr-local-bin/entrypoint.sh b/midpoint/midpoint-server/container_files/usr-local-bin/entrypoint.sh
new file mode 100755
index 0000000..446fc2a
--- /dev/null
+++ b/midpoint/midpoint-server/container_files/usr-local-bin/entrypoint.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+# normalizing logging variables as required by TIER
+export ENV=${ENV//[; ]/_}
+export USERTOKEN=${USERTOKEN//[; ]/_}
+
+echo "Linking secrets and config files; using authentication: $AUTHENTICATION"
+ln -sf /run/secrets/m_sp-key.pem /etc/shibboleth/sp-key.pem
+ln -sf /run/secrets/m_host-key.pem /etc/pki/tls/private/host-key.pem
+ln -sf /etc/httpd/conf.d/midpoint.conf.auth.$AUTHENTICATION /etc/httpd/conf.d/midpoint.conf
+
+httpd-shib-foreground &
+
+if [ "$AUTHENTICATION" = "shibboleth" ]; then
+ LOGOUT_URL_DIRECTIVE="-Dauth.logout.url=$LOGOUT_URL"
+else
+ LOGOUT_URL_DIRECTIVE=
+fi
+
+java -Xmx$MEM -Xms2048m -Dfile.encoding=UTF8 \
+ -Dmidpoint.home=$MP_DIR/var \
+ -Dmidpoint.repository.database=$REPO_DATABASE_TYPE \
+ -Dmidpoint.repository.jdbcUsername=$REPO_USER \
+ -Dmidpoint.repository.jdbcPassword_FILE=$REPO_PASSWORD_FILE \
+ -Dmidpoint.repository.jdbcUrl="`$MP_DIR/repository-url`" \
+ -Dmidpoint.repository.hibernateHbm2ddl=none \
+ -Dmidpoint.repository.missingSchemaAction=create \
+ -Dmidpoint.repository.initializationFailTimeout=60000 \
+ -Dmidpoint.keystore.keyStorePassword_FILE=$KEYSTORE_PASSWORD_FILE \
+ -Dmidpoint.logging.console.enabled=true \
+ -Dmidpoint.logging.console.prefix="midpoint;midpoint.log;$ENV;$USERTOKEN;" \
+ -Dmidpoint.logging.console.timezone=UTC \
+ -Dspring.profiles.active="`$MP_DIR/active-spring-profiles`" \
+ -Dauth.sso.header=$SSO_HEADER \
+ $LOGOUT_URL_DIRECTIVE \
+ -Dserver.tomcat.ajp.enabled=$AJP_ENABLED \
+ -Dserver.tomcat.ajp.port=$AJP_PORT \
+ -jar $MP_DIR/lib/midpoint.war
diff --git a/shibboleth-integration/README.md b/shibboleth-integration/README.md
deleted file mode 100644
index 3dc739e..0000000
--- a/shibboleth-integration/README.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# Overview
-
-This is a demonstration of midPoint - Grouper integration. It is a work in progress. It is described in more detail [here](https://spaces.at.internet2.edu/pages/viewpage.action?spaceKey=TIERENTREG&title=midPoint+-+Grouper+integration+demo).
-
-This demonstration is derived from [TIER Grouper composition](https://github.internet2.edu/docker/grouper/tree/master/test-compose).
-
-There are the following containers:
-
-- `sources`: source data (MySQL), simulating systems of record
-- `midpoint-server`: midPoint application (GUI, REST, tasks, etc); it reads from `sources`, updates its own repository and `directory`
-- `midpoint-data`: midPoint repository (MySQL)
-- `directory`: central LDAP directory; used also by Grouper and Shibboleth IdP
-- `grouper-ui`, `grouper-daemon`, `grouper-ws`, `gsh`: Grouper containers
-- `grouper-data`: the Grouper repository (MySQL)
-- `idp`: Shibboleth identity provider; it uses `directory` as the auhentication source
-- `targets`: target(s) where identities should be provisioned (currently MySQL)
-
-All files needed to build and compose these containers are in `mp-gr` directory.
-
-# Building and starting
-## Downloading midPoint
-
-Before building, please build or download current midpoint-3.9-SNAPSHOT-dist.tar.gz file and put it into `mp-gr/midpoint-server` directory. There are the following options:
-1. Build midPoint from sources as described [here](https://wiki.evolveum.com/display/midPoint/Building+MidPoint+From+Source+Code)
-2. Use `mp-gr/download-midpoint` script
-3. Download midPoint manually from [Evolveum Nexus](https://nexus.evolveum.com/nexus/content/repositories/snapshots/com/evolveum/midpoint/dist/3.9-SNAPSHOT/) - note you have to choose the correct version
-
-## Creating Docker composition
-
-After midPoint archive is correctly placed into `mp-gr/midpoint-server` directory, please execute the following commands:
-
-```
-$ cd mp-gr
-$ docker-compose up --build
-```
-
-## Uploading initial objects
-
-After Docker containers are up, check that you can log into midPoint at `http://localhost:8080/midpoint` using `administrator/5ecr3t`.
-Then execute the following:
-
-```
-$ ./upload-objects
-Uploading midpoint-objects/objectTemplates/template-org-course.xml (objectTemplates, d35bdec6-643b-41d8-ad5d-8eeb701169d1)
-Uploading midpoint-objects/objectTemplates/template-role-generic-group.xml (objectTemplates, 804f8658-0828-4dab-a2ed-f13985e4f80b)
-Uploading midpoint-objects/objectTemplates/template-role-affiliation.xml (objectTemplates, d87aa04f-189c-4d6f-b6e1-216dad622142)
-Uploading midpoint-objects/objectTemplates/template-org-department.xml (objectTemplates, 0caf2f69-7c72-4946-b218-d84e78b2a057)
-Uploading midpoint-objects/resources/scriptedsql-sis-courses.xml (resources, 13660d60-071b-4596-9aa1-5efcd1256c04)
-Uploading midpoint-objects/resources/ldap-main.xml (resources, 0a37121f-d515-4a23-9b6d-554c5ef61272)
-Uploading midpoint-objects/resources/scriptedsql-sis-persons.xml (resources, 4d70a0da-02dd-41cf-b0a1-00e75d3eaa15)
-Uploading midpoint-objects/resources/scriptedsql-grouper2.xml (resources, 6dcb84f5-bf82-4931-9072-fbdf87f96442)
-Uploading midpoint-objects/systemConfigurations/SystemConfiguration.xml (systemConfigurations, 00000000-0000-0000-0000-000000000001)
-Uploading midpoint-objects/orgs/org-departments.xml (orgs, bee44c51-2469-411d-bac7-695728e9c241)
-Uploading midpoint-objects/orgs/org-courses.xml (orgs, 225e9360-0639-40ba-8a31-7f31bef067be)
-Uploading midpoint-objects/roles/metarole-department.xml (roles, ffa9eaec-9539-4d15-97aa-24cd5b92ca5b)
-Uploading midpoint-objects/roles/role-grouper-sysadmin.xml (roles, d48ec05b-fffd-4262-acd3-d9ff63365b62)
-Uploading midpoint-objects/roles/metarole-course.xml (roles, 8aa99e7b-f7d3-4585-9800-14bab4d26a43)
-Uploading midpoint-objects/roles/metarole-affiliation.xml (roles, fecae27b-d1d3-40ae-95fa-8f7e44e2ee70)
-Uploading midpoint-objects/roles/role-grouper-basic.xml (roles, c89f31dd-8d4f-4e0a-82cb-58ff9d8c1b2f)
-Uploading midpoint-objects/roles/metarole-generic-group.xml (roles, c691e15a-f30b-4e15-8445-532db07ceeeb)
-```
-
-## First steps after installation (importing persons, and so on)
-
-Now log into midPoint as `administrator`, and
-
-1. Go through all 4 resources, and execute `Test resource` on each of them. Verify that everything is OK (green).
-2. Open role `role-grouper-sysadmin` and reconcile it. Verify that LDAP group of `cn=sysadmingroup,ou=Groups,dc=internet2,dc=edu` was created.
-3. Manually import `midpoint-objects-manual/tasks/task-import-sis-persons.xml` and wait for its successful completion. It should import 1000 users from SIS Persons and create appropriate midPoint users and LDAP accounts.
-4. After the previous task is done, manually import `midpoint-objects-manual/tasks/task-import-sis-courses.xml` and wait for its successful completion. It should import courses for the users from SIS Courses and create appropriate groups and group membership in LDAP.
-5. Select Grouper administrator: in midPoint open e.g. user `banderson` and assign him a role `role-grouper-sysadmin`. Also, set up his password to some value, e.g. `password`. Check that he is now member of LDAP group `cn=sysadmingroup,ou=Groups,dc=internet2,dc=edu`.
-6. Wait for a minute so that Grouper gets synchronized. Then try to log in as `banderson` using `https://localhost/grouper`.
-
-# TODO
-
- - see the TODO items in [wiki page](https://spaces.at.internet2.edu/pages/viewpage.action?spaceKey=TIERENTREG&title=midPoint+-+Grouper+integration+demo)
- - performance of initial import from courses (500ms per user)
- - fix hardcoded password for grouper loader LDAP
diff --git a/shibboleth-integration/download-midpoint b/shibboleth-integration/download-midpoint
deleted file mode 100644
index 5cb8de8..0000000
--- a/shibboleth-integration/download-midpoint
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-# There's something wrong with Evolveum nexus, so we have to manually resolve 3.9-SNAPSHOT
-
-echo "Determining midPoint 3.9-SNAPSHOT version"
-echo "-----------------------------------------"
-v=`curl "http://nexus.evolveum.com/nexus/content/repositories/snapshots/com/evolveum/midpoint/dist/3.9-SNAPSHOT/maven-metadata.xml" | sed -n 's:.*\(.*\).*:\1:p' | sed -n '1 p'`
-echo "-----------------------------------------"
-echo "Current midPoint 3.9-SNAPSHOT version is $v; starting the download"
-echo "-----------------------------------------"
-curl --output mp-gr/midpoint-server/midpoint-3.9-SNAPSHOT-dist.tar.gz "https://evolveum.com/downloads/midpoint-tier/midpoint-3.9-SNAPSHOT-dist.tar.gz"
-echo "-----------------------------------------"
-echo "Checking the download..."
-if tar -tf mp-gr/midpoint-server/midpoint-3.9-SNAPSHOT-dist.tar.gz >/dev/null; then
- echo "OK"
-else
- echo "The file was not downloaded correctly"
-fi
-
diff --git a/shibboleth-integration/midpoint-objects-manual/tasks/task-import-sis-courses.xml b/shibboleth-integration/midpoint-objects-manual/tasks/task-import-sis-courses.xml
deleted file mode 100644
index 9aca2fb..0000000
--- a/shibboleth-integration/midpoint-objects-manual/tasks/task-import-sis-courses.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
- Import SIS courses
-
- account
- ri:AccountObjectClass
-
- 1535408076153-0-1
-
- runnable
- ImportingAccounts
- http://midpoint.evolveum.com/xml/ns/public/model/synchronization/task/import/handler-3
-
- single
- loose
-
diff --git a/shibboleth-integration/midpoint-objects-manual/tasks/task-import-sis-persons.xml b/shibboleth-integration/midpoint-objects-manual/tasks/task-import-sis-persons.xml
deleted file mode 100644
index 1fb2e20..0000000
--- a/shibboleth-integration/midpoint-objects-manual/tasks/task-import-sis-persons.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
- Import SIS persons
-
- account
- ri:AccountObjectClass
-
- 1535407239440-0-1
-
- runnable
- ImportingAccounts
- http://midpoint.evolveum.com/xml/ns/public/model/synchronization/task/import/handler-3
-
- single
- loose
-
diff --git a/shibboleth-integration/midpoint-objects/objectTemplates/template-org-course.xml b/shibboleth-integration/midpoint-objects/objectTemplates/template-org-course.xml
deleted file mode 100644
index 4eafd08..0000000
--- a/shibboleth-integration/midpoint-objects/objectTemplates/template-org-course.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- template-org-course
-
- strong
-
-
- RoleType
- 8aa99e7b-f7d3-4585-9800-14bab4d26a43
-
-
-
- assignment
-
-
-
-
\ No newline at end of file
diff --git a/shibboleth-integration/midpoint-objects/objectTemplates/template-org-department.xml b/shibboleth-integration/midpoint-objects/objectTemplates/template-org-department.xml
deleted file mode 100644
index df9b223..0000000
--- a/shibboleth-integration/midpoint-objects/objectTemplates/template-org-department.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- template-org-department
-
- strong
-
-
- RoleType
- ffa9eaec-9539-4d15-97aa-24cd5b92ca5b
-
-
-
- assignment
-
-
-
-
\ No newline at end of file
diff --git a/shibboleth-integration/midpoint-objects/objectTemplates/template-role-affiliation.xml b/shibboleth-integration/midpoint-objects/objectTemplates/template-role-affiliation.xml
deleted file mode 100644
index 3a9c726..0000000
--- a/shibboleth-integration/midpoint-objects/objectTemplates/template-role-affiliation.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- template-role-affiliation
-
- strong
-
-
- RoleType
- fecae27b-d1d3-40ae-95fa-8f7e44e2ee70
-
-
-
- assignment
-
-
-
\ No newline at end of file
diff --git a/shibboleth-integration/midpoint-objects/objectTemplates/template-role-generic-group.xml b/shibboleth-integration/midpoint-objects/objectTemplates/template-role-generic-group.xml
deleted file mode 100644
index 1205f6d..0000000
--- a/shibboleth-integration/midpoint-objects/objectTemplates/template-role-generic-group.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- template-role-generic-group
-
- strong
-
-
- RoleType
- c691e15a-f30b-4e15-8445-532db07ceeeb
-
-
-
- assignment
-
-
-
\ No newline at end of file
diff --git a/shibboleth-integration/midpoint-objects/orgs/org-courses.xml b/shibboleth-integration/midpoint-objects/orgs/org-courses.xml
deleted file mode 100644
index 71d1f7e..0000000
--- a/shibboleth-integration/midpoint-objects/orgs/org-courses.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- courses
- Courses
-
\ No newline at end of file
diff --git a/shibboleth-integration/midpoint-objects/orgs/org-departments.xml b/shibboleth-integration/midpoint-objects/orgs/org-departments.xml
deleted file mode 100644
index 5320c1e..0000000
--- a/shibboleth-integration/midpoint-objects/orgs/org-departments.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- departments
- Departments
-
\ No newline at end of file
diff --git a/shibboleth-integration/midpoint-objects/resources/ldap-main.xml b/shibboleth-integration/midpoint-objects/resources/ldap-main.xml
deleted file mode 100644
index dbd0cb8..0000000
--- a/shibboleth-integration/midpoint-objects/resources/ldap-main.xml
+++ /dev/null
@@ -1,444 +0,0 @@
-
-
-
-
-
-
- OpenLDAP (directory)
-
-
-
-
- c:connectorType
- com.evolveum.polygon.connector.ldap.LdapConnector
-
-
-
-
-
-
- 389
- directory
- dc=internet2,dc=edu
- cn=Directory Manager
-
- password
-
- nsUniqueId
- auto
- uid
- memberOf
- createTimestamp
- nsAccountLock
-
-
-
-
- false
- false
- false
-
-
-
-
-
- ri:inetOrgPerson
- ri:eduPerson
- ri:groupOfUniqueNames
- ri:groupOfNames
- ri:organizationalUnit
-
-
-
-
-
- account
- Normal Account
- true
- ri:inetOrgPerson
- ri:eduPerson
-
- [ri:dn]
- Distinguished Name
-
- 0
-
- false
- mr:stringIgnoreCase
-
- strong
-
- name
-
-
-
-
-
-
-
- [ri:cn]
- Common Name
-
- 0
-
- false
-
- strong
-
- fullName
-
-
-
-
- [ri:sn]
- Surname
-
- 0
-
- false
-
- strong
-
- familyName
-
-
-
-
- [ri:givenName]
- Given Name
-
- 0
-
- false
-
- strong
-
- givenName
-
-
-
-
- [ri:uid]
- Login Name
- false
- mr:stringIgnoreCase
-
- strong
-
- name
-
-
-
-
- [ri:mail]
- Mail
- mr:stringIgnoreCase
- false
-
- strong
-
- emailAddress
-
-
-
-
- [ri:employeeNumber]
- false
-
- strong
-
- employeeNumber
-
-
-
-
- [ri:businessCategory]
- false
-
-
- [ri:eduPersonAffiliation]
- false
-
-
- false
- [ri:group]
- entitlement
- course-group
- generic-group
- objectToSubject
- ri:uniqueMember
- ri:dn
-
-
-
-
- http://prism.evolveum.com/xml/ns/public/matching-rule-3#stringIgnoreCase
- attributes/ri:dn
- cn=root,dc=internet2,dc=edu
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- entitlement
- course-group
- LDAP Group for courses
- ri:groupOfUniqueNames
-
- [ri:uniqueMember]
- mr:distinguishedName
- minimal
-
-
- [ri:dn]
- mr:stringIgnoreCase
-
- strong
-
- identifier
-
-
-
-
-
-
-
- [ri:cn]
- mr:stringIgnoreCase
-
- weak
-
- identifier
-
-
-
-
-
- entitlement
- generic-group
- LDAP Group
- ri:groupOfUniqueNames
-
- [ri:uniqueMember]
- mr:distinguishedName
- minimal
-
-
- [ri:dn]
- mr:stringIgnoreCase
-
- strong
- true
-
- identifier
-
-
-
-
-
-
-
- [ri:cn]
- mr:stringIgnoreCase
-
- weak
-
- identifier
-
-
-
-
-
-
-
-
- true
-
-
- name
-
-
- declare namespace ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3";
- $account/attributes/ri:uid
-
-
-
-
-
- linked
- true
-
-
- deleted
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#unlink
-
-
-
- unlinked
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#link
-
-
-
- unmatched
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#addFocus
-
-
-
-
- course-group sync
- ri:groupOfUniqueNames
- entitlement
- course-group
- OrgType
- true
-
-
-
-
-
-
- identifier
-
- $shadow/attributes/ri:cn
-
-
-
- subtype
- course
-
-
-
-
- linked
- true
-
-
- deleted
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#unlink
-
-
-
- unlinked
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#link
-
-
-
- unmatched
-
-
-
- generic-group sync
- ri:groupOfUniqueNames
- entitlement
- generic-group
- RoleType
- true
-
-
-
-
-
-
- identifier
-
- $shadow/attributes/ri:cn
-
-
-
- subtype
- generic-group
-
-
-
-
- linked
- true
-
-
- deleted
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#unlink
-
-
-
- unlinked
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#link
-
-
-
- unmatched
-
-
-
-
- true
-
-
diff --git a/shibboleth-integration/midpoint-objects/resources/scriptedsql-grouper2.xml b/shibboleth-integration/midpoint-objects/resources/scriptedsql-grouper2.xml
deleted file mode 100644
index 7894c7e..0000000
--- a/shibboleth-integration/midpoint-objects/resources/scriptedsql-grouper2.xml
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
-
-
- Grouper SQL NEW
-
-
-
-
- connectorType
- net.tirasa.connid.bundles.db.scriptedsql.ScriptedSQLConnector
-
-
-
-
-
-
-
- grouper-data
- 3306
-
- root
-
-
-
- grouper
-
- GROOVY
-
- /opt/midpoint/var/res/grouper2/SearchScript.groovy
- /opt/midpoint/var/res/grouper2/TestScript.groovy
- /opt/midpoint/var/res/grouper2/SchemaScript.groovy
- /opt/midpoint/var/res/grouper2/SyncScript.groovy
- true
-
-
-
-
-
- org.mariadb.jdbc.Driver
- jdbc:mysql://%h:%p/%d?useUnicode=true&characterEncoding=utf8&connectionCollation=utf8_bin
- true
- true
- false
- false
-
-
-
-
-
-
-
-
-
-
- account
- Normal Account
- true
- ri:AccountObjectClass
-
- [ri:subject_id]
- Subject ID
-
-
- [ri:subject_identifier0]
- Subject Identifier
-
-
- [ri:name]
- Name
-
-
- [ri:group]
- Subject Groups
-
- strong
-
- extension/grouper_group
-
-
-
-
-
- entitlement
- group
- Group
- ri:GroupObjectClass
-
-
-
-
-
-
-
-
-
diff --git a/shibboleth-integration/midpoint-objects/resources/scriptedsql-sis-courses.xml b/shibboleth-integration/midpoint-objects/resources/scriptedsql-sis-courses.xml
deleted file mode 100644
index 5b34689..0000000
--- a/shibboleth-integration/midpoint-objects/resources/scriptedsql-sis-courses.xml
+++ /dev/null
@@ -1,212 +0,0 @@
-
-
-
-
- SQL SIS courses (sources)
-
-
-
-
- connectorType
- net.tirasa.connid.bundles.db.scriptedsql.ScriptedSQLConnector
-
-
-
-
-
-
-
- sources
- 3306
-
- root
-
-
-
- sis
-
- GROOVY
-
- /opt/midpoint/var/res/sis/SearchScript.groovy
- /opt/midpoint/var/res/sis/TestScript.groovy
- /opt/midpoint/var/res/sis/SchemaScript.groovy
-
- true
-
-
-
-
-
- org.mariadb.jdbc.Driver
- jdbc:mysql://%h:%p/%d?useUnicode=true&characterEncoding=utf8&connectionCollation=utf8_bin
- true
- true
- false
- false
-
-
-
-
-
-
-
-
-
-
- account
- Normal Account
- true
- ri:AccountObjectClass
-
- [ri:uid]
- UID
-
-
- [ri:courseId]
- Course ID
-
- strong
-
-
- OrgType
-
-
- name
-
-
-
-
-
- true
-
-
-
-
-
-
- name
-
-
-
-
-
-
-
- displayName
-
-
-
-
-
- OrgType
- 225e9360-0639-40ba-8a31-7f31bef067be
-
-
-
- assignment
-
-
-
-
-
-
-
- identifier
-
-
-
-
- course
-
-
- subtype
-
-
-
-
- course
-
-
-
-
- assignment
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
- name
-
-
- declare namespace ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3";
- $account/attributes/ri:uid
-
-
-
-
-
-
- linked
- true
-
-
- deleted
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#unlink
-
-
-
-
- unlinked
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#link
-
-
-
- unmatched
- true
-
-
-
-
-
-
-
diff --git a/shibboleth-integration/midpoint-objects/resources/scriptedsql-sis-persons.xml b/shibboleth-integration/midpoint-objects/resources/scriptedsql-sis-persons.xml
deleted file mode 100644
index b76751c..0000000
--- a/shibboleth-integration/midpoint-objects/resources/scriptedsql-sis-persons.xml
+++ /dev/null
@@ -1,379 +0,0 @@
-
-
-
-
- SQL SIS persons (sources)
-
-
-
-
- connectorType
- net.tirasa.connid.bundles.db.scriptedsql.ScriptedSQLConnector
-
-
-
-
-
-
-
- sources
- 3306
-
- root
-
-
-
- sis
-
- GROOVY
-
- /opt/midpoint/var/res/sis-persons/SearchScript.groovy
- /opt/midpoint/var/res/sis-persons/TestScript.groovy
- /opt/midpoint/var/res/sis-persons/SchemaScript.groovy
-
- true
-
-
-
-
-
- org.mariadb.jdbc.Driver
- jdbc:mysql://%h:%p/%d?useUnicode=true&characterEncoding=utf8&connectionCollation=utf8_bin
- true
- true
- false
- false
-
-
-
-
-
-
-
-
-
-
- account
- Normal Account
- true
- ri:AccountObjectClass
-
- [ri:uid]
- UID
-
-
- name
-
-
-
- strong
-
-
- RoleType
- c89f31dd-8d4f-4e0a-82cb-58ff9d8c1b2f
-
- grouper-basic
-
-
-
-
- assignment
-
-
-
-
-
-
-
-
-
- [ri:fullName]
- Full Name
-
-
- fullName
-
-
-
-
- [ri:surname]
- Surname
-
-
- familyName
-
-
-
-
- [ri:givenName]
- Given Name
-
-
- givenName
-
-
-
-
- [ri:mail]
- Mail
- mr:stringIgnoreCase
-
-
- emailAddress
-
-
-
-
-
- [ri:department]
-
- strong
-
-
- OrgType
-
-
- name
-
-
-
-
-
- true
-
-
-
-
-
-
- name
-
-
-
-
-
-
-
- displayName
-
-
-
-
-
- OrgType
- bee44c51-2469-411d-bac7-695728e9c241
-
-
-
- assignment
-
-
-
-
-
-
-
- identifier
-
-
-
-
- department
-
-
- subtype
-
-
-
-
- department
-
-
-
-
- assignment
-
-
-
-
-
-
-
-
-
- [ri:affiliation]
-
- strong
-
-
- RoleType
-
-
- name
-
-
-
-
-
- true
-
-
-
-
-
-
- name
-
-
-
-
-
-
-
- displayName
-
-
-
-
-
-
-
- identifier
-
-
-
-
- affiliation
-
-
- subtype
-
-
-
-
- affiliation
-
-
-
-
- assignment
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
- name
-
-
- declare namespace ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3";
- $account/attributes/ri:uid
-
-
-
-
-
-
- linked
- true
-
-
- deleted
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#unlink
-
-
-
-
- unlinked
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#link
-
-
-
- unmatched
- true
-
- http://midpoint.evolveum.com/xml/ns/public/model/action-3#addFocus
-
-
-
-
-
-
-
diff --git a/shibboleth-integration/midpoint-objects/roles/metarole-affiliation.xml b/shibboleth-integration/midpoint-objects/roles/metarole-affiliation.xml
deleted file mode 100644
index be64d72..0000000
--- a/shibboleth-integration/midpoint-objects/roles/metarole-affiliation.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
- metarole-affiliation
-
-
-
-
- [ri:eduPersonAffiliation]
-
- strong
-
-
-
-
-
-
- 2
-
-
diff --git a/shibboleth-integration/midpoint-objects/roles/metarole-course.xml b/shibboleth-integration/midpoint-objects/roles/metarole-course.xml
deleted file mode 100644
index 3e26105..0000000
--- a/shibboleth-integration/midpoint-objects/roles/metarole-course.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
- metarole-course
-
-
-
- entitlement
- course-group
-
-
-
-
-
-
- ri:group
-
-
-
-
- entitlement
- course-group
-
-
-
-
-
-
- 2
-
-
diff --git a/shibboleth-integration/midpoint-objects/roles/metarole-department.xml b/shibboleth-integration/midpoint-objects/roles/metarole-department.xml
deleted file mode 100644
index 96947e3..0000000
--- a/shibboleth-integration/midpoint-objects/roles/metarole-department.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
- metarole-department
-
-
-
-
- [ri:businessCategory]
-
- strong
-
-
-
-
-
-
- 2
-
-
diff --git a/shibboleth-integration/midpoint-objects/roles/metarole-generic-group.xml b/shibboleth-integration/midpoint-objects/roles/metarole-generic-group.xml
deleted file mode 100644
index f0e93c5..0000000
--- a/shibboleth-integration/midpoint-objects/roles/metarole-generic-group.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
- metarole-generic-group
-
-
-
- entitlement
- generic-group
-
-
-
-
-
-
- ri:group
-
-
-
-
- entitlement
- generic-group
-
-
-
-
-
-
- 2
-
-
diff --git a/shibboleth-integration/midpoint-objects/roles/role-grouper-basic.xml b/shibboleth-integration/midpoint-objects/roles/role-grouper-basic.xml
deleted file mode 100644
index c119b28..0000000
--- a/shibboleth-integration/midpoint-objects/roles/role-grouper-basic.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
- role-grouper-basic
-
-
-
-
- 1
-
-
diff --git a/shibboleth-integration/midpoint-objects/roles/role-grouper-sysadmin.xml b/shibboleth-integration/midpoint-objects/roles/role-grouper-sysadmin.xml
deleted file mode 100644
index 5b559f8..0000000
--- a/shibboleth-integration/midpoint-objects/roles/role-grouper-sysadmin.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
- role-grouper-sysadmin
-
-
-
- generic-group
- sysadmingroup
-
diff --git a/shibboleth-integration/midpoint-objects/systemConfigurations/SystemConfiguration.xml b/shibboleth-integration/midpoint-objects/systemConfigurations/SystemConfiguration.xml
deleted file mode 100644
index 146ee38..0000000
--- a/shibboleth-integration/midpoint-objects/systemConfigurations/SystemConfiguration.xml
+++ /dev/null
@@ -1,167 +0,0 @@
-
- SystemConfiguration
-
- 2018-08-15T13:30:55.282+02:00
- 2018-08-15T13:30:55.372+02:00
- http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#init
-
-
- 2018-08-15T13:30:55.562+02:00
-
-
- add
- c:SystemConfigurationType
-
-
- com.evolveum.midpoint.model.impl.lens.ChangeExecutor.executeDelta
- handled_error
- 1000000000000000009
- Object of type 'SystemConfigurationType' with oid '00000000-0000-0000-0000-000000000001' was not found.
-
- SystemConfiguration
-
- handled_error
- http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#init
-
-
-
-
- ERROR
- ro.isdc.wro.extensions.processor.css.Less4jProcessor
-
-
- OFF
- org.hibernate.engine.jdbc.spi.SqlExceptionHelper
-
-
- OFF
- org.hibernate.engine.jdbc.batch.internal.BatchingBatch
-
-
- WARN
- org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl
-
-
- OFF
- org.hibernate.internal.ExceptionMapperStandardImpl
-
-
- OFF
- net.sf.jasperreports.engine.fill.JRFillDataset
-
-
- WARN
- org.apache.wicket.resource.PropertiesFactory
-
-
- ERROR
- org.springframework.context.support.ResourceBundleMessageSource
-
-
- INFO
- com.evolveum.midpoint.model.impl.lens.projector.Projector
-
-
- INFO
- com.evolveum.midpoint.model.impl.lens.Clockwork
-
-
- %date [%X{subsystem}] [%thread] %level \(%logger\): %msg%n
- MIDPOINT_LOG
- ${midpoint.home}/log/midpoint.log
- ${midpoint.home}/log/midpoint-%d{yyyy-MM-dd}.%i.log
- 10
- 100MB
- true
-
-
- %date %level: %msg%n
- MIDPOINT_PROFILE_LOG
- ${midpoint.home}/log/midpoint-profile.log
- ${midpoint.home}/log/midpoint-profile-%d{yyyy-MM-dd}.%i.log
- 10
- 100MB
- true
-
- MIDPOINT_LOG
- INFO
-
- false
- false
-
-
-
- RoleType
- affiliation
-
-
-
- OrgType
- department
-
-
-
- OrgType
- course
-
-
-
- RoleType
- generic-group
-
-
-
-
- P3M
-
-
- P1M
-
-
-
- true
-
-
-
- /self/profile
-
- View/edit your profile
-
- fa fa-user
-
- green
- http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfProfile
- http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfAll
-
-
- /self/credentials
-
- View/edit your credentials
-
- fa fa-shield
-
- blue
- http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfCredentials
- http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfAll
-
-
- /admin/users
-
-
- fa fa-users
-
- red
- http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#users
-
-
- /admin/resources
-
-
- fa fa-database
-
- purple
- http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#resources
-
- true
-
-
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/database_password.txt b/shibboleth-integration/mp-gr/configs-and-secrets/grouper/database_password.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper-loader.properties b/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper-loader.properties
deleted file mode 100644
index d73a54a..0000000
--- a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper-loader.properties
+++ /dev/null
@@ -1,64 +0,0 @@
-#################################
-## LDAP connections
-#################################
-# specify the ldap connection with user, pass, url
-# the string after "ldap." is the ID of the connection, and it should not have
-# spaces or other special chars in it. In this case is it "personLdap"
-
-#note the URL should start with ldap: or ldaps: if it is SSL.
-#It should contain the server and port (optional if not default), and baseDn,
-#e.g. ldaps://ldapserver.school.edu:636/dc=school,dc=edu
-#ldap.demo.url = ldap://directory:389/dc=internet2,dc=edu
-ldap.demo.url = ldap://directory:389
-
-#optional, if authenticated
-ldap.demo.user = cn=admin,dc=internet2,dc=edu
-
-#optional, if authenticated note the password can be stored encrypted in an external file
-#ldap.demo.pass = ${java.lang.System.getenv().get('SUBJECT_SOURCE_LDAP_PASSWORD_FILE') != null ? org.apache.commons.io.FileUtils.readFileToString(java.lang.System.getenv().get('SUBJECT_SOURCE_LDAP_PASSWORD_FILE'), "utf-8") : java.lang.System.getenv().get('SUBJECT_SOURCE_LDAP_PASSWORD')}
-ldap.demo.pass=password
-
-#optional, if you are using tls, set this to true. Generally you will not be using an SSL URL to use TLS...
-ldap.demo.tls = false
-
-#optional, if using sasl
-#ldap.personLdap.saslAuthorizationId =
-#ldap.personLdap.saslRealm =
-
-#optional (note, time limit is for search operations, timeout is for connection timeouts),
-#most of these default to vt-ldap defaults. times are in millis
-#validateOnCheckout defaults to true if all other validate methods are false
-#ldap.personLdap.batchSize =
-#ldap.personLdap.countLimit =
-#ldap.personLdap.timeLimit =
-#ldap.personLdap.timeout =
-#ldap.personLdap.minPoolSize =
-#ldap.personLdap.maxPoolSize =
-#ldap.personLdap.validateOnCheckIn =
-#ldap.personLdap.validateOnCheckOut =
-#ldap.personLdap.validatePeriodically =
-#ldap.personLdap.validateTimerPeriod =
-#ldap.personLdap.pruneTimerPeriod =
-#if connections expire after a certain amount of time, this is it, in millis, defaults to 300000 (5 minutes)
-#ldap.personLdap.expirationTime =
-
-#make the paths fully qualified and not relative to the loader group.
-loader.ldap.requireTopStemAsStemFromConfigGroup=false
-
-#####################################
-## Messaging integration with change log
-#####################################
-changeLog.consumer.rabbitMqMessagingSample.quartzCron = 0 * * * * ?
-
-# note, change "messagingSample" in key to be the name of the consumer. e.g. changeLog.consumer.someNameAnyName.class
-changeLog.consumer.rabbitMqMessagingSample.class = edu.internet2.middleware.grouper.changeLog.esb.consumer.EsbConsumer
-
-changeLog.consumer.rabbitMqMessagingSample.publisher.class = edu.internet2.middleware.grouper.changeLog.esb.consumer.EsbMessagingPublisher
-changeLog.consumer.rabbitMqMessagingSample.publisher.messagingSystemName = rabbitmq
-# note, routingKey property is valid only for rabbitmq. For other messaging systems, it is ignored.
-changeLog.consumer.rabbitMqMessagingSample.publisher.routingKey =
-## queue or topic
-changeLog.consumer.rabbitMqMessagingSample.publisher.messageQueueType = queue
-changeLog.consumer.rabbitMqMessagingSample.publisher.queueOrTopicName = sampleQueue
-## this is optional if not using "id" for subjectId, need to be a subject attribute in the sources.xml
-#changeLog.consumer.rabbitMqMessagingSample.publisher.addSubjectAttributes = email
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper.client.properties b/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper.client.properties
deleted file mode 100644
index ee9895f..0000000
--- a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper.client.properties
+++ /dev/null
@@ -1,112 +0,0 @@
-#
-# Copyright 2014 Internet2
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-#
-# Grouper client configuration
-# $Id: grouper.client.example.properties,v 1.24 2009-12-30 04:23:02 mchyzer Exp $
-#
-
-# The grouper client uses Grouper Configuration Overlays (documented on wiki)
-# By default the configuration is read from grouper.client.base.properties
-# (which should not be edited), and the grouper.client.properties overlays
-# the base settings. See the grouper.client.base.properties for the possible
-# settings that can be applied to the grouper.client.properties
-
-########################################
-## LDAP connection settings
-########################################
-
-# url of directory, including the base DN (distinguished name)
-# e.g. ldap://server.school.edu/dc=school,dc=edu
-# e.g. ldaps://server.school.edu/dc=school,dc=edu
-grouperClient.ldap.url =
-
-# kerberos principal used to connect to ldap
-grouperClient.ldap.login =
-
-# password for shared secret authentication to ldap
-# or you can put a filename with an encrypted password
-grouperClient.ldap.password =
-
-########################################
-## Web service Connection settings
-########################################
-
-# url of web service, should include everything up to the first resource to access
-# e.g. http://groups.school.edu:8090/grouper-ws/servicesRest
-# e.g. https://groups.school.edu/grouper-ws/servicesRest
-grouperClient.webService.url = https://grouper-ws/grouper-ws/servicesRest
-
-# kerberos principal used to connect to web service
-grouperClient.webService.login = banderson
-
-# password for shared secret authentication to web service
-# or you can put a filename with an encrypted password
-grouperClient.webService.password.elConfig = ${java.lang.System.getenv().get('GROUPER_CLIENT_WEBSERVICE_PASSWORD_FILE') != null ? org.apache.commons.io.FileUtils.readFileToString(java.lang.System.getenv().get('GROUPER_CLIENT_WEBSERVICE_PASSWORD_FILE'), "utf-8") : java.lang.System.getenv().get('GROUPER_CLIENT_WEBSERVICE_PASSWORD') }
-
-
-################################
-## Grouper Messaging System
-################################
-
-# name of messaging system which is the default
-grouper.messaging.default.name.of.messaging.system = rabbitmq
-
-# name of a messaging system. note, "grouperBuiltinMessaging" can be arbitrary
-# grouper.messaging.system.grouperBuiltinMessaging.name = grouperBuiltinMessaging
-
-# class that implements edu.internet2.middleware.grouperClient.messaging.GrouperMessagingSystem
-# grouper.messaging.system.grouperBuiltinMessaging.class = edu.internet2.middleware.grouper.messaging.GrouperBuiltinMessagingSystem
-
-# name of a messaging system. note, "grouperBuiltinMessaging" can be arbitrary
-grouper.messaging.system.rabbitmqSystem.name = rabbitmqSystem
-
-# class that implements edu.internet2.middleware.grouperClient.messaging.GrouperMessagingSystem
-grouper.messaging.system.rabbitmqSystem.class = edu.internet2.middleware.grouperMessagingRabbitmq.GrouperMessagingRabbitmqSystem
-
-# host address of rabbitmq queue
-grouper.messaging.system.rabbitmqSystem.host = mq
-
-# virtual host of rabbitmq queue
-grouper.messaging.system.rabbitmqSystem.virtualhost =
-
-# port of rabbitmq queue
-grouper.messaging.system.rabbitmqSystem.port =
-
-grouper.messaging.system.rabbitmqSystem.defaultPageSize = 10
-
-grouper.messaging.system.rabbitmqSystem.maxPageSize = 50
-
-
-# name of a messaging system, required
-grouper.messaging.system.rabbitmq.name = rabbitmq
-
-# default system settings to this messaging system, note, there is only one level of inheritance
-grouper.messaging.system.rabbitmq.defaultSystemName = rabbitmqSystem
-
-grouper.messaging.system.rabbitmq.user = guest
-
-#pass
-grouper.messaging.system.rabbitmq.password.elConfig = ${java.lang.System.getenv().get('RABBITMQ_PASSWORD_FILE') != null ? org.apache.commons.io.FileUtils.readFileToString(java.lang.System.getenv().get('RABBITMQ_PASSWORD_FILE'), "utf-8") : java.lang.System.getenv().get('RABBITMQ_PASSWORD') }
-# set the following three properties if you want to use TLS connection to rabbitmq. All three need to be populated.
-# TLS Version
-#grouper.messaging.system.rabbitmqSystem.tlsVersion = TLSv1.1
-
-# path to trust store file
-#grouper.messaging.system.rabbitmqSystem.pathToTrustStore =
-
-# trust passphrase
-#grouper.messaging.system.rabbitmqSystem.trustPassphrase =
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper.hibernate.properties b/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper.hibernate.properties
deleted file mode 100644
index f4849ba..0000000
--- a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper.hibernate.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Grouper Hibernate Configuration
-# $Id: grouper.hibernate.example.properties,v 1.9 2009-08-11 20:18:09 mchyzer Exp $
-#
-
-# The grouper hibernate config uses Grouper Configuration Overlays (documented on wiki)
-# By default the configuration is read from grouper.hibernate.base.properties
-# (which should not be edited), and the grouper.hibernate.properties overlays
-# the base settings. See the grouper.hibernate.base.properties for the possible
-# settings that can be applied to the grouper.hibernate.properties
-
-########################################
-## DB settings
-########################################
-
-# e.g. mysql: jdbc:mysql://localhost:3306/grouper
-# e.g. p6spy (log sql): [use the URL that your DB requires]
-# e.g. oracle: jdbc:oracle:thin:@server.school.edu:1521:sid
-# e.g. hsqldb (a): jdbc:hsqldb:dist/run/grouper;create=true
-# e.g. hsqldb (b): jdbc:hsqldb:hsql://localhost:9001/grouper
-# e.g. postgres: jdbc:postgresql://localhost:5432/database
-# e.g. mssql: jdbc:sqlserver://localhost:3280;databaseName=grouper
-hibernate.connection.url = jdbc:mysql://grouper-data:3306/grouper?CharSet=utf8&useUnicode=true&characterEncoding=utf8
-
-hibernate.connection.username = root
-# If you are using an empty password, depending upon your version of
-# Java and Ant you may need to specify a password of "".
-# Note: you can keep passwords external and encrypted: https://bugs.internet2.edu/jira/browse/GRP-122
-hibernate.connection.password.elConfig = ${java.lang.System.getenv().get('GROUPER_DATABASE_PASSWORD_FILE') != null ? org.apache.commons.io.FileUtils.readFileToString(java.lang.System.getenv().get('GROUPER_DATABASE_PASSWORD_FILE'), "utf-8") : java.lang.System.getenv().get('GROUPER_DATABASE_PASSWORD') }
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper.properties b/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper.properties
deleted file mode 100644
index c931287..0000000
--- a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/grouper.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Grouper Configuration
-# $Id: grouper.example.properties,v 1.48 2009-12-16 06:02:30 mchyzer Exp $
-#
-
-# Grouper uses Grouper Configuration Overlays (documented on wiki)
-# By default the configuration is read from grouper.base.properties
-# (which should not be edited), and the grouper.properties overlays
-# the base settings. See the grouper.base.properties for the possible
-# settings that can be applied to the grouper.properties
-
-#if groups like the wheel group should be auto-created for convenience (note: check config needs to be on)
-configuration.autocreate.system.groups = true
-
-# A wheel group allows you to enable non-GrouperSystem subjects to act
-# like a root user when interacting with the registry.
-groups.wheel.use = true
-
-# Set to the name of the group you want to treat as the wheel group.
-# The members of this group will be treated as root-like users.
-groups.wheel.group = etc:sysadmingroup
-
-# Used to allow Include Exclude groups
-grouperIncludeExclude.use = true
-grouperIncludeExclude.requireGroups.use = true
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/rabbitmq_password.txt b/shibboleth-integration/mp-gr/configs-and-secrets/grouper/rabbitmq_password.txt
deleted file mode 100644
index 158f675..0000000
--- a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/rabbitmq_password.txt
+++ /dev/null
@@ -1 +0,0 @@
-guest
\ No newline at end of file
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/subject.properties b/shibboleth-integration/mp-gr/configs-and-secrets/grouper/subject.properties
deleted file mode 100644
index 535e728..0000000
--- a/shibboleth-integration/mp-gr/configs-and-secrets/grouper/subject.properties
+++ /dev/null
@@ -1,75 +0,0 @@
-subject.sources.xml.location =
-
-subjectApi.source.ldap.id = ldap
-subjectApi.source.ldap.name = EDU Ldap
-subjectApi.source.ldap.types = person
-subjectApi.source.ldap.adapterClass = edu.internet2.middleware.grouper.subj.GrouperJndiSourceAdapter
-subjectApi.source.ldap.param.INITIAL_CONTEXT_FACTORY.value = com.sun.jndi.ldap.LdapCtxFactory
-subjectApi.source.ldap.param.PROVIDER_URL.value = ldap://directory:389
-subjectApi.source.ldap.param.SECURITY_AUTHENTICATION.value = simple
-subjectApi.source.ldap.param.SECURITY_PRINCIPAL.value = cn=admin,dc=internet2,dc=edu
-subjectApi.source.ldap.param.SECURITY_CREDENTIALS.value.elConfig = ${java.lang.System.getenv().get('SUBJECT_SOURCE_LDAP_PASSWORD_FILE') != null ? org.apache.commons.io.FileUtils.readFileToString(java.lang.System.getenv().get('SUBJECT_SOURCE_LDAP_PASSWORD_FILE'), "utf-8") : java.lang.System.getenv().get('SUBJECT_SOURCE_LDAP_PASSWORD')}
-subjectApi.source.ldap.param.SubjectID_AttributeType.value = uid
-subjectApi.source.ldap.param.SubjectID_formatToLowerCase.value = false
-subjectApi.source.ldap.param.Name_AttributeType.value = cn
-subjectApi.source.ldap.param.Description_AttributeType.value = cn
-subjectApi.source.ldap.param.VTLDAP_VALIDATOR.value = ConnectLdapValidator
-subjectApi.source.ldap.param.subjectVirtualAttribute_0_searchAttribute0.value = ${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('uid'), "")},${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('cn'), "")},${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('exampleEduRegId'), "")}
-subjectApi.source.ldap.param.sortAttribute0.value = cn
-subjectApi.source.ldap.param.searchAttribute0.value = searchAttribute0
-
-# STATUS SECTION for searches to filter out inactives and allow
-# the user to filter by status with e.g. status=all
-# this is optional, and advanced
-#
-# field in database or ldap or endpoint that is the status field
-#subjectApi.source.example.param.statusDatastoreFieldName.value = status
-
-# search string from user which represents the status. e.g. status=active
-#subjectApi.source.example.param.statusLabel.value = status
-
-# available statuses from screen (if not specified, any will be allowed). comma separated list.
-# Note, this is optional and you probably dont want to configure it, it is mostly necessary
-# when you have multiple sources with statuses... if someone types an invalid status
-# and you have this configured, it will not filter by it
-#subjectApi.source.example.param.statusesFromUser.value = Active, Inactive, Pending, All
-
-# all label from the user
-#subjectApi.source.example.param.statusAllFromUser.value = All
-
-# if no status is specified, this will be used (e.g. for active only). Note, the value should be of the
-# form the user would type in
-#subjectApi.source.example.param.statusSearchDefault.value = status=active
-
-# translate between screen values of status, and the data store value. Increment the 0 to 1, 2, etc for more translations.
-# so the user could enter: status=active, and that could translate to status_col=A. The 'user' is what the user types in,
-# the 'datastore' is what is in the datastore. The user part is not case-sensitive. Note, this could be a many to one
-#subjectApi.source.example.param.statusTranslateUser0.value = active
-#subjectApi.source.example.param.statusTranslateDatastore0.value = A
-
-# subject identifier to store in grouper's member table. this is used to increase speed of loader and perhaps for provisioning
-# you can have up to max 1 subject identifier
-#subjectApi.source.example.param.subjectIdentifierAttribute0.value = uid
-
-#searchSubject: find a subject by ID. ID is generally an opaque and permanent identifier, e.g. 12345678.
-# Each subject has one and only on ID. Returns one result when searching for one ID.
-subjectApi.source.ldap.search.searchSubject.param.filter.value = (&(uid=%TERM%)(objectclass=person))
-subjectApi.source.ldap.search.searchSubject.param.scope.value = SUBTREE_SCOPE
-subjectApi.source.ldap.search.searchSubject.param.base.value = ou=people,dc=internet2,dc=edu
-
-#searchSubjectByIdentifier: find a subject by identifier. Identifier is anything that uniquely
-# identifies the user, e.g. jsmith or jsmith@institution.edu.
-# Subjects can have multiple identifiers. Note: it is nice to have if identifiers are unique
-# even across sources. Returns one result when searching for one identifier.
-subjectApi.source.ldap.search.searchSubjectByIdentifier.param.filter.value = (&(|(uid=%TERM%)(employeeNumber=%TERM%))(objectclass=person))
-subjectApi.source.ldap.search.searchSubjectByIdentifier.param.scope.value = SUBTREE_SCOPE
-subjectApi.source.ldap.search.searchSubjectByIdentifier.param.base.value = ou=people,dc=internet2,dc=edu
-
-# search: find subjects by free form search. Returns multiple results.
-
-subjectApi.source.ldap.search.search.param.filter.value = (&(|(|(uid=%TERM%)(cn=*%TERM%*))(uid=%TERM%*))(objectclass=person))
-subjectApi.source.ldap.search.search.param.scope.value = SUBTREE_SCOPE
-subjectApi.source.ldap.search.search.param.base.value = ou=people,dc=internet2,dc=edu
-
-subjectApi.source.ldap.attributes = givenName, sn, uid, mail, employeeNumber
-subjectApi.source.ldap.internalAttributes = searchAttribute0
diff --git a/shibboleth-integration/mp-gr/configs-and-secrets/midpoint/database_password.txt b/shibboleth-integration/mp-gr/configs-and-secrets/midpoint/database_password.txt
deleted file mode 100644
index 11bac01..0000000
--- a/shibboleth-integration/mp-gr/configs-and-secrets/midpoint/database_password.txt
+++ /dev/null
@@ -1 +0,0 @@
-456654
diff --git a/shibboleth-integration/mp-gr/docker-compose.yml b/shibboleth-integration/mp-gr/docker-compose.yml
deleted file mode 100644
index 8658809..0000000
--- a/shibboleth-integration/mp-gr/docker-compose.yml
+++ /dev/null
@@ -1,320 +0,0 @@
-#
-# Building:
-# - docker-compose up --build
-#
-# It assumes that midpoint-3.9-SNAPSHOT-dist.tar.gz is present in the 'midpoint-server' directory. (TODO: eliminate this!)
-#
-
-version: "3.3"
-
-services:
- grouper-daemon:
- build: ./grouper-daemon/
- command: bash -c "while ! curl -s grouper-data:3306 > /dev/null; do echo waiting for mysql on grouper-data to start; sleep 3; done; while ! curl -s ldap://directory:389 > /dev/null; do echo waiting for ldap on directory to start; sleep 3; done; exec daemon"
- depends_on:
- - grouper-data
- - directory
- environment:
- - ENV=dev
- - GROUPER_CLIENT_WEBSERVICE_PASSWORD_FILE=password
- - GROUPER_DATABASE_PASSWORD_FILE=/run/secrets/g_database_password.txt
- - RABBITMQ_PASSWORD_FILE=/run/secrets/rabbitmq_password.txt
- - SUBJECT_SOURCE_LDAP_PASSWORD=password
- - USERTOKEN=build-2
- networks:
- - back
- secrets:
- - g_database_password.txt
- - rabbitmq_password.txt
- - source: grouper.hibernate.properties
- target: grouper_grouper.hibernate.properties
- - source: grouper-loader.properties
- target: grouper_grouper-loader.properties
- - source: subject.properties
- target: grouper_subject.properties
- volumes:
- - type: bind
- source: ./configs-and-secrets/grouper/grouper.properties
- target: /opt/grouper/conf/grouper.properties
- - type: bind
- source: ./configs-and-secrets/grouper/grouper.client.properties
- target: /opt/grouper/conf/grouper.client.properties
-
-
- grouper-ui:
- build: ./grouper-ui/
- command: bash -c "while ! curl -s grouper-data:3306 > /dev/null; do echo waiting for mysql on grouper-data to start; sleep 3; done; while ! curl -s ldap://directory:389 > /dev/null; do echo waiting for ldap on directory to start; sleep 3; done; exec ui"
- depends_on:
- - grouper-data
- - directory
- environment:
- - ENV=dev
- - GROUPER_DATABASE_PASSWORD_FILE=/run/secrets/g_database_password.txt
- - SUBJECT_SOURCE_LDAP_PASSWORD=password
- - USERTOKEN=build-2
- networks:
- - front
- - back
- ports:
- - "80:80"
- - "443:443"
- secrets:
- - g_database_password.txt
- - source: grouper.hibernate.properties
- target: grouper_grouper.hibernate.properties
- - source: grouper-loader.properties
- target: grouper_grouper-loader.properties
- - source: subject.properties
- target: grouper_subject.properties
- - source: grouper-sp-key.pem
- target: shib_sp-key.pem
- - source: grouper-host-key.pem
- target: host-key.pem
- volumes:
- - type: bind
- source: ./configs-and-secrets/grouper/grouper.properties
- target: /opt/grouper/conf/grouper.properties
- - type: bind
- source: ./configs-and-secrets/grouper/grouper.client.properties
- target: /opt/grouper/conf/grouper.client.properties
- - type: bind
- source: ./configs-and-secrets/shibboleth/grouper/sp-cert.pem
- target: /etc/shibboleth/sp-cert.pem
- - type: bind
- source: ./configs-and-secrets/shibboleth/grouper/shibboleth2.xml
- target: /etc/shibboleth/shibboleth2.xml
- - type: bind
- source: ./configs-and-secrets/shibboleth/idp-metadata.xml
- target: /etc/shibboleth/idp-metadata.xml
- - type: bind
- source: ./configs-and-secrets/httpd/grouper/host-cert.pem
- target: /etc/pki/tls/certs/host-cert.pem
- - type: bind
- source: ./configs-and-secrets/httpd/grouper/host-cert.pem
- target: /etc/pki/tls/certs/cachain.pem
-
-
-# grouper-ws:
-# build: ./grouper-ws/
-# command: bash -c "while ! curl -s grouper-data:3306 > /dev/null; do echo waiting for mysql on grouper-data to start; sleep 3; done; while ! curl -s ldap://directory:389 > /dev/null; do echo waiting for ldap on directory to start; sleep 3; done; exec ws"
-# depends_on:
-# - grouper-data
-# - directory
-# environment:
-# - ENV=dev
-# - GROUPER_DATABASE_PASSWORD_FILE=/run/secrets/g_database_password.txt
-# - SUBJECT_SOURCE_LDAP_PASSWORD=password
-# - USERTOKEN=build-2
-# networks:
-# - front
-# - back
-# ports:
-# - "8443:443"
-# secrets:
-# - g_database_password.txt
-# - source: grouper.hibernate.properties
-# target: grouper_grouper.hibernate.properties
-# - source: grouper-loader.properties
-# target: grouper_grouper-loader.properties
-# - source: subject.properties
-# target: grouper_subject.properties
-# - source: sp-key.pem
-# target: shib_sp-key.pem
-# - source: host-key.pem
-# volumes:
-# - type: bind
-# source: ./configs-and-secrets/grouper/grouper.properties
-# target: /opt/grouper/conf/grouper.properties
-# - type: bind
-# source: ./configs-and-secrets/grouper/grouper.client.properties
-# target: /opt/grouper/conf/grouper.client.properties
-# - type: bind
-# source: ./configs-and-secrets/httpd/host-cert.pem
-# target: /etc/pki/tls/certs/host-cert.pem
-# - type: bind
-# source: ./configs-and-secrets/httpd/host-cert.pem
-# target: /etc/pki/tls/certs/cachain.pem
-#
-# gsh:
-# build: ./gsh/
-# depends_on:
-# - grouper-data
-# - directory
-# environment:
-# - ENV=dev
-# - GROUPER_DATABASE_PASSWORD_FILE=/run/secrets/g_database_password.txt
-# - SUBJECT_SOURCE_LDAP_PASSWORD=password
-# - USERTOKEN=build-2
-# networks:
-# - back
-# secrets:
-# - g_database_password.txt
-# - source: grouper.hibernate.properties
-# target: grouper_grouper.hibernate.properties
-# - source: grouper-loader.properties
-# target: grouper_grouper-loader.properties
-# - source: subject.properties
-# target: grouper_subject.properties
-# volumes:
-# - type: bind
-# source: ./configs-and-secrets/grouper/grouper.properties
-# target: /opt/grouper/conf/grouper.properties
-# - type: bind
-# source: ./configs-and-secrets/grouper/grouper.client.properties
-# target: /opt/grouper/conf/grouper.client.properties
-
- grouper-data:
- build: ./grouper-data/
- expose:
- - "3306"
- networks:
- - back
- ports:
- - "3306:3306"
- volumes:
- - grouper_mysql:/var/lib/mysql
-
- directory:
- build: ./directory/
- expose:
- - "389"
- ports:
- - "389:389"
- networks:
- - back
- volumes:
- - ldap:/var/lib/dirsrv
-
- sources:
- build: ./sources/
- expose:
- - "3306"
- ports:
- - "13306:3306"
- networks:
- - back
- volumes:
- - source_mysql:/var/lib/mysql
-
- targets:
- build: ./targets/
- expose:
- - "3306"
- ports:
- - "23306:389"
- networks:
- - back
- volumes:
- - target_mysql:/var/lib/mysql
-
- midpoint-data:
- build: ./midpoint-data/
- expose:
- - "3306"
- ports:
- - "33306:3306"
- networks:
- - back
- volumes:
- - midpoint_mysql:/var/lib/mysql
-
- midpoint-server:
- build: ./midpoint-server/
- depends_on:
- - midpoint-data
- expose:
- - "8080"
- - "4438"
- ports:
- - "8080:80"
- - "4438:443"
- networks:
- - front
- - back
- secrets:
- - m_database_password.txt
- - source: midpoint-sp-key.pem
- target: shib_sp-key.pem
- - source: midpoint-host-key.pem
- target: host-key.pem
- volumes:
- - midpoint_home:/opt/midpoint/var
- - type: bind
- source: ./configs-and-secrets/shibboleth/midpoint/sp-cert.pem
- target: /etc/shibboleth/sp-cert.pem
- - type: bind
- source: ./configs-and-secrets/shibboleth/midpoint/shibboleth2.xml
- target: /etc/shibboleth/shibboleth2.xml
- - type: bind
- source: ./configs-and-secrets/shibboleth/idp-metadata.xml
- target: /etc/shibboleth/idp-metadata.xml
- - type: bind
- source: ./configs-and-secrets/httpd/midpoint/host-cert.pem
- target: /etc/pki/tls/certs/host-cert.pem
- - type: bind
- source: ./configs-and-secrets/httpd/midpoint/host-cert.pem
- target: /etc/pki/tls/certs/cachain.pem
-
- idp:
- build: ./idp/
- depends_on:
- - directory
- environment:
- - JETTY_MAX_HEAP=64m
- - JETTY_BROWSER_SSL_KEYSTORE_PASSWORD=password
- - JETTY_BACKCHANNEL_SSL_KEYSTORE_PASSWORD=password
- networks:
- - front
- - back
- ports:
- - "4443:4443"
-
- mq:
- image: rabbitmq:management
- environment:
- - RABBITMQ_NODENAME=docker-rabbit
- hostname: rabbitmq
- networks:
- - front
- - back
- ports:
- - "15672:15672"
-
-
-networks:
- front:
- driver: bridge
- back:
- driver: bridge
-
-
-secrets:
- g_database_password.txt:
- file: ./configs-and-secrets/grouper/database_password.txt
- grouper.hibernate.properties:
- file: ./configs-and-secrets/grouper/grouper.hibernate.properties
- grouper-loader.properties:
- file: ./configs-and-secrets/grouper/grouper-loader.properties
- grouper-host-key.pem:
- file: ./configs-and-secrets/httpd/grouper/host-key.pem
- rabbitmq_password.txt:
- file: ./configs-and-secrets/grouper/rabbitmq_password.txt
- subject.properties:
- file: ./configs-and-secrets/grouper/subject.properties
- grouper-sp-key.pem:
- file: ./configs-and-secrets/shibboleth/grouper/sp-key.pem
- midpoint-host-key.pem:
- file: ./configs-and-secrets/httpd/midpoint/host-key.pem
- midpoint-sp-key.pem:
- file: ./configs-and-secrets/shibboleth/midpoint/sp-key.pem
- m_database_password.txt:
- file: ./configs-and-secrets/midpoint/database_password.txt
-
-
-volumes:
- grouper_mysql:
- source_mysql:
- target_mysql:
- ldap:
- midpoint_mysql:
- midpoint_home:
diff --git a/shibboleth-integration/mp-gr/grouper-daemon/Dockerfile b/shibboleth-integration/mp-gr/grouper-daemon/Dockerfile
deleted file mode 100644
index f620350..0000000
--- a/shibboleth-integration/mp-gr/grouper-daemon/Dockerfile
+++ /dev/null
@@ -1,5 +0,0 @@
-FROM tier/grouper:latest
-
-LABEL author="tier-packaging@internet2.edu "
-
-CMD ["daemon"]
diff --git a/shibboleth-integration/mp-gr/grouper-data/Dockerfile b/shibboleth-integration/mp-gr/grouper-data/Dockerfile
deleted file mode 100644
index 5ca6a12..0000000
--- a/shibboleth-integration/mp-gr/grouper-data/Dockerfile
+++ /dev/null
@@ -1,40 +0,0 @@
-FROM tier/grouper:latest
-
-LABEL author="tier-packaging@internet2.edu "
-
-RUN yum install -y epel-release \
- && yum update -y \
- && yum install -y mariadb-server mariadb \
- && yum clean all \
- && rm -rf /var/cache/yum
-
-COPY container_files/seed-data/ /seed-data/
-COPY container_files/conf/ /opt/grouper/grouper.apiBinary/conf/
-
-RUN mysql_install_db \
- && chown -R mysql:mysql /var/lib/mysql/ \
- && sed -i 's/^\(bind-address\s.*\)/# \1/' /etc/my.cnf \
- && sed -i 's/^\(log_error\s.*\)/# \1/' /etc/my.cnf \
- && sed -i 's/\[mysqld\]/\[mysqld\]\ncharacter_set_server = utf8/' /etc/my.cnf \
- && sed -i 's/\[mysqld\]/\[mysqld\]\ncollation_server = utf8_general_ci/' /etc/my.cnf \
- && sed -i 's/\[mysqld\]/\[mysqld\]\nport = 3306/' /etc/my.cnf \
- && cat /etc/my.cnf \
- && echo "/usr/bin/mysqld_safe &" > /tmp/config \
- && echo "mysqladmin --silent --wait=30 ping || exit 1" >> /tmp/config \
- && echo "mysql -e 'GRANT ALL PRIVILEGES ON *.* TO \"root\"@\"%\" WITH GRANT OPTION;'" >> /tmp/config \
- && echo "mysql -e 'CREATE DATABASE grouper CHARACTER SET utf8 COLLATE utf8_bin;'" >> /tmp/config \
- && bash /tmp/config \
- && rm -f /tmp/config
-
-RUN (mysqld_safe & ) \
- && while ! curl -s localhost:3306 > /dev/null; do echo waiting for mysqld to start; sleep 1; done; \
- bin/gsh -registry -check -runscript -noprompt && \
- echo "Running demo.gsh" && \
- sleep 10 && \
- bin/gsh /seed-data/demo.gsh && \
- echo "demo.gsh DONE" && \
- rm /seed-data/demo.gsh
-
-EXPOSE 3306
-
-CMD mysqld_safe
diff --git a/shibboleth-integration/mp-gr/grouper-data/container_files/conf/grouper.hibernate.properties b/shibboleth-integration/mp-gr/grouper-data/container_files/conf/grouper.hibernate.properties
deleted file mode 100644
index 154b8eb..0000000
--- a/shibboleth-integration/mp-gr/grouper-data/container_files/conf/grouper.hibernate.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Grouper Hibernate Configuration
-# $Id: grouper.hibernate.example.properties,v 1.9 2009-08-11 20:18:09 mchyzer Exp $
-#
-
-# The grouper hibernate config uses Grouper Configuration Overlays (documented on wiki)
-# By default the configuration is read from grouper.hibernate.base.properties
-# (which should not be edited), and the grouper.hibernate.properties overlays
-# the base settings. See the grouper.hibernate.base.properties for the possible
-# settings that can be applied to the grouper.hibernate.properties
-
-########################################
-## DB settings
-########################################
-
-# e.g. mysql: jdbc:mysql://localhost:3306/grouper
-# e.g. p6spy (log sql): [use the URL that your DB requires]
-# e.g. oracle: jdbc:oracle:thin:@server.school.edu:1521:sid
-# e.g. hsqldb (a): jdbc:hsqldb:dist/run/grouper;create=true
-# e.g. hsqldb (b): jdbc:hsqldb:hsql://localhost:9001/grouper
-# e.g. postgres: jdbc:postgresql://localhost:5432/database
-# e.g. mssql: jdbc:sqlserver://localhost:3280;databaseName=grouper
-hibernate.connection.url = jdbc:mysql://localhost:3306/grouper?CharSet=utf8&useUnicode=true&characterEncoding=utf8
-
-hibernate.connection.username = root
-# If you are using an empty password, depending upon your version of
-# Java and Ant you may need to specify a password of "".
-# Note: you can keep passwords external and encrypted: https://bugs.internet2.edu/jira/browse/GRP-122
-hibernate.connection.password =
diff --git a/shibboleth-integration/mp-gr/grouper-data/container_files/conf/grouper.properties b/shibboleth-integration/mp-gr/grouper-data/container_files/conf/grouper.properties
deleted file mode 100644
index c931287..0000000
--- a/shibboleth-integration/mp-gr/grouper-data/container_files/conf/grouper.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Grouper Configuration
-# $Id: grouper.example.properties,v 1.48 2009-12-16 06:02:30 mchyzer Exp $
-#
-
-# Grouper uses Grouper Configuration Overlays (documented on wiki)
-# By default the configuration is read from grouper.base.properties
-# (which should not be edited), and the grouper.properties overlays
-# the base settings. See the grouper.base.properties for the possible
-# settings that can be applied to the grouper.properties
-
-#if groups like the wheel group should be auto-created for convenience (note: check config needs to be on)
-configuration.autocreate.system.groups = true
-
-# A wheel group allows you to enable non-GrouperSystem subjects to act
-# like a root user when interacting with the registry.
-groups.wheel.use = true
-
-# Set to the name of the group you want to treat as the wheel group.
-# The members of this group will be treated as root-like users.
-groups.wheel.group = etc:sysadmingroup
-
-# Used to allow Include Exclude groups
-grouperIncludeExclude.use = true
-grouperIncludeExclude.requireGroups.use = true
diff --git a/shibboleth-integration/mp-gr/grouper-data/container_files/conf/subject.properties b/shibboleth-integration/mp-gr/grouper-data/container_files/conf/subject.properties
deleted file mode 100644
index a823191..0000000
--- a/shibboleth-integration/mp-gr/grouper-data/container_files/conf/subject.properties
+++ /dev/null
@@ -1,75 +0,0 @@
-subject.sources.xml.location =
-
-subjectApi.source.ldap.id = ldap
-subjectApi.source.ldap.name = EDU Ldap
-subjectApi.source.ldap.types = person
-subjectApi.source.ldap.adapterClass = edu.internet2.middleware.grouper.subj.GrouperJndiSourceAdapter
-subjectApi.source.ldap.param.INITIAL_CONTEXT_FACTORY.value = com.sun.jndi.ldap.LdapCtxFactory
-subjectApi.source.ldap.param.PROVIDER_URL.value = ldap://localhost:389
-subjectApi.source.ldap.param.SECURITY_AUTHENTICATION.value = simple
-subjectApi.source.ldap.param.SECURITY_PRINCIPAL.value = cn=admin,dc=internet2,dc=edu
-subjectApi.source.ldap.param.SECURITY_CREDENTIALS.value = password
-subjectApi.source.ldap.param.SubjectID_AttributeType.value = uid
-subjectApi.source.ldap.param.SubjectID_formatToLowerCase.value = false
-subjectApi.source.ldap.param.Name_AttributeType.value = cn
-subjectApi.source.ldap.param.Description_AttributeType.value = cn
-subjectApi.source.ldap.param.VTLDAP_VALIDATOR.value = ConnectLdapValidator
-subjectApi.source.ldap.param.subjectVirtualAttribute_0_searchAttribute0.value = ${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('uid'), "")},${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('cn'), "")},${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('exampleEduRegId'), "")}
-subjectApi.source.ldap.param.sortAttribute0.value = cn
-subjectApi.source.ldap.param.searchAttribute0.value = searchAttribute0
-
-# STATUS SECTION for searches to filter out inactives and allow
-# the user to filter by status with e.g. status=all
-# this is optional, and advanced
-#
-# field in database or ldap or endpoint that is the status field
-#subjectApi.source.example.param.statusDatastoreFieldName.value = status
-
-# search string from user which represents the status. e.g. status=active
-#subjectApi.source.example.param.statusLabel.value = status
-
-# available statuses from screen (if not specified, any will be allowed). comma separated list.
-# Note, this is optional and you probably dont want to configure it, it is mostly necessary
-# when you have multiple sources with statuses... if someone types an invalid status
-# and you have this configured, it will not filter by it
-#subjectApi.source.example.param.statusesFromUser.value = Active, Inactive, Pending, All
-
-# all label from the user
-#subjectApi.source.example.param.statusAllFromUser.value = All
-
-# if no status is specified, this will be used (e.g. for active only). Note, the value should be of the
-# form the user would type in
-#subjectApi.source.example.param.statusSearchDefault.value = status=active
-
-# translate between screen values of status, and the data store value. Increment the 0 to 1, 2, etc for more translations.
-# so the user could enter: status=active, and that could translate to status_col=A. The 'user' is what the user types in,
-# the 'datastore' is what is in the datastore. The user part is not case-sensitive. Note, this could be a many to one
-#subjectApi.source.example.param.statusTranslateUser0.value = active
-#subjectApi.source.example.param.statusTranslateDatastore0.value = A
-
-# subject identifier to store in grouper's member table. this is used to increase speed of loader and perhaps for provisioning
-# you can have up to max 1 subject identifier
-#subjectApi.source.example.param.subjectIdentifierAttribute0.value = uid
-
-#searchSubject: find a subject by ID. ID is generally an opaque and permanent identifier, e.g. 12345678.
-# Each subject has one and only on ID. Returns one result when searching for one ID.
-subjectApi.source.ldap.search.searchSubject.param.filter.value = (&(uid=%TERM%)(objectclass=person))
-subjectApi.source.ldap.search.searchSubject.param.scope.value = SUBTREE_SCOPE
-subjectApi.source.ldap.search.searchSubject.param.base.value = ou=people,dc=internet2,dc=edu
-
-#searchSubjectByIdentifier: find a subject by identifier. Identifier is anything that uniquely
-# identifies the user, e.g. jsmith or jsmith@institution.edu.
-# Subjects can have multiple identifiers. Note: it is nice to have if identifiers are unique
-# even across sources. Returns one result when searching for one identifier.
-subjectApi.source.ldap.search.searchSubjectByIdentifier.param.filter.value = (&(|(uid=%TERM%)(employeeNumber=%TERM%))(objectclass=person))
-subjectApi.source.ldap.search.searchSubjectByIdentifier.param.scope.value = SUBTREE_SCOPE
-subjectApi.source.ldap.search.searchSubjectByIdentifier.param.base.value = ou=people,dc=internet2,dc=edu
-
-# search: find subjects by free form search. Returns multiple results.
-
-subjectApi.source.ldap.search.search.param.filter.value = (&(|(|(uid=%TERM%)(cn=*%TERM%*))(uid=%TERM%*))(objectclass=person))
-subjectApi.source.ldap.search.search.param.scope.value = SUBTREE_SCOPE
-subjectApi.source.ldap.search.search.param.base.value = ou=people,dc=internet2,dc=edu
-
-subjectApi.source.ldap.attributes = givenName, sn, uid, mail, employeeNumber
-subjectApi.source.ldap.internalAttributes = searchAttribute0
diff --git a/shibboleth-integration/mp-gr/grouper-data/container_files/seed-data/demo.backup b/shibboleth-integration/mp-gr/grouper-data/container_files/seed-data/demo.backup
deleted file mode 100644
index 276bd22..0000000
--- a/shibboleth-integration/mp-gr/grouper-data/container_files/seed-data/demo.backup
+++ /dev/null
@@ -1,274 +0,0 @@
-gs = GrouperSession.startRootSession();
-#addRootStem("basis", "basis");
-addRootStem("ref", "ref");
-#addRootStem("bundle", "bundle");
-#addRootStem("app", "app");
-#addRootStem("org", "org");
-#testStem = addRootStem("test", "test");
-
-addStem("ref", "course", "course")
-
-#addGroup("etc","coursesLoader", "coursesLoader");
-#groupAddType("etc:coursesLoader", "grouperLoader");
-#setGroupAttr("etc:coursesLoader", "grouperLoaderDbName", "grouper");
-#setGroupAttr("etc:coursesLoader", "grouperLoaderType", "SQL_GROUP_LIST");
-#setGroupAttr("etc:coursesLoader", "grouperLoaderScheduleType", "CRON");
-#setGroupAttr("etc:coursesLoader", "grouperLoaderQuartzCron", "0 * * * * ?");
-#setGroupAttr("etc:coursesLoader", "grouperLoaderQuartzCron", "0 * * * * ?");
-#setGroupAttr("etc:coursesLoader", "grouperLoaderQuery", "select distinct id as SUBJECT_IDENTIFIER, 'ldap' as SUBJECT_SOURCE_ID, CONCAT('ref:course:', courseID) as GROUP_NAME from SIS_Courses");
-
-addStem("ref", "affiliation", "affiliation")
-#folder = StemFinder.findByName(gs, "ref:affiliation");
-#AttributeAssign attributeAssign = folder.getAttributeDelegate().addAttribute(RuleUtils.ruleAttributeDefName()).getAttributeAssign();
-#AttributeValueDelegate attributeValueDelegate = attributeAssign.getAttributeValueDelegate();
-#attributeValueDelegate.assignValue(RuleUtils.ruleActAsSubjectSourceIdName(), "g:isa");
-#attributeValueDelegate.assignValue(RuleUtils.ruleActAsSubjectIdName(), "GrouperSystem");
-#attributeValueDelegate.assignValue(RuleUtils.ruleCheckTypeName(), RuleCheckType.groupCreate.name());
-#attributeValueDelegate.assignValue(RuleUtils.ruleCheckStemScopeName(), Stem.Scope.SUB.name());
-#attributeValueDelegate.assignValue(RuleUtils.ruleThenElName(),'${ruleElUtils.assignGroupPrivilege(groupId, "g:gsa", groupId, null, "read")}');
-
-group = new GroupSave(gs).assignName("etc:affiliationLoader").assignCreateParentStemsIfNotExist(true).save();
-group.getAttributeDelegate().assignAttribute(LoaderLdapUtils.grouperLoaderLdapAttributeDefName()).getAttributeAssign();
-attributeAssign = group.getAttributeDelegate().retrieveAssignment(null, LoaderLdapUtils.grouperLoaderLdapAttributeDefName(), false, true);
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapQuartzCronName(), "0 * * * * ?");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapTypeName(), "LDAP_GROUPS_FROM_ATTRIBUTES");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapServerIdName(), "demo");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapFilterName(), "(eduPersonAffiliation=*)");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSearchDnName(), "ou=People,dc=internet2,dc=edu");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectAttributeName(), "uid");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSourceIdName(), "ldap");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupAttributeName(), "eduPersonAffiliation");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectIdTypeName(), "subjectId");
-#attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectExpressionName(), '${subjectAttributes["subjectId"]}');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupNameExpressionName(), 'ref:affiliation:${groupAttribute}_systemOfRecord');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupDisplayNameExpressionName(), '${groupAttribute} system of record');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupTypesName(), "addIncludeExclude");
-
-group = new GroupSave(gs).assignName("etc:deptLoader").assignCreateParentStemsIfNotExist(true).save();
-group.getAttributeDelegate().assignAttribute(LoaderLdapUtils.grouperLoaderLdapAttributeDefName()).getAttributeAssign();
-attributeAssign = group.getAttributeDelegate().retrieveAssignment(null, LoaderLdapUtils.grouperLoaderLdapAttributeDefName(), false, true);
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapQuartzCronName(), "0 * * * * ?");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapTypeName(), "LDAP_GROUPS_FROM_ATTRIBUTES");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapServerIdName(), "demo");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapFilterName(), "(businessCategory=*)");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSearchDnName(), "ou=People,dc=internet2,dc=edu");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectAttributeName(), "uid");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSourceIdName(), "ldap");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupAttributeName(), "businessCategory");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectIdTypeName(), "subjectId");
-#attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectExpressionName(), '${subjectAttributes["subjectId"]}');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupNameExpressionName(), 'ref:dept:${groupAttribute}');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupDisplayNameExpressionName(), '${groupAttribute}');
-
-group = new GroupSave(gs).assignName("etc:coursesLoader").assignCreateParentStemsIfNotExist(true).save();
-group.getAttributeDelegate().assignAttribute(LoaderLdapUtils.grouperLoaderLdapAttributeDefName()).getAttributeAssign();
-attributeAssign = group.getAttributeDelegate().retrieveAssignment(null, LoaderLdapUtils.grouperLoaderLdapAttributeDefName(), false, true);
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapQuartzCronName(), "0 * * * * ?");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapTypeName(), "LDAP_GROUP_LIST");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapFilterName(), "(cn=*)");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSearchDnName(), "ou=Courses,ou=Groups,dc=internet2,dc=edu");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapServerIdName(), "demo");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSourceIdName(), "ldap");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectExpressionName(), '${loaderLdapElUtils.convertDnToSpecificValue(subjectId)}');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectAttributeName(), "uniqueMember");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectIdTypeName(), "subjectId");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapExtraAttributesName(), "cn");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupNameExpressionName(), 'ref:course:${groupAttributes["cn"]}');
-
-group = GroupFinder.findByName(gs, "etc:sysadmingroup", true);
-group.getAttributeDelegate().assignAttribute(LoaderLdapUtils.grouperLoaderLdapAttributeDefName()).getAttributeAssign();
-attributeAssign = group.getAttributeDelegate().retrieveAssignment(null, LoaderLdapUtils.grouperLoaderLdapAttributeDefName(), false, true);
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapQuartzCronName(), "0 * * * * ?");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapTypeName(), "LDAP_SIMPLE");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapFilterName(), "(cn=sysadmingroup)");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSearchDnName(), "ou=Groups,dc=internet2,dc=edu");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapServerIdName(), "demo");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSourceIdName(), "ldap");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectExpressionName(), '${loaderLdapElUtils.convertDnToSpecificValue(subjectId)}');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectAttributeName(), "uniqueMember");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectIdTypeName(), "subjectId");
-
-
-#addGroup("bundle", "default_services", "default_services");
-#addGroup("bundle", "student_services", "student_services");
-#addGroup("bundle", "employee_services", "employee_services");
-
-#addStem("ref", "student", "student");
-#addStem("ref:student", "class", "class");
-#addGroup("ref:student:class", "freshmen", "freshmen");
-#addGroup("ref:student:class", "sophomore", "sophomore");
-#addGroup("ref:student:class", "junior", "junior");
-#addGroup("ref:student:class", "senior", "senior");
-#addGroup("ref:student:class", "graduate", "graduate");
-#addGroup("ref:student:class", "doctorate", "doctorate");
-
-#addGroup("ref:student", "finaid", "finaid");
-#addStem("ref:student", "athlete", "athlete");
-#addGroup("ref:student:athlete", "baseball", "baseball");
-#addGroup("ref:student:athlete", "basketball", "basketball");
-#addGroup("ref:student:athlete", "football", "football");
-#addGroup("ref:student:athlete", "soccer", "soccer");
-#addGroup("ref:student:athlete", "volleyball", "volleyball");
-
-#addStem("ref", "employee", "employee");
-#addGroup("ref:employee", "fulltime", "fulltime");
-#addGroup("ref:employee", "parttime", "parttime");
-#addGroup("ref:employee", "tenured", "tenured");
-#addGroup("ref:employee", "emeritus", "emeritus");
-
-#addStem("ref", "alumni", "alumni");
-
-#addStem("ref", "role", "role");
-#addGroup("ref:role", "president", "president");
-#addGroup("ref:role", "provost", "provost");
-#addGroup("ref:role", "deptSecretary", "deptSecretary");
-#addGroup("ref:role", "dean", "dean");
-#addGroup("ref:role", "director", "director");
-#addGroup("ref:role", "custodian", "custodian");
-#addGroup("ref:role", "deptChair", "deptChair");
-#addGroup("ref:role", "faculty", "faculty");
-#addGroup("ref:role", "programmer", "programmer");
-#addGroup("ref:role", "programSpecialist", "programSpecialist");
-#addGroup("ref:role", "recruiter", "recruiter");
-#addGroup("ref:role", "coach", "coach");
-#addGroup("ref:role", "vicePresident", "vicePresident");
-
-#addMember("bundle:student_services", "ref:student:class:freshmen");
-#addMember("bundle:student_services", "ref:student:class:sophomore");
-#addMember("bundle:student_services", "ref:student:class:junior");
-#addMember("bundle:student_services", "ref:student:class:senior");
-#addMember("bundle:student_services", "ref:student:class:graduate");
-#addMember("bundle:student_services", "ref:student:class:doctorate");
-
-#addStem("org", "admissions", "admissions");
-#addStem("org:admissions", "etc", "etc");
-#addGroup("org:admissions:etc", "admissions_admin", "admissions_admin");
-#grantPriv("org:admissions", "org:admissions:etc:admissions_admin", NamingPrivilege.STEM);
-#addStem("org:admissions", "ref", "ref");
-#addStem("org:admissions", "app", "app");
-
-#addStem("org", "bursar", "bursar");
-#addStem("org:bursar", "etc", "etc");
-#addGroup("org:bursar:etc", "bursar_admin", "bursar_admin");
-#grantPriv("org:bursar", "org:bursar:etc:bursar_admin", NamingPrivilege.STEM);
-#addStem("org:bursar", "ref", "ref");
-#addStem("org:bursar", "app", "app");
-
-#addStem("org", "business", "business");
-#addStem("org:business", "etc", "etc");
-#addGroup("org:business:etc", "business_admin", "business_admin");
-#grantPriv("org:business", "org:business:etc:business_admin", NamingPrivilege.STEM);
-#addStem("org:business", "ref", "ref");
-#addStem("org:business", "app", "app");
-
-#addStem("org", "computerscience", "computerscience");
-#addStem("org:computerscience", "etc", "etc");
-#addGroup("org:computerscience:etc", "computerscience_admin", "computerscience_admin");
-#grantPriv("org:computerscience", "org:computerscience:etc:computerscience_admin", NamingPrivilege.STEM);
-#addStem("org:computerscience", "ref", "ref");
-#addStem("org:computerscience", "app", "app");
-
-#addStem("org", "education", "education");
-#addStem("org:education", "etc", "etc");
-#addGroup("org:education:etc", "education_admin", "education_admin");
-#grantPriv("org:education", "org:education:etc:education_admin", NamingPrivilege.STEM);
-#addStem("org:education", "ref", "ref");
-#addStem("org:education", "app", "app");
-
-#addStem("org", "psychology", "psychology");
-#addStem("org:psychology", "etc", "etc");
-#addGroup("org:psychology:etc", "psychology_admin", "psychology_admin");
-#grantPriv("org:psychology", "org:psychology:etc:psychology_admin", NamingPrivilege.STEM);
-#addStem("org:psychology", "ref", "ref");
-#addStem("org:psychology", "app", "app");
-
-#addStem("org", "physicaleducation", "physicaleducation");
-#addStem("org:physicaleducation", "etc", "etc");
-#addGroup("org:physicaleducation:etc", "physicaleducation_admin", "physicaleducation_admin");
-#grantPriv("org:physicaleducation", "org:physicaleducation:etc:physicaleducation_admin", NamingPrivilege.STEM);
-#addStem("org:physicaleducation", "ref", "ref");
-#2addStem("org:physicaleducation", "app", "app");
-
-#addStem("org", "humanresources", "humanresources");
-#addStem("org:humanresources", "etc", "etc");
-#addGroup("org:humanresources:etc", "humanresources_admin", "humanresources_admin");
-#grantPriv("org:humanresources", "org:humanresources:etc:humanresources_admin", NamingPrivilege.STEM);
-#addStem("org:humanresources", "ref", "ref");
-#addStem("org:humanresources", "app", "app");
-
-
-
-#banner=addStem("app", "banner", "banner");
-#addStem("app:banner", "etc", "etc");
-#addGroup("app:banner:etc", "banner_admin", "banner_admin");
-#grantPriv("app:banner", "app:banner:etc:banner_admin", NamingPrivilege.STEM);
-#addGroup("app:banner", "banner_user_allow", "banner_user_allow");
-#addGroup("app:banner", "banner_user_deny", "banner_user_deny");
-#addGroup("app:banner", "banner_user", "banner_user");
-#addComposite("app:banner:banner_user", CompositeType.UNION, "app:banner:banner_user_allow", "app:banner:banner_user_deny")
-
-#portal = addStem("app", "portal", "portal");
-#addStem("app:portal", "etc", "etc");
-#addGroup("app:portal:etc", "portal_admin", "portal_admin");
-#grantPriv("app:portal", "app:portal:etc:portal_admin", NamingPrivilege.STEM);
-#addGroup("app:portal", "portal_user_allow", "portal_user_allow");
-#addGroup("app:portal", "portal_user_deny", "portal_user_deny");
-#addGroup("app:portal", "portal_user", "portal_user");
-#addComposite("app:portal:portal_user", CompositeType.UNION, "app:portal:portal_user_allow", "app:portal:portal_user_deny")
-
-#addStem("app", "vpn", "vpn");
-#addStem("app:vpn", "etc", "etc");
-#addGroup("app:vpn:etc", "vpn_admin", "vpn_admin");
-#grantPriv("app:vpn", "app:vpn:etc:vpn_admin", NamingPrivilege.STEM);
-#addGroup("app:vpn", "vpn_user_allow", "vpn_user_allow");
-#addGroup("app:vpn", "vpn_user_deny", "vpn_user_deny");
-#addGroup("app:vpn", "vpn_user", "vpn_user");
-#addComposite("app:vpn:vpn_user", CompositeType.UNION, "app:vpn:vpn_user_allow", "app:vpn:vpn_user_deny")
-
-
-## Setup some user favorites
-#subject = SubjectFinder.findById("banderson");
-#group = GroupFinder.findByName(gs, "etc:sysadmingroup", true);
-#GrouperUserDataApi.favoriteGroupAdd("etc:grouperUi:grouperUiUserData", subject, group);
-#
-#stem = StemFinder.findByName(gs, "org:computerscience", true);
-#GrouperUserDataApi.favoriteStemAdd("etc:grouperUi:grouperUiUserData", subject, stem);
-
-
-##Set up service definitions
-#AttributeDef appServiceDef = new AttributeDefSave(gs).assignCreateParentStemsIfNotExist(true).assignAttributeDefType(AttributeDefType.service).assignName("etc:apps:appsServiceDefinition").assignToStem(true).save();
-#
-#AttributeDefName appService = new AttributeDefNameSave(gs, appServiceDef).assignCreateParentStemsIfNotExist(true).assignName("etc:apps:appsService").assignDisplayExtension("Central IT production Apps").save();
-#
-#banner.getAttributeDelegate().assignAttribute(appService);
-#portal.getAttributeDelegate().assignAttribute(appService);
-#
-#addMember("app:banner:banner_user_allow", "banderson");
-
-
-## Auto create the PSPNG attributes
-#edu.internet2.middleware.grouper.pspng.FullSyncProvisionerFactory.getFullSyncer("pspng_groupOfUniqueNames");
-#
-#
-#AttributeDef pspngAttributeDef = AttributeDefFinder.findByName("etc:pspng:provision_to_def", true);
-#AttributeDefName pspngAttribute = AttributeDefNameFinder.findByName("etc:pspng:provision_to", true);
-#AttributeAssignSave attributeAssignSave = new AttributeAssignSave(gs).assignPrintChangesToSystemOut(true);
-#
-##Assign the PSPNG attribute for the standard groups
-#attributeAssignSave.assignAttributeDefName(pspngAttribute);
-#attributeAssignSave.assignOwnerStem(testStem);
-#attributeAssignSave.addValue("pspng_groupOfUniqueNames");
-#attributeAssignSave.save();
-#
-##Assign the PSPNG attribute for the entitlements
-#AttributeAssignSave attributeAssignSave2 = new AttributeAssignSave(gs).assignPrintChangesToSystemOut(true);
-#attributeAssignSave2.assignAttributeDefName(pspngAttribute);
-#attributeAssignSave2.assignOwnerGroup(GroupFinder.findByName(gs, "app:vpn:vpn_user", true));
-#attributeAssignSave2.addValue("pspng_entitlements");
-#attributeAssignSave2.save();
-#
-#attributeAssignSave2 = new AttributeAssignSave(gs).assignPrintChangesToSystemOut(true);
-#attributeAssignSave2.assignAttributeDefName(pspngAttribute);
-#attributeAssignSave2.assignOwnerGroup(GroupFinder.findByName(gs, "app:banner:banner_user", true));
-#attributeAssignSave2.addValue("pspng_entitlements");
-#attributeAssignSave2.save();
diff --git a/shibboleth-integration/mp-gr/grouper-data/container_files/seed-data/demo.gsh b/shibboleth-integration/mp-gr/grouper-data/container_files/seed-data/demo.gsh
deleted file mode 100644
index e6b4db3..0000000
--- a/shibboleth-integration/mp-gr/grouper-data/container_files/seed-data/demo.gsh
+++ /dev/null
@@ -1,65 +0,0 @@
-System.out.println("************** demo.gsh starting...");
-
-gs = GrouperSession.startRootSession();
-addRootStem("ref", "ref");
-addStem("ref", "course", "course")
-addStem("ref", "affiliation", "affiliation")
-
-group = new GroupSave(gs).assignName("etc:affiliationLoader").assignCreateParentStemsIfNotExist(true).save();
-group.getAttributeDelegate().assignAttribute(LoaderLdapUtils.grouperLoaderLdapAttributeDefName()).getAttributeAssign();
-attributeAssign = group.getAttributeDelegate().retrieveAssignment(null, LoaderLdapUtils.grouperLoaderLdapAttributeDefName(), false, true);
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapQuartzCronName(), "0 * * * * ?");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapTypeName(), "LDAP_GROUPS_FROM_ATTRIBUTES");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapServerIdName(), "demo");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapFilterName(), "(eduPersonAffiliation=*)");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSearchDnName(), "ou=People,dc=internet2,dc=edu");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectAttributeName(), "uid");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSourceIdName(), "ldap");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupAttributeName(), "eduPersonAffiliation");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectIdTypeName(), "subjectId");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupNameExpressionName(), 'ref:affiliation:${groupAttribute}_systemOfRecord');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupDisplayNameExpressionName(), '${groupAttribute} system of record');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupTypesName(), "addIncludeExclude");
-
-group = new GroupSave(gs).assignName("etc:deptLoader").assignCreateParentStemsIfNotExist(true).save();
-group.getAttributeDelegate().assignAttribute(LoaderLdapUtils.grouperLoaderLdapAttributeDefName()).getAttributeAssign();
-attributeAssign = group.getAttributeDelegate().retrieveAssignment(null, LoaderLdapUtils.grouperLoaderLdapAttributeDefName(), false, true);
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapQuartzCronName(), "0 * * * * ?");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapTypeName(), "LDAP_GROUPS_FROM_ATTRIBUTES");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapServerIdName(), "demo");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapFilterName(), "(businessCategory=*)");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSearchDnName(), "ou=People,dc=internet2,dc=edu");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectAttributeName(), "uid");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSourceIdName(), "ldap");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupAttributeName(), "businessCategory");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectIdTypeName(), "subjectId");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupNameExpressionName(), 'ref:dept:${groupAttribute}');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupDisplayNameExpressionName(), '${groupAttribute}');
-
-group = new GroupSave(gs).assignName("etc:coursesLoader").assignCreateParentStemsIfNotExist(true).save();
-group.getAttributeDelegate().assignAttribute(LoaderLdapUtils.grouperLoaderLdapAttributeDefName()).getAttributeAssign();
-attributeAssign = group.getAttributeDelegate().retrieveAssignment(null, LoaderLdapUtils.grouperLoaderLdapAttributeDefName(), false, true);
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapQuartzCronName(), "0 * * * * ?");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapTypeName(), "LDAP_GROUP_LIST");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapFilterName(), "(cn=*)");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSearchDnName(), "ou=Courses,ou=Groups,dc=internet2,dc=edu");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapServerIdName(), "demo");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSourceIdName(), "ldap");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectExpressionName(), '${loaderLdapElUtils.convertDnToSpecificValue(subjectId)}');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectAttributeName(), "uniqueMember");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectIdTypeName(), "subjectId");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapExtraAttributesName(), "cn");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapGroupNameExpressionName(), 'ref:course:${groupAttributes["cn"]}');
-
-group = GroupFinder.findByName(gs, "etc:sysadmingroup", true);
-group.getAttributeDelegate().assignAttribute(LoaderLdapUtils.grouperLoaderLdapAttributeDefName()).getAttributeAssign();
-attributeAssign = group.getAttributeDelegate().retrieveAssignment(null, LoaderLdapUtils.grouperLoaderLdapAttributeDefName(), false, true);
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapQuartzCronName(), "0 * * * * ?");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapTypeName(), "LDAP_SIMPLE");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapFilterName(), "(cn=sysadmingroup)");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSearchDnName(), "ou=Groups,dc=internet2,dc=edu");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapServerIdName(), "demo");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSourceIdName(), "ldap");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectExpressionName(), '${loaderLdapElUtils.convertDnToSpecificValue(subjectId)}');
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectAttributeName(), "uniqueMember");
-attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectIdTypeName(), "subjectId");
diff --git a/shibboleth-integration/mp-gr/grouper-ui/Dockerfile b/shibboleth-integration/mp-gr/grouper-ui/Dockerfile
deleted file mode 100644
index 8fec2ae..0000000
--- a/shibboleth-integration/mp-gr/grouper-ui/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM tier/grouper:latest
-
-LABEL author="tier-packaging@internet2.edu "
-
-#COPY in custom css, images, etc
-
-CMD ["ui"]
diff --git a/shibboleth-integration/mp-gr/grouper-ui/container_files/shibboleth/shibd.logger b/shibboleth-integration/mp-gr/grouper-ui/container_files/shibboleth/shibd.logger
deleted file mode 100644
index 2589b43..0000000
--- a/shibboleth-integration/mp-gr/grouper-ui/container_files/shibboleth/shibd.logger
+++ /dev/null
@@ -1,69 +0,0 @@
-# set overall behavior
-log4j.rootCategory=DEBUG, shibd_log, warn_log
-
-# fairly verbose for DEBUG, so generally leave at DEBUG
-log4j.category.XMLTooling.XMLObject=DEBUG
-log4j.category.XMLTooling.KeyInfoResolver=DEBUG
-log4j.category.Shibboleth.IPRange=DEBUG
-log4j.category.Shibboleth.PropertySet=DEBUG
-
-# raise for low-level tracing of SOAP client HTTP/SSL behavior
-log4j.category.XMLTooling.libcurl=DEBUG
-
-# useful categories to tune independently:
-#
-# tracing of SAML messages and security policies
-#log4j.category.OpenSAML.MessageDecoder=DEBUG
-#log4j.category.OpenSAML.MessageEncoder=DEBUG
-#log4j.category.OpenSAML.SecurityPolicyRule=DEBUG
-#log4j.category.XMLTooling.SOAPClient=DEBUG
-# interprocess message remoting
-#log4j.category.Shibboleth.Listener=DEBUG
-# mapping of requests to applicationId
-#log4j.category.Shibboleth.RequestMapper=DEBUG
-# high level session cache operations
-#log4j.category.Shibboleth.SessionCache=DEBUG
-# persistent storage and caching
-#log4j.category.XMLTooling.StorageService=DEBUG
-
-# logs XML being signed or verified if set to DEBUG
-log4j.category.XMLTooling.Signature.Debugger=DEBUG, sig_log
-log4j.additivity.XMLTooling.Signature.Debugger=false
-
-# the tran log blocks the "default" appender(s) at runtime
-# Level should be left at DEBUG for this category
-log4j.category.Shibboleth-TRANSACTION=DEBUG, tran_log
-log4j.additivity.Shibboleth-TRANSACTION=false
-# uncomment to suppress particular event types
-#log4j.category.Shibboleth-TRANSACTION.AuthnRequest=WARN
-#log4j.category.Shibboleth-TRANSACTION.Login=WARN
-#log4j.category.Shibboleth-TRANSACTION.Logout=WARN
-
-# define the appenders
-
-log4j.appender.shibd_log=org.apache.log4j.RollingFileAppender
-log4j.appender.shibd_log.fileName=/var/log/shibboleth/shibd.log
-log4j.appender.shibd_log.maxFileSize=1000000
-log4j.appender.shibd_log.maxBackupIndex=10
-log4j.appender.shibd_log.layout=org.apache.log4j.PatternLayout
-log4j.appender.shibd_log.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S} %p %c %x: %m%n
-
-log4j.appender.warn_log=org.apache.log4j.RollingFileAppender
-log4j.appender.warn_log.fileName=/var/log/shibboleth/shibd_warn.log
-log4j.appender.warn_log.maxFileSize=1000000
-log4j.appender.warn_log.maxBackupIndex=10
-log4j.appender.warn_log.layout=org.apache.log4j.PatternLayout
-log4j.appender.warn_log.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S} %p %c %x: %m%n
-log4j.appender.warn_log.threshold=WARN
-
-log4j.appender.tran_log=org.apache.log4j.RollingFileAppender
-log4j.appender.tran_log.fileName=/var/log/shibboleth/transaction.log
-log4j.appender.tran_log.maxFileSize=1000000
-log4j.appender.tran_log.maxBackupIndex=20
-log4j.appender.tran_log.layout=org.apache.log4j.PatternLayout
-log4j.appender.tran_log.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S} %p %c %x: %m%n
-
-log4j.appender.sig_log=org.apache.log4j.FileAppender
-log4j.appender.sig_log.fileName=/var/log/shibboleth/signature.log
-log4j.appender.sig_log.layout=org.apache.log4j.PatternLayout
-log4j.appender.sig_log.layout.ConversionPattern=%m
diff --git a/shibboleth-integration/mp-gr/grouper-ws/Dockerfile b/shibboleth-integration/mp-gr/grouper-ws/Dockerfile
deleted file mode 100644
index f5c06b9..0000000
--- a/shibboleth-integration/mp-gr/grouper-ws/Dockerfile
+++ /dev/null
@@ -1,9 +0,0 @@
-FROM tier/grouper:latest
-
-LABEL author="tier-packaging@internet2.edu "
-
-COPY container_files/web.xml /opt/grouper/grouper.ws/WEB-INF/
-COPY container_files/tomcat-users.xml /opt/tomcat/conf/
-COPY container_files/server.xml /opt/tomcat/conf/
-
-CMD ["ws"]
diff --git a/shibboleth-integration/mp-gr/grouper-ws/container_files/server.xml b/shibboleth-integration/mp-gr/grouper-ws/container_files/server.xml
deleted file mode 100644
index 20edd02..0000000
--- a/shibboleth-integration/mp-gr/grouper-ws/container_files/server.xml
+++ /dev/null
@@ -1,180 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/shibboleth-integration/mp-gr/grouper-ws/container_files/tomcat-users.xml b/shibboleth-integration/mp-gr/grouper-ws/container_files/tomcat-users.xml
deleted file mode 100644
index f5d6945..0000000
--- a/shibboleth-integration/mp-gr/grouper-ws/container_files/tomcat-users.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/shibboleth-integration/mp-gr/grouper-ws/container_files/web.xml b/shibboleth-integration/mp-gr/grouper-ws/container_files/web.xml
deleted file mode 100644
index 03d3deb..0000000
--- a/shibboleth-integration/mp-gr/grouper-ws/container_files/web.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
-
-
-
-
-
- Grouper service filter
- edu.internet2.middleware.grouper.ws.GrouperServiceJ2ee
-
-
-
-
- Grouper logging filter
- edu.internet2.middleware.grouper.ws.j2ee.ServletFilterLogger
-
-
-
-
-
- Grouper service filter
- /services/*
-
-
- Grouper service filter
- /servicesRest/*
-
-
- AxisServlet
- Apache-Axis Servlet
- edu.internet2.middleware.grouper.ws.GrouperServiceAxisServlet
- 1
-
-
-
-
- RestServlet
- WS REST Servlet
- edu.internet2.middleware.grouper.ws.rest.GrouperRestServlet
- 1
-
-
- StatusServlet
- Status Servlet
- edu.internet2.middleware.grouper.j2ee.status.GrouperStatusServlet
- 1
-
-
- StatusServlet
- /status
-
-
- AxisServlet
- /services/*
-
-
- RestServlet
- /servicesRest/*
-
-
-
-
- Web services
- /services/*
-
-
- *
-
-
-
-
-
- Web services
- /servicesRest/*
-
-
-
- *
-
-
-
-
-
- BASIC
- Grouper Application
-
-
-
-
-
- The role that is required to log in to web service
-
- *
-
-
-
- 1
-
-
-
diff --git a/shibboleth-integration/mp-gr/gsh/Dockerfile b/shibboleth-integration/mp-gr/gsh/Dockerfile
deleted file mode 100644
index 3302328..0000000
--- a/shibboleth-integration/mp-gr/gsh/Dockerfile
+++ /dev/null
@@ -1,5 +0,0 @@
-FROM tier/grouper:latest
-
-MAINTAINER tier-packaging@internet2.edu
-
-CMD ["gsh"]
diff --git a/shibboleth-integration/mp-gr/midpoint-data/Dockerfile b/shibboleth-integration/mp-gr/midpoint-data/Dockerfile
deleted file mode 100644
index fcaa4e0..0000000
--- a/shibboleth-integration/mp-gr/midpoint-data/Dockerfile
+++ /dev/null
@@ -1,39 +0,0 @@
-FROM centos:centos7
-
-LABEL author="tier-packaging@internet2.edu "
-
-COPY ./conf/mariadb.repo /etc/yum.repos.d/
-
-RUN yum install -y epel-release \
- && yum update -y \
- && yum install -y mariadb-server mariadb \
- && yum clean all \
- && rm -rf /var/cache/yum
-
-COPY database_password.txt /tmp/
-
-RUN mysql_install_db \
- && chown -R mysql:mysql /var/lib/mysql/ \
- && sed -i 's/^\(bind-address\s.*\)/# \1/' /etc/my.cnf \
- && sed -i 's/^\(log_error\s.*\)/# \1/' /etc/my.cnf \
- && sed -i 's/\[mysqld\]/\[mysqld\]\ncharacter_set_server = utf8/' /etc/my.cnf \
- && sed -i 's/\[mysqld\]/\[mysqld\]\ncollation_server = utf8_bin/' /etc/my.cnf \
- && sed -i 's/\[mysqld\]/\[mysqld\]\nport = 3306/' /etc/my.cnf \
- && cat /etc/my.cnf \
- && echo "/usr/bin/mysqld_safe &" > /tmp/config \
- && echo "mysqladmin --silent --wait=30 ping || exit 1" >> /tmp/config \
- && echo "mysql -e \"CREATE USER 'root'@'%' IDENTIFIED BY '`cat /tmp/database_password.txt`';\"" >> /tmp/config \
- && echo "echo ok0" >> /tmp/config \
- && echo "mysql -e 'GRANT ALL PRIVILEGES ON *.* TO \"root\"@\"%\" WITH GRANT OPTION;'" >> /tmp/config \
- && echo "echo ok1" >> /tmp/config \
- && echo "mysql -e 'CREATE DATABASE midpoint CHARACTER SET utf8 COLLATE utf8_bin;'" >> /tmp/config \
- && echo "echo ok2" >> /tmp/config \
- && echo "mysql -e \"SET PASSWORD FOR 'root'@'localhost' = PASSWORD('`cat /tmp/database_password.txt`');\"" >> /tmp/config \
- && echo "echo ok3" >> /tmp/config \
- && cat /tmp/config \
- && bash /tmp/config \
- && rm -f /tmp/config /tmp/database_password.txt
-
-EXPOSE 3306
-
-CMD mysqld_safe
diff --git a/shibboleth-integration/mp-gr/midpoint-data/conf/mariadb.repo b/shibboleth-integration/mp-gr/midpoint-data/conf/mariadb.repo
deleted file mode 100644
index e24b3a0..0000000
--- a/shibboleth-integration/mp-gr/midpoint-data/conf/mariadb.repo
+++ /dev/null
@@ -1,6 +0,0 @@
-[mariadb]
-name = MariaDB
-baseurl = http://yum.mariadb.org/10.1/centos7-amd64
-gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
-gpgcheck=1
-
diff --git a/shibboleth-integration/mp-gr/midpoint-data/database_password.txt b/shibboleth-integration/mp-gr/midpoint-data/database_password.txt
deleted file mode 100644
index 11bac01..0000000
--- a/shibboleth-integration/mp-gr/midpoint-data/database_password.txt
+++ /dev/null
@@ -1 +0,0 @@
-456654
diff --git a/shibboleth-integration/mp-gr/midpoint-data/readme.txt b/shibboleth-integration/mp-gr/midpoint-data/readme.txt
deleted file mode 100644
index e0affb1..0000000
--- a/shibboleth-integration/mp-gr/midpoint-data/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-database_password.txt should be synchronized with ../configs-and-secrets/midpoint/database_password.txt
diff --git a/shibboleth-integration/mp-gr/midpoint-server/Dockerfile b/shibboleth-integration/mp-gr/midpoint-server/Dockerfile
deleted file mode 100644
index ed8352c..0000000
--- a/shibboleth-integration/mp-gr/midpoint-server/Dockerfile
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# Building assumes midpoint-3.9-SNAPSHOT-dist.tar.gz is present in the current directory.
-#
-
-FROM tier/shibboleth_sp
-
-MAINTAINER info@evolveum.com
-
-# TODO switch to other appropriate Java implementation
-
-RUN yum -y install java-1.8.0-openjdk
-
-ARG MP_VERSION=3.9-SNAPSHOT
-ARG MP_DIST_FILE=midpoint-${MP_VERSION}-dist.tar.gz
-
-ENV MP_DIR /opt/midpoint
-
-RUN mkdir -p ${MP_DIR}/var
-
-COPY ${MP_DIST_FILE} ${MP_DIR}
-COPY container_files/mp-home/ ${MP_DIR}/var/
-
-RUN echo 'Extracting midPoint archive...' \
- && tar xzf ${MP_DIR}/midpoint-${MP_VERSION}-dist.tar.gz -C ${MP_DIR} --strip-components=1
-
-VOLUME ${MP_DIR}/var
-
-RUN rm /etc/shibboleth/sp-key.pem /etc/shibboleth/sp-cert.pem
-
-COPY container_files/httpd/conf/* /etc/httpd/conf.d/
-COPY container_files/httpd/possible-conf/* /etc/httpd/possible-conf/
-COPY container_files/shibboleth/* /etc/shibboleth/
-COPY container_files/usr-local-bin/ /usr/local/bin/
-
-RUN cp /dev/null /etc/httpd/conf.d/ssl.conf \
- && sed -i 's/LogFormat "/LogFormat "httpd;access_log;%{ENV}e;%{USERTOKEN}e;/g' /etc/httpd/conf/httpd.conf \
- && echo -e "\nErrorLogFormat \"httpd;error_log;%{ENV}e;%{USERTOKEN}e;[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i\"" >> /etc/httpd/conf/httpd.conf \
- && sed -i 's/CustomLog "logs\/access_log"/CustomLog "\/tmp\/logpipe"/g' /etc/httpd/conf/httpd.conf \
- && sed -i 's/ErrorLog "logs\/error_log"/ErrorLog "\/tmp\/logpipe"/g' /etc/httpd/conf/httpd.conf \
- && echo -e "\nPassEnv ENV" >> /etc/httpd/conf/httpd.conf \
- && echo -e "\nPassEnv USERTOKEN" >> /etc/httpd/conf/httpd.conf
-
-
-
-ENV REPO_HOST midpoint-data
-ENV REPO_PORT 3306
-ENV REPO_USER root
-ENV REPO_DATABASE midpoint
-ENV REPO_PASSWORD_FILE /run/secrets/m_database_password.txt
-ENV ENV demo
-ENV USERTOKEN $MP_VERSION
-ENV ACTIVE_PROFILE default,sso
-ENV SSO_HEADER uid
-ENV AJP_ENABLED true
-ENV AJP_PORT 9090
-ENV LOGOUT_URL https://localhost:4438/Shibboleth.sso/Logout
-
-ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
\ No newline at end of file
diff --git a/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/icf-connectors/net.tirasa.connid.bundles.db.scriptedsql-2.2.6-SNAPSHOT.jar b/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/icf-connectors/net.tirasa.connid.bundles.db.scriptedsql-2.2.6-SNAPSHOT.jar
deleted file mode 100644
index 88fcb54..0000000
Binary files a/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/icf-connectors/net.tirasa.connid.bundles.db.scriptedsql-2.2.6-SNAPSHOT.jar and /dev/null differ
diff --git a/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/lib/amqp-client-5.3.0.jar b/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/lib/amqp-client-5.3.0.jar
deleted file mode 100644
index 27c6942..0000000
Binary files a/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/lib/amqp-client-5.3.0.jar and /dev/null differ
diff --git a/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/res/grouper2/SchemaScript.groovy b/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/res/grouper2/SchemaScript.groovy
deleted file mode 100644
index 495615d..0000000
--- a/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/res/grouper2/SchemaScript.groovy
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * ====================
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 2013 ForgeRock. All rights reserved.
- *
- * The contents of this file are subject to the terms of the Common Development
- * and Distribution License("CDDL") (the "License"). You may not use this file
- * except in compliance with the License.
- *
- * You can obtain a copy of the License at
- * http://opensource.org/licenses/cddl1.php
- * See the License for the specific language governing permissions and limitations
- * under the License.
- *
- * When distributing the Covered Code, include this CDDL Header Notice in each file
- * and include the License file at http://opensource.org/licenses/cddl1.php.
- * If applicable, add the following below this CDDL Header, with the fields
- * enclosed by brackets [] replaced by your own identifying information:
- * "Portions Copyrighted [year] [name of copyright owner]"
- * ====================
- * Portions Copyrighted 2013 ConnId.
- */
-import org.identityconnectors.framework.common.objects.AttributeInfo;
-import org.identityconnectors.framework.common.objects.AttributeInfo.Flags;
-import org.identityconnectors.framework.common.objects.AttributeInfoBuilder;
-import org.identityconnectors.framework.common.objects.ObjectClassInfo;
-import org.identityconnectors.framework.common.objects.ObjectClassInfoBuilder;
-
-// Parameters:
-// The connector sends the following:
-// action: a string describing the action ("SCHEMA" here)
-// log: a handler to the Log facility
-// builder: SchemaBuilder instance for the connector
-//
-// The connector will make the final call to builder.build()
-// so the scipt just need to declare the different object types.
-
-// This sample shows how to create 3 basic ObjectTypes: __ACCOUNT__, __GROUP__ and organization.
-// Each of them contains one required attribute and normal String attributes
-
-
-log.info("Entering "+action+" Script");
-
-// __UID__ = grouper_members.id
-// __NAME__ = grouper_members.subject_id
-accAttrsInfo = new HashSet();
-accAttrsInfo.add(AttributeInfoBuilder.build("subject_id", String.class));
-accAttrsInfo.add(AttributeInfoBuilder.build("subject_identifier0", String.class));
-accAttrsInfo.add(AttributeInfoBuilder.build("sort_string0", String.class));
-accAttrsInfo.add(AttributeInfoBuilder.build("search_string0", String.class));
-accAttrsInfo.add(AttributeInfoBuilder.build("name", String.class));
-accAttrsInfo.add(AttributeInfoBuilder.build("description", String.class));
-accAttrsInfo.add(AttributeInfoBuilder.build("group", String.class, [Flags.MULTIVALUED] as Set));
-ociAccount = new ObjectClassInfoBuilder().setType("__ACCOUNT__").addAllAttributeInfo(accAttrsInfo).build();
-builder.defineObjectClass(ociAccount);
-
-// __UID__ = grouper_groups.id
-// __NAME__ = grouper_groups.name
-grpAttrsInfo = new HashSet();
-grpAttrsInfo.add(AttributeInfoBuilder.build("displayName", String.class));
-grpAttrsInfo.add(AttributeInfoBuilder.build("extension", String.class));
-grpAttrsInfo.add(AttributeInfoBuilder.build("displayExtension", String.class));
-grpAttrsInfo.add(AttributeInfoBuilder.build("description", String.class));
-grpAttrsInfo.add(AttributeInfoBuilder.build("type", String.class));
-ociGroup = new ObjectClassInfoBuilder().setType("__GROUP__").addAllAttributeInfo(grpAttrsInfo).build();
-builder.defineObjectClass(ociGroup);
-
-
-/*
-// Declare the organization attributes
-// Make the name required
-nAIB = new AttributeInfoBuilder("name",String.class);
-nAIB.setRequired(true);
-
-orgAttrsInfo = new HashSet();
-orgAttrsInfo.add(nAIB.build());
-orgAttrsInfo.add(AttributeInfoBuilder.build("description", String.class));
-// Create the organization Object class
-final ObjectClassInfo ociOrg = new ObjectClassInfoBuilder().setType("organization").addAllAttributeInfo(orgAttrsInfo).build();
-builder.defineObjectClass(ociOrg);
-*/
-
-log.info("Schema script done");
diff --git a/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/res/grouper2/SearchScript.groovy b/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/res/grouper2/SearchScript.groovy
deleted file mode 100644
index ea61cdd..0000000
--- a/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/res/grouper2/SearchScript.groovy
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * ====================
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 2013 ForgeRock. All rights reserved.
- *
- * The contents of this file are subject to the terms of the Common Development
- * and Distribution License("CDDL") (the "License"). You may not use this file
- * except in compliance with the License.
- *
- * You can obtain a copy of the License at
- * http://opensource.org/licenses/cddl1.php
- * See the License for the specific language governing permissions and limitations
- * under the License.
- *
- * When distributing the Covered Code, include this CDDL Header Notice in each file
- * and include the License file at http://opensource.org/licenses/cddl1.php.
- * If applicable, add the following below this CDDL Header, with the fields
- * enclosed by brackets [] replaced by your own identifying information:
- * "Portions Copyrighted [year] [name of copyright owner]"
- * ====================
- * Portions Copyrighted 2013 ConnId.
- */
-import groovy.sql.Sql;
-import groovy.sql.DataSet;
-
-// Parameters:
-// The connector sends the following:
-// connection: handler to the SQL connection
-// objectClass: a String describing the Object class (__ACCOUNT__ / __GROUP__ / other)
-// action: a string describing the action ("SEARCH" here)
-// log: a handler to the Log facility
-// options: a handler to the OperationOptions Map
-// query: a handler to the Query Map
-//
-// The Query map describes the filter used.
-//
-// query = [ operation: "CONTAINS", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "ENDSWITH", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "STARTSWITH", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "EQUALS", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "GREATERTHAN", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "GREATERTHANOREQUAL", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "LESSTHAN", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "LESSTHANOREQUAL", left: attribute, right: "value", not: true/false ]
-// query = null : then we assume we fetch everything
-//
-// AND and OR filter just embed a left/right couple of queries.
-// query = [ operation: "AND", left: query1, right: query2 ]
-// query = [ operation: "OR", left: query1, right: query2 ]
-//
-// Returns: A list of Maps. Each map describing one row.
-// !!!! Each Map must contain a '__UID__' and '__NAME__' attribute.
-// This is required to build a ConnectorObject.
-
-log.info("Entering "+action+" Script");
-
-def sql = new Sql(connection);
-def result = []
-def where = "";
-
-switch ( objectClass ) {
- case "__ACCOUNT__":
- sql.eachRow("\
-select m.id, m.name, m.subject_id, m.subject_identifier0, m.sort_string0, m.search_string0, m.description, m.subject_source, m.subject_type, group_concat(distinct g.name) as groups \
-from \
- grouper_members m \
- left join grouper_memberships_all_v gm on m.id=gm.member_id and gm.owner_id in \
- (select m.subject_id \
- from grouper_memberships gm join grouper_members m on gm.member_id=m.id \
- where gm.owner_id = (select subject_id from grouper_members where name='etc:exportedGroups' and subject_type='group')) \
- left join grouper_groups g on gm.owner_id=g.id \
-group by m.id \
-having \
- subject_source = 'ldap' and subject_type = 'person'",
- {result.add(
- [__UID__:it.id,
- __NAME__:it.subject_id,
- subject_id:it.subject_id,
- subject_identifier0:it.subject_identifier0,
- sort_string0:it.sort_string0,
- search_string0:it.search_string0,
- name:it.name,
- description:it.description,
- group:it.groups?.tokenize(',')])} );
- break
-
- case "__GROUP__":
- sql.eachRow("SELECT id, name, display_name, extension, display_extension, description, type_of_group FROM grouper_groups WHERE id in \
- (select m.subject_id \
- from grouper_memberships gm join grouper_members m on gm.member_id=m.id \
- where gm.owner_id = (select subject_id from grouper_members where name='etc:exportedGroups' and subject_type='group'))",
- {result.add([
- __UID__:it.id,
- __NAME__:it.name,
- displayName:it.display_name,
- extension:it.extension,
- displayExtension:it.display_extension,
- description:it.description,
- type:it.type_of_group])} );
- break
-
-/*
- case "organization":
- sql.eachRow("SELECT * FROM Organizations" + where, {result.add([__UID__:it.name, __NAME__:it.name, description:it.description])} );
- break */
-
- default:
- result;
-}
-
-return result;
diff --git a/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/res/grouper2/SyncScript.groovy b/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/res/grouper2/SyncScript.groovy
deleted file mode 100644
index c02e1d7..0000000
--- a/shibboleth-integration/mp-gr/midpoint-server/container_files/mp-home/res/grouper2/SyncScript.groovy
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * ====================
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 2013 ForgeRock. All rights reserved.
- *
- * The contents of this file are subject to the terms of the Common Development
- * and Distribution License("CDDL") (the "License"). You may not use this file
- * except in compliance with the License.
- *
- * You can obtain a copy of the License at
- * http://opensource.org/licenses/cddl1.php
- * See the License for the specific language governing permissions and limitations
- * under the License.
- *
- * When distributing the Covered Code, include this CDDL Header Notice in each file
- * and include the License file at http://opensource.org/licenses/cddl1.php.
- * If applicable, add the following below this CDDL Header, with the fields
- * enclosed by brackets [] replaced by your own identifying information:
- * "Portions Copyrighted [year] [name of copyright owner]"
- * ====================
- * Portions Copyrighted 2013 ConnId.
- */
-import groovy.sql.Sql
-import groovy.sql.DataSet
-import com.rabbitmq.client.*
-
-// Parameters:
-// The connector sends the following:
-// connection: handler to the SQL connection
-// objectClass: a String describing the Object class (__ACCOUNT__ / __GROUP__ / other)
-// action: a string describing the action ("SYNC" or "GET_LATEST_SYNC_TOKEN" here)
-// log: a handler to the Log facility
-// options: a handler to the OperationOptions Map (null if action = "GET_LATEST_SYNC_TOKEN")
-// token: a handler to an Object representing the sync token (null if action = "GET_LATEST_SYNC_TOKEN")
-//
-//
-// Returns:
-// if action = "GET_LATEST_SYNC_TOKEN", it must return an object representing the last known
-// sync token for the corresponding ObjectClass
-//
-// if action = "SYNC":
-// A list of Maps . Each map describing one update:
-// Map should look like the following:
-//
-// [
-// "token":