Admidio Provisioning-Plugin — Konten und Gruppen anderer Systeme mit Admidio abgleichen

Provisioning

Legt Konten und Gruppen auf externen Systemen (SCIM 2.0, Nextcloud, Mailman 3) entsprechend den Mitgliedern und Rollen von Admidio an, aktualisiert und deaktiviert sie.

Plugin-ID
provisioning
Autor
Reinhold Kainhofer
Lizenz
GPL 2
Kategorie
Integrations
Unterstützte Datenbanken
MySQL, MariaDB, PostgreSQL
Unterstützte Sprachen
English, Deutsch (du), Deutsch (Sie)
Schlagwörter
SCIM Nextcloud Mailman SSO provisioning

Dieses Plugin legt Benutzerkonten und Gruppen auf externen Systemen an, aktualisiert, deaktiviert und löscht sie entsprechend den Mitgliedern und Rollen von Admidio. Änderungen in Admidio erreichen die angebundenen Systeme innerhalb von Sekunden. Das Plugin bringt drei Konnektoren mit:

  • SCIM 2.0, der Standard für die Benutzerprovisionierung;
  • Nextcloud über die OCS-Provisioning-API: Benutzer, ihre Profildaten, Aktivierungsstatus und Gruppen;
  • Mailman 3 über die REST-API: Rollen werden zu Mailinglisten, ihre Mitglieder werden mit ihrer E-Mail-Adresse angemeldet.

Weitere Konnektoren können von anderen Plugins ergänzt werden.

Es wurden noch keine Versionen veröffentlicht.

Gehe als Administrator zum Plugin-Manager von Admidio (Admidio 6.0 oder neuer und PHP 8.2 oder neuer erforderlich, PHP-Erweiterung curl nötig), wähle „Plugin hinzufügen“, lade die Plugin-ZIP-Datei hoch und aktiviere das Plugin. Die Datenbanktabellen des Plugins werden bei der Installation angelegt. Beim Entfernen des Plugins werden sie gelöscht, einschließlich der Zuordnung, welches Konto auf dem Zielsystem zu welchem Admidio-Benutzer gehört – trenne daher vorher die Ziele oder räume sie auf.

Cron

Änderungen in Admidio erreichen die Ziele am Ende der Anfrage, die sie ausgelöst hat. Beginn und Ende von Mitgliedschaften, die Admidio nur als ganze Tage kennt, werden mit dem täglichen Abgleich kurz nach Mitternacht wirksam. Lasse die Wartungsaufträge von Admidio stündlich laufen, eine Zeile je Organisation; das Plugin registriert dort seinen Auftrag provisioning:sync:

15 * * * *  php /pfad/zu/admidio/admidio maintenance:run --organization=KURZNAME --no-interaction --quiet

Der Befehl benötigt einen ausführenden Administrator der Organisation, zum Beispiel über $gCliDefaults in adm_my_files/cli-config.php. Ohne Cron startet der erste Seitenaufruf nach Mitternacht den Abgleich; beendete Mitgliedschaften bleiben dann auf dem Ziel aktiv, bis jemand Admidio öffnet.

Der Menüpunkt Provisionierung (unter Erweiterungen, für Administratoren sichtbar) listet die Ziele auf. Ein Ziel besteht aus

  • einer Verbindung (bei SCIM: Basis-URL, Bearer-Token, OAuth-2.0-Client-Zugangsdaten oder HTTP Basic);
  • seinen Benutzern: alle Mitglieder der Organisation, die Mitglieder ausgewählter Rollen oder – wenn das Ziel mit einem SSO-Client verknüpft ist – alle, die sich an diesem Client anmelden dürfen;
  • dem Kontonamen (SCIM userName) und den Attributen, die aus Profilfeldern übernommen werden;
  • Gruppen: auf dem Ziel konfiguriert (Mitglieder oder Leiter von Rollen), aus der Rollenzuordnung des verknüpften SSO-Clients übernommen und optional eine Gruppe für jede weitere Rolle;
  • einem Prüfplan, der das Zielsystem mit Admidio vergleicht.

Die Statusseite eines Ziels zeigt die Warteschlange, die letzten Läufe sowie jedes Konto und jede Gruppe, die Aufmerksamkeit braucht, und bietet Jetzt synchronisieren, Jetzt prüfen, Verbindung testen und Wiederholen.

