diff --git a/Workbench/comanage_midpoint_data/container_files/seed-data/createDBforMP.sql b/Workbench/comanage_midpoint_data/container_files/seed-data/createDBforMP.sql new file mode 100644 index 0000000..b5c6541 --- /dev/null +++ b/Workbench/comanage_midpoint_data/container_files/seed-data/createDBforMP.sql @@ -0,0 +1,99 @@ +CREATE DATABASE grouper_to_midpoint WITH ENCODING=utf8; +CREATE USER grouper WITH PASSWORD 'password'; +GRANT ALL PRIVILEGES ON DATABASE grouper_to_midpoint TO grouper; + +\connect grouper_to_midpoint; +set role grouper; + +CREATE TABLE gr_mp_groups ( + group_name varchar(1024) NULL, -- Name of group mapped in some way + id_index int8 NOT NULL, -- This is the integer identifier for a group and foreign key to group attributes and memberships + display_name varchar(1024) NULL, -- Display name of group mapped in some way + description varchar(1024) NULL, -- Description of group mapped in some way + last_modified int8 NOT NULL, -- Millis since 1970, will be sequential and unique + deleted varchar(1) NOT NULL, -- T or F. Deleted rows will be removed after they have had time to be processed + CONSTRAINT gr_mp_groups_pkey PRIMARY KEY (id_index) +); +CREATE INDEX gr_mp_groups_ddx ON gr_mp_groups(display_name); +CREATE INDEX gr_mp_groups_gdx ON gr_mp_groups(group_name); +CREATE UNIQUE INDEX gr_mp_groups_idx ON gr_mp_groups(id_index); +CREATE UNIQUE INDEX gr_mp_groups_ldx ON gr_mp_groups(last_modified); +COMMENT ON TABLE gr_mp_groups IS 'This table holds groups'; + +COMMENT ON COLUMN gr_mp_groups.group_name IS 'Name of group mapped in some way'; +COMMENT ON COLUMN gr_mp_groups.id_index IS 'This is the integer identifier for a group and foreign key to group attributes and memberships'; +COMMENT ON COLUMN gr_mp_groups.display_name IS 'Display name of group mapped in some way'; +COMMENT ON COLUMN gr_mp_groups.description IS 'Description of group mapped in some way'; +COMMENT ON COLUMN gr_mp_groups.last_modified IS 'Millis since 1970, will be sequential and unique'; +COMMENT ON COLUMN gr_mp_groups.deleted IS 'T or F. Deleted rows will be removed after they have had time to be processed'; + +CREATE TABLE gr_mp_subjects ( + subject_id_index int8 NOT NULL, -- This is the integer identifier for a subject and foreign key to subject attributes and memberships + subject_id varchar(1024) NULL, -- Subject ID mapped in some way + last_modified int8 NOT NULL, -- Millis since 1970, will be sequential and unique + deleted varchar(1) NOT NULL, -- T or F. Deleted rows will be removed after they have had time to be processed + CONSTRAINT gr_mp_subjects_pkey PRIMARY KEY (subject_id_index) +); +CREATE UNIQUE INDEX gr_mp_subjects_idx ON gr_mp_subjects(subject_id_index); +CREATE UNIQUE INDEX gr_mp_subjects_ldx ON gr_mp_subjects(last_modified); +CREATE INDEX gr_mp_subjects_sdx ON gr_mp_subjects(subject_id); +COMMENT ON TABLE gr_mp_subjects IS 'This table holds subjects'; + +COMMENT ON COLUMN gr_mp_subjects.subject_id_index IS 'This is the integer identifier for a subject and foreign key to subject attributes and memberships'; +COMMENT ON COLUMN gr_mp_subjects.subject_id IS 'Subject ID mapped in some way'; +COMMENT ON COLUMN gr_mp_subjects.last_modified IS 'Millis since 1970, will be sequential and unique'; +COMMENT ON COLUMN gr_mp_subjects.deleted IS 'T or F. Deleted rows will be removed after they have had time to be processed'; + +CREATE TABLE gr_mp_group_attributes ( + group_id_index int8 NOT NULL, -- This is the integer identifier for a group and foreign key to groups and memberships + attribute_name varchar(1000) NOT NULL, -- Attribute name for attributes not in the main group table + attribute_value varchar(4000) NULL, -- Attribute value could be null + last_modified int8 NOT NULL, -- Millis since 1970, will be sequential and unique + deleted varchar(1) NOT NULL, -- T or F. Deleted rows will be removed after they have had time to be processed + CONSTRAINT gr_mp_group_attributes_fk FOREIGN KEY (group_id_index) REFERENCES gr_mp_groups(id_index) +); +CREATE UNIQUE INDEX gr_mp_group_attributes_idx ON gr_mp_group_attributes(group_id_index, attribute_name, attribute_value); +CREATE UNIQUE INDEX gr_mp_group_attributes_ldx ON gr_mp_group_attributes(last_modified); +COMMENT ON TABLE gr_mp_group_attributes IS 'This table holds group attributes which are one to one or one to many to the groups table'; + +COMMENT ON COLUMN gr_mp_group_attributes.group_id_index IS 'This is the integer identifier for a group and foreign key to groups and memberships'; +COMMENT ON COLUMN gr_mp_group_attributes.attribute_name IS 'Attribute name for attributes not in the main group table'; +COMMENT ON COLUMN gr_mp_group_attributes.attribute_value IS 'Attribute value could be null'; +COMMENT ON COLUMN gr_mp_group_attributes.last_modified IS 'Millis since 1970, will be sequential and unique'; +COMMENT ON COLUMN gr_mp_group_attributes.deleted IS 'T or F. Deleted rows will be removed after they have had time to be processed'; + +CREATE TABLE gr_mp_memberships ( + group_id_index int8 NOT NULL, -- This is the foreign key to groups + subject_id_index int8 NOT NULL, -- This is the foreign key to subjects + last_modified int8 NOT NULL, -- Millis since 1970, will be sequential and unique + deleted varchar(1) NOT NULL, -- T or F. Deleted rows will be removed after they have had time to be processed + CONSTRAINT gr_mp_memberships_gfk FOREIGN KEY (group_id_index) REFERENCES gr_mp_groups(id_index), + CONSTRAINT gr_mp_memberships_sfk FOREIGN KEY (subject_id_index) REFERENCES gr_mp_subjects(subject_id_index) +); +CREATE UNIQUE INDEX gr_mp_memberships_idx ON gr_mp_memberships(group_id_index, subject_id_index); +CREATE UNIQUE INDEX gr_mp_memberships_ldx ON gr_mp_memberships(last_modified); +COMMENT ON TABLE gr_mp_memberships IS 'This table holds memberships. The primary key is group_id_index and subject_id_index'; + +COMMENT ON COLUMN gr_mp_memberships.group_id_index IS 'This is the foreign key to groups'; +COMMENT ON COLUMN gr_mp_memberships.subject_id_index IS 'This is the foreign key to subjects'; +COMMENT ON COLUMN gr_mp_memberships.last_modified IS 'Millis since 1970, will be sequential and unique'; +COMMENT ON COLUMN gr_mp_memberships.deleted IS 'T or F. Deleted rows will be removed after they have had time to be processed'; + +CREATE TABLE gr_mp_subject_attributes ( + subject_id_index int8 NOT NULL, -- This is the integer identifier and foreign key to subjects + attribute_name varchar(1000) NOT NULL, -- Attribute name for attributes not in the main subject table + attribute_value varchar(4000) NULL, -- Attribute value could be null + last_modified int8 NOT NULL, -- Millis since 1970, will be sequential and unique + deleted varchar(1) NOT NULL, -- T or F. Deleted rows will be removed after they have had time to be processed + CONSTRAINT gr_mp_subject_attributes_fk FOREIGN KEY (subject_id_index) REFERENCES gr_mp_subjects(subject_id_index) +); +CREATE UNIQUE INDEX gr_mp_subject_attributes_idx ON gr_mp_subject_attributes(subject_id_index, attribute_name, attribute_value); +CREATE UNIQUE INDEX gr_mp_subject_attributes_ldx ON gr_mp_subject_attributes(last_modified); +COMMENT ON TABLE gr_mp_subject_attributes IS 'This table holds subject attributes which are one to one or one to many to the subjects table'; + +COMMENT ON COLUMN gr_mp_subject_attributes.subject_id_index IS 'This is the integer identifier and foreign key to subjects'; +COMMENT ON COLUMN gr_mp_subject_attributes.attribute_name IS 'Attribute name for attributes not in the main subject table'; +COMMENT ON COLUMN gr_mp_subject_attributes.attribute_value IS 'Attribute value could be null'; +COMMENT ON COLUMN gr_mp_subject_attributes.last_modified IS 'Millis since 1970, will be sequential and unique'; +COMMENT ON COLUMN gr_mp_subject_attributes.deleted IS 'T or F. Deleted rows will be removed after they have had time to be processed'; + diff --git a/Workbench/configs-and-secrets/grouper/application/grouper-loader.properties b/Workbench/configs-and-secrets/grouper/application/grouper-loader.properties index a3d5c61..7d66bbd 100755 --- a/Workbench/configs-and-secrets/grouper/application/grouper-loader.properties +++ b/Workbench/configs-and-secrets/grouper/application/grouper-loader.properties @@ -51,13 +51,11 @@ db.sis.pass = 49321420423 db.sis.url = jdbc:mysql://sources:3306/sis db.sis.driver = com.mysql.jdbc.Driver - # midpoint External System -#db.midPoint.driver = com.mysql.jdbc.Driver -db.midPoint.driver = com.mysql.cj.jdbc.Driver +db.midPoint.driver = org.postgresql.Driver #db.midPoint.pass = ${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') } db.midPoint.pass = password -db.midPoint.url = jdbc:mysql://grouper_data:3306/grouper_to_midpoint?CharSet=utf8&useUnicode=true&characterEncoding=utf8 +db.midPoint.url = jdbc:postgresql://comanage_midpoint_data:5432/grouper_to_midpoint?CharSet=utf8 db.midPoint.user = grouper # provisioner midpoint @@ -66,9 +64,14 @@ provisioner.midPoint.customizeEntityCrud = true provisioner.midPoint.customizeGroupCrud = true provisioner.midPoint.customizeMembershipCrud = true provisioner.midPoint.dbExternalSystemConfigId = midPoint -provisioner.midPoint.deleteEntities = false -provisioner.midPoint.deleteGroups = false -provisioner.midPoint.deleteMemberships = false +provisioner.midPoint.deleteEntities = true +provisioner.midPoint.deleteEntitiesIfNotExistInGrouper = false +provisioner.midPoint.deleteEntitiesIfGrouperDeleted = true +provisioner.midPoint.deleteGroups = true +provisioner.midPoint.deleteGroupsIfNotExistInGrouper = true +provisioner.midPoint.deleteMemberships = true +provisioner.midPoint.deleteMembershipsIfNotExistInGrouper = false +provisioner.midPoint.deleteMembershipsIfGrouperDeleted = true provisioner.midPoint.makeChangesToEntities = true provisioner.midPoint.midPointDeletedColumnName = deleted provisioner.midPoint.midPointLastModifiedColumnName = last_modified diff --git a/Workbench/grouper_data/Dockerfile b/Workbench/grouper_data/Dockerfile index 07cc0bd..56990ae 100644 --- a/Workbench/grouper_data/Dockerfile +++ b/Workbench/grouper_data/Dockerfile @@ -10,8 +10,7 @@ RUN yum install -y epel-release \ COPY container_files/conf/ /opt/grouper/grouperWebapp/WEB-INF/classes/ COPY container_files/bootstrap/ /tmp/ -COPY container_files/mysql/createDBforMP.sql / -COPY container_files/mysql/setupDBforMP.sql / +COPY container_files/mysql/createSQLuser.sql / RUN ln -s /usr/bin/resolveip /usr/libexec/resolveip @@ -27,15 +26,15 @@ RUN mysql_install_db \ && 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 \ - && echo "mysql < /createDBforMP.sql" >> /tmp/config \ - && echo "mysql -u grouper -p'password' grouper_to_midpoint < /setupDBforMP.sql" >> /tmp/config \ + && echo "mysql < /createSQLuser.sql" >> /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; \ /opt/grouper/grouperWebapp/WEB-INF/bin/gsh.sh -registry -check -runscript -noprompt && \ - /opt/grouper/grouperWebapp/WEB-INF/bin/gsh.sh /tmp/initialize.gsh + /opt/grouper/grouperWebapp/WEB-INF/bin/gsh.sh /tmp/initialize.gsh && \ + /opt/grouper/grouperWebapp/WEB-INF/bin/gsh.sh /tmp/set-prov.gsh EXPOSE 3306 diff --git a/Workbench/grouper_data/container_files/bootstrap/initialize.gsh b/Workbench/grouper_data/container_files/bootstrap/initialize.gsh index 2ea77f7..2412b28 100644 --- a/Workbench/grouper_data/container_files/bootstrap/initialize.gsh +++ b/Workbench/grouper_data/container_files/bootstrap/initialize.gsh @@ -9,8 +9,16 @@ addStem("", "org", "org") addStem("", "test", "test") addRootStem("ref", "ref") -addStem("ref", "course", "course") -addStem("ref", "affiliation", "affiliation") +addStem("ref", "course", "Course") +addStem("ref", "dept", "Department") +addStem("ref", "affiliation", "Affiliation") + +new GroupSave().assignName("ref:affiliation:alum").assignDisplayName("Alumni").assignCreateParentStemsIfNotExist(true).save(); +new GroupSave().assignName("ref:affiliation:community").assignDisplayName("Community").assignCreateParentStemsIfNotExist(true).save(); +new GroupSave().assignName("ref:affiliation:faculty").assignDisplayName("Faculty").assignCreateParentStemsIfNotExist(true).save(); +new GroupSave().assignName("ref:affiliation:member").assignDisplayName("Member").assignCreateParentStemsIfNotExist(true).save(); +new GroupSave().assignName("ref:affiliation:staff").assignDisplayName("Staff").assignCreateParentStemsIfNotExist(true).save(); +new GroupSave().assignName("ref:affiliation:student").assignDisplayName("Student").assignCreateParentStemsIfNotExist(true).save(); group = GroupFinder.findByName(gs, "etc:sysadmingroup", true) group.getAttributeDelegate().assignAttribute(LoaderLdapUtils.grouperLoaderLdapAttributeDefName()).getAttributeAssign() diff --git a/Workbench/grouper_data/container_files/bootstrap/set-prov.gsh b/Workbench/grouper_data/container_files/bootstrap/set-prov.gsh new file mode 100644 index 0000000..2cc4bbc --- /dev/null +++ b/Workbench/grouper_data/container_files/bootstrap/set-prov.gsh @@ -0,0 +1,37 @@ + +provisioner_name="midPoint"; +GrouperSession grouperSession = GrouperSession.startRootSession(); + +def setProvOnStem(grouperSession,provisioner_name,folder_name) { + AttributeAssign attributeAssignMarker = null; + attributeAssignMarker = new AttributeAssignSave(grouperSession).assignOwnerStemName(folder_name).assignNameOfAttributeDefName("etc:provisioning:provisioningMarker").save(); + new AttributeAssignSave(grouperSession).assignOwnerAttributeAssign(attributeAssignMarker).assignNameOfAttributeDefName("etc:provisioning:provisioningDirectAssign").addValue("true").save(); + new AttributeAssignSave(grouperSession).assignOwnerAttributeAssign(attributeAssignMarker).assignNameOfAttributeDefName("etc:provisioning:provisioningDoProvision").addValue(provisioner_name).save(); + new AttributeAssignSave(grouperSession).assignOwnerAttributeAssign(attributeAssignMarker).assignNameOfAttributeDefName("etc:provisioning:provisioningStemScope").addValue("sub").save(); + new AttributeAssignSave(grouperSession).assignOwnerAttributeAssign(attributeAssignMarker).assignNameOfAttributeDefName("etc:provisioning:provisioningTarget").addValue(provisioner_name).save(); + new AttributeAssignSave(grouperSession).assignOwnerAttributeAssign(attributeAssignMarker).assignNameOfAttributeDefName("etc:provisioning:provisioningMetadataJson").addValue("{\"destination\":\"midpoint\",\"actor\":\"initial load\"}").save(); + +} + +def setProvOnGroup(grouperSession,provisioner_name,group_name) { + AttributeAssign attributeAssignMarker = null; + attributeAssignMarker = new AttributeAssignSave(grouperSession).assignOwnerGroupName(group_name).assignNameOfAttributeDefName("etc:provisioning:provisioningMarker").save(); + new AttributeAssignSave(grouperSession).assignOwnerAttributeAssign(attributeAssignMarker).assignNameOfAttributeDefName("etc:provisioning:provisioningDirectAssign").addValue("true").save(); + new AttributeAssignSave(grouperSession).assignOwnerAttributeAssign(attributeAssignMarker).assignNameOfAttributeDefName("etc:provisioning:provisioningDoProvision").addValue(provisioner_name).save(); + new AttributeAssignSave(grouperSession).assignOwnerAttributeAssign(attributeAssignMarker).assignNameOfAttributeDefName("etc:provisioning:provisioningStemScope").addValue("sub").save(); + new AttributeAssignSave(grouperSession).assignOwnerAttributeAssign(attributeAssignMarker).assignNameOfAttributeDefName("etc:provisioning:provisioningTarget").addValue(provisioner_name).save(); + new AttributeAssignSave(grouperSession).assignOwnerAttributeAssign(attributeAssignMarker).assignNameOfAttributeDefName("etc:provisioning:provisioningMetadataJson").addValue("{\"destination\":\"midpoint\",\"actor\":\"initial load\"}").save(); + +} + +setProvOnStem(grouperSession,provisioner_name,"app") +setProvOnStem(grouperSession,provisioner_name,"test") +setProvOnStem(grouperSession,provisioner_name,"ref:dept") +setProvOnStem(grouperSession,provisioner_name,"ref:course") +setProvOnGroup(grouperSession,provisioner_name,"ref:affiliation:alum") +setProvOnGroup(grouperSession,provisioner_name,"ref:affiliation:community") +setProvOnGroup(grouperSession,provisioner_name,"ref:affiliation:faculty") +setProvOnGroup(grouperSession,provisioner_name,"ref:affiliation:member") +setProvOnGroup(grouperSession,provisioner_name,"ref:affiliation:staff") +setProvOnGroup(grouperSession,provisioner_name,"ref:affiliation:student") + diff --git a/Workbench/grouper_data/container_files/mysql/createDBforMP.sql b/Workbench/grouper_data/container_files/mysql/createSQLuser.sql similarity index 75% rename from Workbench/grouper_data/container_files/mysql/createDBforMP.sql rename to Workbench/grouper_data/container_files/mysql/createSQLuser.sql index 8cf329f..f89839f 100644 --- a/Workbench/grouper_data/container_files/mysql/createDBforMP.sql +++ b/Workbench/grouper_data/container_files/mysql/createSQLuser.sql @@ -1,7 +1,5 @@ -CREATE DATABASE grouper_to_midpoint CHARACTER SET utf8 COLLATE utf8_bin; CREATE USER 'grouper'@'%' IDENTIFIED BY 'password'; CREATE USER 'grouper'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'grouper'@'%'; GRANT ALL PRIVILEGES ON * . * TO 'grouper'@'localhost'; FLUSH PRIVILEGES; - diff --git a/Workbench/grouper_data/container_files/mysql/setupDBforMP.sql b/Workbench/grouper_data/container_files/mysql/setupDBforMP.sql deleted file mode 100644 index be1e73e..0000000 --- a/Workbench/grouper_data/container_files/mysql/setupDBforMP.sql +++ /dev/null @@ -1,60 +0,0 @@ -USE grouper_to_midpoint; -CREATE TABLE gr_mp_groups ( - group_name varchar(1024) DEFAULT NULL, - id_index bigint NOT NULL, - display_name varchar(1024) DEFAULT NULL, - description varchar(1024) DEFAULT NULL, - last_modified bigint NOT NULL, - deleted varchar(1) NOT NULL, - PRIMARY KEY (id_index), - UNIQUE KEY gr_mp_groups_ldx (last_modified), - UNIQUE KEY gr_mp_groups_idx (id_index), - KEY gr_mp_groups_ddx (display_name(255)), - KEY gr_mp_groups_gdx (group_name(255)) -); - -CREATE TABLE gr_mp_group_attributes ( - group_id_index bigint NOT NULL, - attribute_name varchar(1000) NOT NULL, - attribute_value varchar(4000) DEFAULT NULL, - last_modified bigint NOT NULL, - deleted varchar(1) NOT NULL, - UNIQUE KEY gr_mp_group_attributes_ldx (last_modified), - UNIQUE KEY gr_mp_group_attributes_idx (group_id_index,attribute_name(100),attribute_value(155)), - CONSTRAINT gr_mp_group_attributes_fk FOREIGN KEY (group_id_index) REFERENCES gr_mp_groups (id_index) -); - -CREATE TABLE gr_mp_subjects ( - subject_id_index bigint NOT NULL, - subject_id varchar(1024) DEFAULT NULL, - last_modified bigint NOT NULL, - deleted varchar(1) NOT NULL, - PRIMARY KEY (subject_id_index), - UNIQUE KEY gr_mp_subjects_ldx (last_modified), - UNIQUE KEY gr_mp_subjects_idx (subject_id_index), - KEY gr_mp_subjects_sdx (subject_id(255)) -); - -CREATE TABLE gr_mp_subject_attributes ( - subject_id_index bigint NOT NULL, - attribute_name varchar(1000) NOT NULL, - attribute_value varchar(4000) DEFAULT NULL, - last_modified bigint NOT NULL, - deleted varchar(1) NOT NULL, - UNIQUE KEY gr_mp_subject_attributes_ldx (last_modified), - UNIQUE KEY gr_mp_subject_attributes_idx (subject_id_index,attribute_name(100),attribute_value(155)), - CONSTRAINT gr_mp_subject_attributes_fk FOREIGN KEY (subject_id_index) REFERENCES gr_mp_subjects (subject_id_index) -); - -CREATE TABLE gr_mp_memberships ( - group_id_index bigint NOT NULL, - subject_id_index bigint NOT NULL, - last_modified bigint NOT NULL, - deleted varchar(1) NOT NULL, - UNIQUE KEY gr_mp_memberships_ldx (last_modified), - UNIQUE KEY gr_mp_memberships_idx (group_id_index,subject_id_index), - KEY gr_mp_memberships_sfk (subject_id_index), - CONSTRAINT gr_mp_memberships_gfk FOREIGN KEY (group_id_index) REFERENCES gr_mp_groups (id_index), - CONSTRAINT gr_mp_memberships_sfk FOREIGN KEY (subject_id_index) REFERENCES gr_mp_subjects (subject_id_index) -); - diff --git a/Workbench/idp_ui/Dockerfile b/Workbench/idp_ui/Dockerfile index 2fef2b7..5cf77c6 100644 --- a/Workbench/idp_ui/Dockerfile +++ b/Workbench/idp_ui/Dockerfile @@ -1,4 +1,4 @@ -FROM i2incommon/shib-idp-ui:1.17.4 +FROM i2incommon/shib-idp-ui:1.18.0 ARG CSPHOSTNAME=localhost ENV CSPHOSTNAME=$CSPHOSTNAME diff --git a/Workbench/idp_ui_api/Dockerfile b/Workbench/idp_ui_api/Dockerfile index fefbdec..2aaa200 100644 --- a/Workbench/idp_ui_api/Dockerfile +++ b/Workbench/idp_ui_api/Dockerfile @@ -1,4 +1,4 @@ -FROM i2incommon/shib-idp-ui:1.17.4 +FROM i2incommon/shib-idp-ui:1.18.0 ARG CSPHOSTNAME=localhost ENV CSPHOSTNAME=$CSPHOSTNAME diff --git a/Workbench/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-1.0-SNAPSHOT.jar b/Workbench/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..74e744b Binary files /dev/null and b/Workbench/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-1.0-SNAPSHOT.jar differ diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/objectTemplates/100-template-user.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/objectTemplates/100-template-user.xml index b81206b..fb5239a 100644 --- a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/objectTemplates/100-template-user.xml +++ b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/objectTemplates/100-template-user.xml @@ -126,86 +126,4 @@ - - - strong - - employeeNumber - - - - - - assignment - - - - - - - diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/resources/100-grouper-new.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/resources/100-grouper-new.xml new file mode 100644 index 0000000..12ff683 --- /dev/null +++ b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/resources/100-grouper-new.xml @@ -0,0 +1,339 @@ + + + + + Source: Groups + + + + + + + + c:connectorType + com.evolveum.polygon.connector.grouper.GrouperConnector + + + connectorVersion + 1.0-SNAPSHOT + + + + + + + comanage_midpoint_data + 5432 + grouper + password + grouper_to_midpoint + + + false + false + false + + true + + + + + account + default + Default Account + true + ri:CustomSubjectObjectClass + + + c:UserType + + + + ri:subject_id + + + $user/name + + + + + + + + ri:member_of + explicit + + + ri:group + + + + c:OrgType + + + name + + + + + + + + + assignment + + + entitlement + group + objectToSubject + ri:members + icfs:uid + ri:member_of + icfs:uid + false + + + + + + unique_index + + name + + + + + + + + unmatched + + + true + + + + + unlinked + + + true + + + + + linked + + + + + + + + + + entitlement + group + Group + true + ri:GroupObjectClass + + + c:OrgType + + + + icfs:uid + + + $focus/name + + + + + + ri:group_name + + strong + + extension/grouperName + + + + strong + + + + + assignment + + all + + + + + + ri:display_name + + + extension/grouperDisplayName + + + + + $focus/displayName + + + + + ri:description + + + $focus/description + + + + + + ri:members + explicit + + + + + + unique_index + + name + + + + + + + + unmatched + + + + true + + + + + unlinked + + + true + + + + + linked + + + + + + deleted + + + true + + + + + + + + + + + 2023-05-24T13:23:53.145+02:00 + d991389de17be20e-55b20a5934dbcc31 + + + + + false + + + + + connector + + + + + + + diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/resources/100-grouper.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/resources/100-grouper.xml deleted file mode 100644 index d57f3c0..0000000 --- a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/resources/100-grouper.xml +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - Source: Groups - Groups from Grouper - - - - connectorType - com.evolveum.polygon.connector.grouper.rest.GrouperConnector - - - - - - https://grouper-ws:443 - banderson - password1 - : - - : - app:.* - test:.* - ref:.* - .*_(includes|excludes|systemOfRecord|systemOfRecordAndIncludes) - ldap - true - - - false - true - false - - - - AMQP async update connector - - - - connectorType - AsyncUpdateConnector - - - - - - - amqp://mq:5672 - guest - password - sampleQueue - - - - - - - - - - entitlement - group - ri:Group - true - - ri:name - - strong - - extension/grouperName - - - - strong - - - - - assignment - - all - - - - - strong - - - RoleType - 30082d24-0bea-4f22-b558-d0ee2a399c38 - - - - assignment - - all - - - - - - - - strong - - - RoleType - 9e5a82fc-7969-4fd8-9f74-e0857969cdbb - - - - assignment - - all - - - - - - - - - ri:member - explicit - indexOnly - - - - - - true - entitlement - group - ri:Group - OrgType - - - extension/grouperName - - $projection/attributes/name - - - - - linked - http://midpoint.evolveum.com/xml/ns/public/provisioning/channels-3#asyncUpdate - - - - false - - - linked - true - - - deleted - - - true - - - unlinked - - http://midpoint.evolveum.com/xml/ns/public/model/action-3#link - - - - unmatched - - http://midpoint.evolveum.com/xml/ns/public/model/action-3#addFocus - - - - - - passive - - diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/roles/200-metarole-grouper-provided-group.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/roles/200-metarole-grouper-provided-group.xml index 03e0b57..a9351a4 100644 --- a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/roles/200-metarole-grouper-provided-group.xml +++ b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/roles/200-metarole-grouper-provided-group.xml @@ -90,97 +90,6 @@ - - name - This mapping fills-in org name (e.g. 'affiliation_member') from identifier (e.g. 'member'). - It uses extension/midPointNamePrefix information from the archetype (e.g. 'affiliation_' defined in affiliation archetype) - strong - - identifier - - - - - - name - - - - - displayName - This mapping fills-in org displayName (e.g. 'Affiliation: member') from identifier (e.g. 'member'). - It uses extension/midPointDisplayNamePrefix information from the archetype (e.g. 'Affiliation: ' defined in affiliation archetype) - strong - - identifier - - - - - - displayName - - - - lifecycle state - This mapping sets org lifecycle state to be either "active" or "retired", depending on - whether Grouper group for this org still exists. Orgs in the latter state are on the way to deletion: - their members are unassigned and after no members are there, the org is automatically deleted. - strong - - - - - lifecycleState - - + + + + + + + targetRef + + + + + + + + + + P3M diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/550-task-grouper-groups-livesync.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/550-task-grouper-groups-livesync.xml new file mode 100644 index 0000000..c916cf4 --- /dev/null +++ b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/550-task-grouper-groups-livesync.xml @@ -0,0 +1,31 @@ + + Groups: Group Livesync + Grouper live synchronization task for groups. It will poll changelog and pull in changes + 1494860533840-0-1 + + 1494860534232132-0-1 + running + Recomputation + true + + tight + + recurring + 5 + + + + + + + GroupObjectClass + + + + + + diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/550-task-grouper-users-livesync.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/550-task-grouper-users-livesync.xml new file mode 100644 index 0000000..007f6f1 --- /dev/null +++ b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/550-task-grouper-users-livesync.xml @@ -0,0 +1,31 @@ + + Groups: User Livesync + Grouper live synchronization task for users. It will poll changelog and pull in changes + 1494860534232132-0-1 + + waiting + otherTasks + Recomputation + true + + tight + + recurring + 5 + + + + + + + CustomSubjectObjectClass + + + + + + diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/610-task-reconcile-grouper-groups.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/610-task-reconcile-grouper-groups.xml new file mode 100644 index 0000000..e0d378e --- /dev/null +++ b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/610-task-reconcile-grouper-groups.xml @@ -0,0 +1,51 @@ + + Groups: Reconcile groups/entitlements + + + + + + + enabled + + + 0 + + + + + + + + 1689973935302-20962-1 + + + + runnable + ready + Reconciliation + success + + + + 33 + loose + + 900 + + + + + + + + + entitlement + group + ri:GroupObjectClass + + + + + + diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/630-task-reconcile-grouper-users.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/630-task-reconcile-grouper-users.xml new file mode 100644 index 0000000..9c0e32b --- /dev/null +++ b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/630-task-reconcile-grouper-users.xml @@ -0,0 +1,64 @@ + + Groups: Reconcile Users/accounts + + + 2023-07-21T21:12:58.938Z + + + + 2023-07-21T21:12:58.953Z + + + + http://midpoint.evolveum.com/xml/ns/public/common/channels-3#user + + + + + + enabled + + + 0 + + + + + + + + 1689973978954-20962-1 + + + + runnable + ready + Reconciliation + success + + + + 2023-07-21T22:20:16.993Z + 2023-07-21T22:20:33.812Z + 2023-07-21T21:15:14.922Z + 98 + loose + + 900 + + + + + + + + + account + default + ri:CustomSubjectObjectClass + + + + + + diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/995-task-group-scavenger.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/995-task-group-scavenger.xml deleted file mode 100644 index a4213aa..0000000 --- a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/995-task-group-scavenger.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - Groups: Group Scavenger - - - - execute-script - - script - - import com.evolveum.midpoint.xml.ns._public.common.common_3.* - - result = midpoint.currentResult - log.info('Processing dead group: {}', input) - query = prismContext.queryFor(UserType.class) - .item(UserType.F_ROLE_MEMBERSHIP_REF).ref(input.oid) - .build() - members = midpoint.repositoryService.searchObjects(UserType.class, query, null, result) - log.info('Found {} members: {}', members.size(), members) - - for (member in members) { - log.info('Going to recompute {}', member) - try { - midpoint.recompute(UserType.class, member.oid) - } catch (Throwable t) { - log.error('Couldn\'t recompute {}: {}', member, t.message, t) - } - } - log.info('Members recomputed; checking if the org is still in "retired" state') - orgAfter = midpoint.repositoryService.getObject(OrgType.class, input.oid, null, result) - currentState = orgAfter.asObjectable().lifecycleState - log.info('Current state = {}', currentState) - if (currentState == 'retired') { - log.info('Deleting the org: {}', orgAfter) - midpoint.deleteObject(OrgType.class, orgAfter.oid, null) - } else { - log.info('State has changed, not deleting the org: {}', orgAfter) - } - log.info('Dead group processing done: {}', input) - - - - - - OrgType - - - - lifecycleState - retired - - - - - - - - - runnable - BulkActions - recurring - - 60 - - diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/997-task-async-update-grouper.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/997-task-async-update-grouper.xml deleted file mode 100644 index fbd150f..0000000 --- a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/997-task-async-update-grouper.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - Groups: Live updates - - 1 - - - - - 1552664339630-0-2 - - - - runnable - AsynchronousUpdate - - - - single - loose - restart - diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/998-task-reconciliation-grouper-groups.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/998-task-reconciliation-grouper-groups.xml deleted file mode 100644 index 5180680..0000000 --- a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/998-task-reconciliation-grouper-groups.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - Groups: Full Reconciliation - - ri:Group - - - - - - - - 1494860531232132-0-2 - 1494860531232132-0-1 - waiting - otherTasks - Reconciliation - - - - single - loose - restart - diff --git a/Workbench/midpoint_server/container_files/mp-home/schema/internet2.xsd b/Workbench/midpoint_server/container_files/mp-home/schema/internet2.xsd index e09d7ae..9dac09f 100644 --- a/Workbench/midpoint_server/container_files/mp-home/schema/internet2.xsd +++ b/Workbench/midpoint_server/container_files/mp-home/schema/internet2.xsd @@ -65,6 +65,7 @@ + diff --git a/Workbench/webproxy/container_files/httpd/index.html b/Workbench/webproxy/container_files/httpd/index.html index 06ea312..1d8da5e 100644 --- a/Workbench/webproxy/container_files/httpd/index.html +++ b/Workbench/webproxy/container_files/httpd/index.html @@ -13,7 +13,7 @@

Welcome to the InCommon TAP Workbench!

  • midPoint (4.6)
  • COmanage Registry (4.1.0)
  • -
  • Shibboleth IdP UI (1.17.4)
  • +
  • Shibboleth IdP UI (1.18.0)