Operationele documentatie en automatiseringsscripts voor MidPoint Identity Management, gericht op HR-synchronisatie vanuit SQL Server (HR), configuratiebeheer en migratie tussen omgevingen (DEV → TEST → ACC → PROD).
- Windows-pc met minimaal 8 GB RAM
- Docker Desktop voor Windows — geïnstalleerd en gestart, met WSL-integratie ingeschakeld voor de gebruikte distro (
Settings > Resources > WSL Integration) - Git en GitHub CLI (
gh) — voor Windows of in je WSL-distro - Het bestand
hr-data.sql— apart aangeleverd (auteursrechtelijk beschermd, niet in deze repository)
Open PowerShell of een WSL-terminal en clone de repository. Via de GitHub CLI (aanbevolen):
gh auth login
gh repo clone Fortigi/MidPoint-training
cd MidPoint-trainingOf via HTTPS:
git clone https://github.com/Fortigi/MidPoint-training.git
cd MidPoint-trainingZet het aangeleverde bestand hr-data.sql in de map db-init\:
MidPoint-training\
└── db-init\
└── hr-data.sql ← hier neerzetten
Start alle services (SQL Server, Samba AD en phpLDAPadmin) in één keer:
docker compose up -d
docker compose logs -f sqlserverWacht totdat je HR data already present of HR data loaded ziet. SQL Server is dan klaar. Druk op Ctrl+C om de logweergave te stoppen.
De Samba AD-container heeft ~30 seconden nodig om het domein
demo.localte provisioneren bij de eerste start.
WSL vereist. Alle commando's vanaf hier draaien in een WSL-terminal. Schakel over naar WSL als je dat nog niet gedaan hebt en navigeer naar de gekloonde repository.
Download het Evolveum quickstart-script (zie ook de MidPoint Quick Start Guide):
curl -O https://raw.githubusercontent.com/Evolveum/midpoint-docker/master/midpoint-quickstart.sh
chmod +x midpoint-quickstart.shHeap-tuning vereist: Met de Evolveum-standaard van ½ GB crasht MidPoint bij het openen van een AD-resource met een schema van ~32 MB direct met OOM. Voeg de tuning handmatig toe na het downloaden:
sed -i '/- MP_NO_ENV_COMPAT=1$/a\ - MP_MEM_MAX=4096m\n - MP_MEM_INIT=2048m' midpoint-quickstart.sh
Start MidPoint:
./midpoint-quickstart.sh startHet initiële beheerderswachtwoord verschijnt in de output. Noteer het.
MidPoint is bereikbaar op: http://localhost:8080 — dit kan een paar minuten duren terwijl MidPoint opstart. Je ziet in Docker Desktop dat het CPU-gebruik van de container daalt naar onder de 100% zodra de initialisatie klaar is.
Log in met gebruiker administrator en het getoonde wachtwoord.
MidPoint heeft de MSSQL JDBC-driver nodig om verbinding te maken met SQL Server. Voeg hem toe ná de eerste start, zodat het quickstart-script de midpoint-home map al heeft aangemaakt:
mkdir -p midpoint-home/lib
curl -sLo midpoint-home/lib/mssql-jdbc-13.2.1.jre11.jar \
https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/13.2.1.jre11/mssql-jdbc-13.2.1.jre11.jarHerstart daarna MidPoint zodat de driver wordt geladen:
./midpoint-quickstart.sh stop
./midpoint-quickstart.sh startImporteer de basisconfiguratie via het pipeline-script. Maak het script eerst uitvoerbaar:
chmod +x Scripts/run-midpoint-pipeline.shStart daarna het script vanuit de root van de repository:
./Scripts/run-midpoint-pipeline.shMaak de volgende keuzes:
Keuze [1-8]: 2 ← Bestaande changeset deployen
Keuze [0-1]: 1 ← dev (localhost)
Selecteer changeset [0-N]: <nummer> ← kies de regel met TYPE=FULL en
NAAM=Context-assignments-fix-duplicate-filters
Let op: er staan zowel een FULL als een DELTA versie in de lijst. Kies altijd de FULL voor een eerste installatie — de DELTA veronderstelt een bestaande basisconfiguratie.
Bevestig de import wanneer het script daarom vraagt.
Na het importeren van de changeset zijn de wachtwoorden van de resource-connectors verwijderd. Herstel ze voor elke resource:
- Ga naar Resources > All resources
- Klik op een resource om hem te openen
- Ga naar het tabblad Connector configuration
- Klik op Show empty fields
- Vul bij User password het wachtwoord in als clear value (zie Stap 8 — Verbindingsgegevens voor de juiste waarden)
- Klik op Save
- Ga terug naar de resource
- Klik op Test connection en controleer of de verbinding succesvol is
Herhaal dit voor alle 3 resources.
Let op: onderstaande wachtwoorden zijn uitsluitend bedoeld voor de lokale trainingsomgeving (Docker op je eigen laptop). Gebruik deze nooit in een productie- of gedeelde omgeving.
Gebruik deze gegevens bij het configureren van de SQL Server-connector in MidPoint (Guide 01):
| Instelling | Waarde |
|---|---|
| Host | host.docker.internal |
| Poort | 1433 |
| Gebruiker | sa |
| Wachtwoord | MidpointLab!2024 |
host.docker.internalis de hostname waarmee een Docker-container de host-machine bereikt. SQL Server draait op je laptop op poort 1433, MidPoint bereikt hem zo vanuit zijn eigen container.
| Instelling | Waarde |
|---|---|
| Domein | demo.local |
| Host (vanuit MidPoint) | host.docker.internal |
| LDAP-poort | 389 |
| LDAPS-poort | 636 |
| Bind DN | cn=Administrator,cn=Users,dc=demo,dc=local |
| Wachtwoord | Admin1234! |
Bekijk en bewerk de AD-directory via phpLDAPadmin: http://localhost:8089
Log in met cn=admin,dc=demo,dc=local en wachtwoord Admin1234!.
Midpoint/
├── Midpoint-quickstart-guides/ # Jupyter Notebooks met stap-voor-stap handleidingen
├── Scripts/ # Automatiseringsscripts voor configuratiepipeline
│ └── README.md # Volledige documentatie van de scripts
├── README.md # Dit bestand
└── CLAUDE.md # Werkafspraken rond branching en gebruik
Interactieve Jupyter Notebooks in Midpoint-quickstart-guides/, te volgen op de MidPoint-host via SSH-tunnel naar Jupyter Lab (zie Guide 2 voor setup).
| # | Titel | Inhoud |
|---|---|---|
| 0 | Removing local changes from local GIT | Lokale Git-wijzigingen opruimen |
| 1 | Midpoint SQL Server Connector Setup | MSSQL JDBC-driver en connector configureren |
| 2 | Jupyter Prerequisites en Use | Jupyter Lab installeren en benaderen via SSH-tunnel |
| 3 | HR sync met HR demo – Identities | Setup HR-gebruikerssynchronisatie vanuit SQL Server |
| 4 | Ninja Runbook Changeset HR-sync – Identities | Configuratiemigratie DEV → TEST via MidPoint Ninja |
| 5 | Demo omgeving reset en start | Demo-omgeving resetten, starten en auto-restart |
| 6 | HR sync met HR demo – Organization | Organisatiehiërarchie synchroniseren vanuit HR-database |
| 7 | Midpoint Config Export Documentation | Configuratie exporteren per objecttype met validatie |
| 8 | Midpoint Config Import Documentation | Configuratie importeren met connector-remapping en secrets-beheer |
| 9 | MidPoint Pipeline Management | Volledige pipeline: exporteren, deployen, promoten, opruimen, vergelijken, omgeving leegmaken |
| 10 | HR sync met HR demo – Context assignments compact | Context-assignments synchronisatie (compacte variant) |
| 11 | HR sync met HR demo – Context managers | Manager-relaties synchroniseren vanuit gbg.ContextOwner via multiaccounts (tag per rij), relation=org:manager op gebruikers (v2, 12 stappen) |
| 12 | MidPoint AD target configuratie met Samba AD | Samba AD als doelsysteem inrichten via LDAP (poort 389), inclusief fixes voor strongAuthRequired en smb.conf-persistentie |
De Scripts/ map bevat een volledige automatiseringspipeline voor configuratiebeheer. Zie Scripts/README.md voor volledige documentatie, inclusief vereisten, configuratie en gebruik.
Korte samenvatting:
| Script | Doel |
|---|---|
midpoint-pipeline-config.json |
Centrale configuratie (omgevingen, hosts, containers) |
run-midpoint-pipeline.sh |
Interactief hoofdmenu: exporteren, deployen, promoten, opruimen, vergelijken, leegmaken |
export-midpoint-config.sh |
Configuratie exporteren uit een container; maskeert alle <protectedString> / <encryptedData> / <clearValue> elementen in alle objecttypen (dekt o.a. password, bindPassword, clientSecret, SMTP-wachtwoorden) |
transfer-midpoint-export.sh |
Export overdragen naar een volgende omgeving |
import-midpoint-config.sh |
Configuratie importeren met connector-OID remapping; verwijdert het hele wrapper-element van elk secret (voorkomt dat MidPoint een leeg ProtectedStringType opvult met een leeg <clearValue/>) |
deploy-midpoint-scripts.sh |
Scripts eenmalig uitrollen naar alle omgevingen |
compute-delta.py |
Delta berekenen tussen twee full exports |
compare-changeset-env.py |
Vergelijk changeset met live MidPoint-omgeving via REST API; filtert cosmetische attribuut-verschillen automatisch |
- MidPoint versie: 4.9.4
- Deployment: Docker (containers)
- HR-databron: SQL Server 2019+, database
HR2, tabelgbg.Identities - AD demo-omgeving: Samba 4 (
demo.local), LDAP op poort 389 / LDAPS op poort 636 - LDAP-browser: phpLDAPadmin op http://localhost:8089
- JDBC driver:
mssql-jdbc-13.2.1.jre11.jar→ in de container op/opt/midpoint/var/lib/(wordt automatisch veiliggesteld en hersteld bij omgeving leegmaken)
Zie CLAUDE.md voor de afspraken rondom branching, PR-beheer en de scope van geautomatiseerde acties.