Files
Laufzettel/docs/issues/README.md
T
Florian WildeandClaude Opus 5 76a61ec771
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
feat(verzeichnis): Entra ID als Quelle ueber Microsoft Graph (#48)
Ein Haus ohne lokales Active Directory hat kein LDAP, auf das sich
zeigen liesse. Eine Verzeichnisquelle hat jetzt eine **Art** — LDAP oder
GRAPH —, und beide laufen durch **denselben** Abgleich: anlegen,
aktualisieren, deaktivieren, nie loeschen. Nur das Holen der Eintraege
unterscheidet sich; zwei Abgleiche nebeneinander wuerden
auseinanderdriften, und die Zusage „es wird nichts geloescht“ gaelte
dann fuer eine Art und fuer die andere nicht mehr ganz.

Gelesen wird mit dem Client-Credentials-Flow, seitenweise ueber
@odata.nextLink, der Vorgesetzte ueber $expand=manager($select=id). Das
Client-Secret wird verschluesselt gespeichert wie das Bind-Passwort und
erreicht keine Antwort und keinen Protokolleintrag.

Die Art ist **unveraenderlich**, und das steht nicht im Issue: an ihr
haengt, was `externeId` bedeutet. Im AD eine objectGUID, in Entra ID
eine andere GUID — nach einem Wechsel wuerde kein einziger Mitarbeiter
wiedererkannt, der naechste Abgleich legte die ganze Belegschaft neu an
und setzte die alten Zeilen auf aktiv = false, mit allen Laeufen und
Geraeten daran.

Der teuerste Fund beim Bauen: „in Entra ID deaktiviert“ als
*uebersprungen* zu melden haette die Leute **aktiv** gelassen.
Uebersprungen heisst im Abgleich „nicht zuordenbar“, und solche
Eintraege werden seit #016 absichtlich nicht abgeschaltet. Gefiltert
wird deshalb serverseitig mit `$filter=accountEnabled eq true`, als
Gegenstueck zum LDAP-Standardfilter. Gefunden hat es der Test — aber nur,
weil der Doppelgaenger den Filter wirklich auswertet statt ihn bloss zu
empfangen.

{{ou}} bleibt bei einer Graph-Quelle leer: Entra ID hat keine OU, und
etwas hineinzudeuten waere ein Wert, den kein PowerShell-Befehl brauchen
kann — er saehe nur richtig aus. Steht an der Abteilung eine Ziel-OU
gepflegt, greift die.

Gegen einen echten Entra-Mandanten ist das **nicht** gelaufen. Geprueft
ist es gegen einen HTTP-Doppelgaenger mit aufgezeichneten Antworten; die
Pruefliste fuer den ersten echten Lauf steht am Ende von
docs/betrieb/entra-id.md.

Closes #48

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-06 23:36:36 +02:00

4.3 KiB
Raw Blame History

Issues

Diese Dateien sind die Quelle; pnpm issues:sync spiegelt sie in den Gitea-Tracker. pnpm pruefe:doku erzwingt, dass Dateien und diese Übersicht übereinstimmen.

Nr. Titel Status Meilenstein Geschätzt Tatsächlich
#001 Phase 1: MVP in Arbeit v0.1.0 – –
#002 Phase 2: Verzeichnis-Alternativen, Bausteine, Anhänge in Arbeit v0.2.0 76 h –
#003 Phase 3: Protokoll, bedingte Schritte, Freigabe offen v0.3.0 – –
#004 Phase 4: Aktionen, Connectors, REST-API offen v0.4.0 – –
#005 M0 – Gerüst, Prozess, Design-Token erledigt v0.1.0 6 h 1 h 25 min
#006 M1 – Datenmodell erledigt v0.1.0 5 h 1 h 10 min
#007 M2 – Auth, Rollen, Benutzer erledigt v0.1.0 8 h 1 h 35 min
#008 M3 – Betriebsmodus und Kunden erledigt v0.1.0 6 h 1 h 20 min
#009 M4 – Vorlagen-Versionierung im Service erledigt v0.1.0 6 h 1 h 20 min
#010 M5 – Vorlagen-Editor erledigt v0.1.0 10 h 2 h 10 min
#011 M6 – Mitarbeiter, Abteilungen, Geräte erledigt v0.1.0 9 h 2 h 15 min
#012 M7 – Platzhalter, Namensregeln, Escaping erledigt v0.1.0 8 h 2 h 30 min
#013 M8 – Läufe: Service und Abarbeitung erledigt v0.1.0 14 h 3 h 05 min
#014 M9 – QR-Tags, Geräteseite, Etiketten, Scanner erledigt v0.1.0 12 h 3 h 35 min
#015 M10 – Dashboard und Archiv erledigt v0.1.0 8 h 2 h 20 min
#016 M11 – Verzeichnis und LDAP-Abgleich erledigt v0.1.0 12 h 3 h 25 min
#017 M12 – Seed der sieben Vorlagen erledigt v0.1.0 8 h 1 h 30 min
#018 M13 – E2E-Tests, Anleitung, PDF erledigt v0.1.0 14 h 2 h 15 min
#019 M14 – Betriebswege und Release v0.1.0 erledigt v0.1.0 10 h 5 h 25 min
#020 Vorgesetzter auch für von Hand angelegte Personen erledigt v0.2.0 3 h 1 h 20 min
#021 Stabiler Schlüssel für Seed-Vorlagen erledigt v0.2.0 2 h 55 min
#022 Schnellstart je Gerätetyp pflegen erledigt v0.2.0 3 h 1 h 10 min
#023 Protokoll ansehen erledigt v0.2.0 4 h 1 h 50 min
#024 Proxmox-Einzeiler auf einem echten PVE-Host gegenprüfen offen v0.2.0 2 h –
#025 Healthcheck gibt die rohe Datenbankfehlermeldung heraus erledigt v0.2.0 1 h 25 min
#026 Zwei Konventionen präzisieren, die strenger klingen als sie gemeint sind erledigt v0.2.0 1 h 20 min
#027 Die Editor-Abläufe lassen ihre Vorlagen stehen offen v0.2.0 1 h –
#028 M15 – Quellenarten und Microsoft-Graph-Quelle erledigt v0.2.0 10 h 4 h 10 min
#029 M16 – SCIM-Endpunkt als Alternative zum Abgleich offen v0.2.0 12 h –
#030 M17 – Wiederverwendbare Bausteine erledigt v0.2.0 12 h 2 h 25 min
#031 M18 – Abteilungsspezifische Zusatzabschnitte erledigt v0.2.0 8 h 1 h 35 min
#032 M19 – Anhänge und Fotos an Schritten erledigt v0.2.0 10 h 3 h 05 min
#033 M20 – Live-Aktualisierung per SSE statt Polling erledigt v0.2.0 6 h 1 h 40 min
#034 M21 – Benachrichtigungen per Mail und Webhook erledigt v0.2.0 10 h 3 h 30 min
#035 M22 – Mitarbeiter-Selbstauskunft erledigt v0.2.0 8 h 2 h 50 min
Summe 229 h 60 h 35 min