Hinweise zu den Konnektoren

  • Nextcloud: Der Kontoname ist die Nextcloud-Benutzer-ID und kann nach dem Anlegen des Kontos nicht mehr geändert werden. Ein bestehender Benutzer mit dieser ID wird übernommen. Neue Benutzer erhalten kein Passwort; Nextcloud schickt ihnen einen Link zum Festlegen, sie brauchen daher eine E-Mail-Adresse. Verwende zur Anmeldung ein App-Passwort eines Administrators. Seit Nextcloud 35 müssen Änderungen an Benutzern, Gruppen und Mitgliedschaften mit einem Passwort bestätigt werden. Ein App-Passwort genügt dafür standardmäßig nicht mehr, kann aber von bestimmten IP-Adressen aus zugelassen werden: Trage die Adresse des Admidio-Servers in allowed_no_password_confirmation_ranges in der config.php von Nextcloud ein (hinter einem Reverse-Proxy muss auch der Proxy in trusted_proxies stehen):
'allowed_no_password_confirmation_ranges' => ['192.0.2.10/32'],
  • Mailman 3: Der Kontoname ist standardmäßig die E-Mail-Adresse, Benutzer ohne E-Mail-Adresse werden daher nicht angemeldet. Ein Gruppenname ist die Adresse der Liste oder ihr lokaler Teil zusammen mit der Mail-Domain des Ziels. Listen werden nur angelegt und gelöscht, wenn das Ziel es erlaubt; andernfalls verliert eine entfernte Gruppe nur die von Admidio angelegten Anmeldungen. Eine geänderte E-Mail-Adresse überträgt die Anmeldung.
  • SCIM: Für Dienste, die vom Standard abweichen, kann ein Ziel vollständige Ressourcen senden (PUT statt PATCH), ohne Gruppen arbeiten, Konten löschen statt deaktivieren und die OAuth-Client-Zugangsdaten im Anfragekörper oder als HTTP-Basic-Zugangsdaten senden.
  • Mitglieder einer Gruppe erhalten immer ein Konto. Benutzer ohne Wert für den Kontonamen werden nicht provisioniert.
  • Ein Benutzer, der nicht mehr zu einem Ziel gehört, wird aus dessen Gruppen entfernt und deaktiviert; nur ein in Admidio gelöschter Benutzer wird auch auf dem Ziel gelöscht.
  • Konten und Gruppen, die das Plugin nicht angelegt oder übernommen hat (zugeordnet über externalId), werden nie angefasst.
  • Admidio löscht nur, was es selbst angelegt hat. Ein Konto oder eine Gruppe, die auf dem Ziel schon existierte und übernommen wurde, wird nie gelöscht; es werden nur die von Admidio hinzugefügten Mitgliedschaften zurückgenommen. Mitglieder, die eine Gruppe vor der Übernahme hatte, werden nie entfernt.

Ein Ziel entfernen

  • Trennen entfernt das Ziel in Admidio. Seine Konten und Gruppen auf dem Zielsystem bleiben bestehen.
  • Deprovisionieren löscht die Gruppen und dann die Konten, die Admidio auf dem Zielsystem angelegt hat, und entfernt danach das Ziel. Die Löschungen laufen über die Warteschlange und überstehen daher Unterbrechungen; ein Eintrag, den das Ziel ablehnt, hält das Ziel in der Liste, bis er wiederholt oder das Ziel getrennt wird.

Administration → Einstellungen → Anmeldung & Sicherheit → Provisionierung

Einstellung Standard Bedeutung
Sekunden pro Seitenaufruf für die Synchronisierung 5 Nach einer Änderung werden die Ziele nach dem Ausliefern der Seite höchstens so viele Sekunden lang aktualisiert. 0 überlässt die Synchronisierung Cron.
Ziele in privaten Netzwerken erlauben aus Erlaubt Zielsysteme mit privaten oder reservierten IP-Adressen und unverschlüsseltes HTTP. Nur einschalten, wenn das Zielsystem im eigenen Netzwerk liegt.
Administratoren über Probleme benachrichtigen an Sendet den Administratoren der Organisation höchstens eine E-Mail je Ziel und Tag, wenn Konten oder Gruppen Aufmerksamkeit brauchen.
Befehl Zweck
provisioning:sync [–target=UUID] [–full] [–verify] [–budget=S] [–dry-run] Fälliges ausführen (für Cron)
provisioning:status Ziele, Warteschlangen und letzte Läufe; Exit-Code 3, wenn ein Ziel pausiert ist oder Einträge Aufmerksamkeit brauchen
provisioning:test –target=UUID Verbindung testen
provisioning:queue –target=UUID [–retry] [–clear –yes] Einträge, die Aufmerksamkeit brauchen; wiederholen oder löschen
provisioning:deprovision –target=UUID –yes Löscht, was Admidio auf dem Zielsystem angelegt hat, und danach das Ziel

Ein Konnektor erweitert AdmidioPlugin\Provisioning\Connector\Connector und wird über den Filter provisioning_connectors registriert. Ein vollständiges Beispiel und einen kleinen SCIM-Mock-Server zum Ausprobieren findest du im Quellcode.

  • de/plugins/provisioning.txt
  • Zuletzt geändert: 2026/11/04 00:59
  • von kainhofer