Inhaltsverzeichnis
1. Auth-Architektur — Gesamtübersicht
Stand: 2026-03-05
Übergeordnet: WvdS-Plattform — Gesamtübersicht Verwandt: 2. WvdS.Shell | 3. Gateway.Service | 4. Datenschicht | 5. Migration
Ausgangssituation
Die WvdS-Plattform entstand aus einer Systemlandschaft, in der Authentifizierung und Benutzerverwaltung über mehrere isolierte Systeme verteilt war. AMED verwaltete seine Benutzer in eigenen Tabellen, LD/ENIVERS führte Personen und Rollen in tblPerson und tblRolle — beide Datenbanken, beide ohne Verbindung. Ein Benutzer, der das Unternehmen verließ, musste in mindestens zwei Systemen deaktiviert werden. Das konsequent zu tun war fehleranfällig. Ein neues System hinzuzufügen bedeutete: wieder eine eigene Benutzerverwaltung, wieder ein eigenes Passwort-Schema, wieder ein isolierter Audit-Pfad.
Der externe Zugriff war strukturell nicht vorgesehen. AMED und LD liefen als native Windows-Anwendungen mit impliziter Windows-Authentifizierung — wer keinen Domain-Account hatte, hatte keinen Zugang. Mobile Geräte, BYOD-Szenarien oder VPN-freie Heimarbeit erzeugten deshalb regelmäßig Sonderregelungen, die außerhalb des Systems lebten und nicht nachvollziehbar waren.
Die neue Auth-Architektur ersetzt dieses Flickwerk durch ein einziges zentrales Konzept: ENIVERSSIAM als alleinige Quelle für Identität, Rollen und Berechtigungen. Alle anderen Systeme — ENIVERSCAFM, ENIVERSPIMS, Gateway.Service — konsumieren diese Daten, ohne sie selbst zu verwalten. Ein neuer Benutzer wird einmal angelegt. Ein abgehender Benutzer wird einmal deaktiviert. Ein Audit-Trail existiert für jede Aktion über alle Schichten hinweg.
Gleichzeitig löst die PFX-basierte Schicht ein Problem, das reine Benutzerauthentifizierung nicht lösen kann: Wie weiß das System, dass die Installation selbst legitim ist? Das PFX-Zertifikat trägt Lizenz- und Deployment-Informationen als kryptografisch gesichertes Dokument — ausgestellt von einer internen CA, geprüft lokal, ohne Serververbindung. Erst wenn die Installation als vertrauenswürdig gilt, wird die Benutzerauthentifizierung überhaupt gestartet. Das Ergebnis ist ein zweistufiges Vertrauensmodell, das sowohl Lizenzkonformität als auch Benutzeridentität erzwingt — bevor irgendeine Extension lädt oder ein Business-Datum sichtbar wird.
Konzept
Die Auth-Architektur der WvdS-Plattform ist in drei Schichten aufgeteilt — GUI-Schicht (WvdS.Shell), Service-Schicht (Gateway.Service) und Datenschicht (ENIVERSSIAM) — sowie einem separaten Migrations-Track für Legacy-Systeme.
Zweischichtiges Auth-Modell
| Schicht | Träger | Zweck |
|---|---|---|
| 1. PFX-Zertifikat | WvdS.Shell (lokal) | Installations- und Lizenznachweis, offline-fähig |
| 2. Identity Provider | Gateway.Service | Benutzer-Authentifizierung: Kerberos (SSO) oder MFA-Flow (extern) |
Beide Schichten müssen erfolgreich abgeschlossen sein, bevor Extensions laden oder Business-Daten sichtbar sind.
Details zur Shell-seitigen Umsetzung: 2. WvdS.Shell Auth-Architektur
Auth-Modi
| Kontext | Verfahren | Bedingung | Warum genau so? |
|---|---|---|---|
| Corpnet / VPN | Kerberos (SSPI Negotiate) | Domain-joined, DC erreichbar | Kein Klick, kein Passwort-Dialog — Windows meldet den Benutzer automatisch an. Kein Credential-Material wird über das Netz übertragen. |
| Extern / BYOD | Username + Passwort + TOTP | DC nicht erreichbar, Gateway erreichbar | Sicherer Zugang auch ohne Firmennetz. Ein gestohlenes Passwort reicht nicht — der zeitgebundene TOTP-Code muss hinzukommen. |
| Offline | PFX als Credential | Gateway nicht erreichbar | Netzausfall oder Serverwartung blockiert den Betrieb nicht. Das Lizenzzertifikat ist kryptografisch signiert — es kann nicht gefälscht werden. |
Auth-Flow (Detail)
WvdS.Shell Gateway.Service DC / ENIVERSSIAM
│ │ │
│ 1. PFX prüfen (lokal) │ │
│ ↓ Schicht 1 OK │ │
│ │ │
│ 2a. SSPI Negotiate ──────►│── Kerberos-Ticket ──────►│
│ (Corpnet / VPN) │◄─ Identität bestätigt ───│
│◄─── JWT (access+refresh) ──│ │
│ │ │
│ 2b. username+pw ─────────►│── LDAP/DB-Check ────────►│
│ (Extern / BYOD) │◄─ OK ────────────────────│
│◄─── TOTP-Challenge ────────│ │
│──── TOTP-Code ────────────►│── HMAC-SHA1 intern │
│◄─── JWT (access+refresh) ──│ │
│ │ │
│ 3. GET /api/v1/features ─►│── ENIVERSASYS-DB │
│◄─── Feature-Flags JSON ────│ │
│ │ │
│ 4. Extension-Scan, UI │ │
Token-Lebensdauer
| Token | Lebensdauer | Speicherort (Client) | Begründung |
|---|---|---|---|
| Access Token | 15 Minuten | RAM (Shell SessionManager) | Ein gestohlenes Token ist nach maximal 15 Minuten wertlos — ohne Admin-Eingriff. RAM statt Datei: Kein Risiko durch Dateisystem-Analyse; Neustart löscht das Token automatisch. |
| Refresh Token | 30 Tage | DPAPI SecretStorage | Bequeme Wiederanmeldung ohne täglichen Login. DPAPI bindet das Speichergeheimnis an das Windows-Benutzerkonto — andere Benutzer desselben PCs kommen nicht an das Token. |
| TOTP Challenge | 5 Minuten | Gateway-RAM (nach Ablauf gelöscht) | Ein abgefangener 6-stelliger Code ist nach 5 Minuten wertlos. Kein Disk-Zustand: Ein Serverneustart bereinigt alle offenen Challenges automatisch. |
CWE-Referenzen (Auth-spezifisch)
| CWE | Beschreibung | Umsetzung | Risiko ohne Maßnahme |
|---|---|---|---|
| CWE-208 | Timing Side-Channel | ConstantTimeEqual für Basic/ApiKey-Auth | Angreifer misst Antwortzeiten und leitet daraus gültige Credentials ab. |
| CWE-256 | Plaintext-Passwort | Legacy-Passwörter nicht migriert; FillChar nach Validierung | Passwort steht lesbar im RAM — ein Heap-Dump genügt zur Kompromittierung. |
| CWE-287 | Improper Authentication | Kerberos-Ticket vollständig validiert (kein Presence-Check) | Ein manipuliertes Ticket wird akzeptiert, weil nur die Existenz, nicht der Inhalt geprüft wird. |
| CWE-290 | Token Spoofing | JWT-Signatur (ML-DSA-65) bei jedem Request geprüft | Gefälschte JWTs gewähren unberechtigten Zugriff, wenn die Signatur nicht geprüft wird. |
| CWE-316 | Heap Inspection | SecureZeroString / FillChar für Credentials im RAM | Passwort oder Token bleiben nach Verwendung im RAM und können ausgelesen werden. |
| CWE-384 | Session Fixation | jti (JWT ID) einmalig; Replay via jti-Blacklist | Ein abgefangenes Token kann unbegrenzt wiederverwendet werden. |
| CWE-532 | Log Information Exposure | Credentials und Tokens werden nie geloggt | Logdateien enthalten Passwörter oder Tokens — einsehbar für Admins und Angreifer. |
| CWE-613 | Insufficient Session Expiration | Refresh Token: 30 Tage, serverseitig revokierbar | Tokens ausgeschiedener Mitarbeiter bleiben aktiv; manuelle Sperrung unmöglich. |
| CWE-620 | Unverified Password Change | TOTP-Enrollment erfordert bestätigten ersten Code | TOTP-Geheimnis wird registriert, ohne zu prüfen, ob der Benutzer es tatsächlich besitzt. |
Dokumente dieser Sektion
| Nr | Dokument | Inhalt |
|---|---|---|
| 1 | Auth-Architektur — Gesamtübersicht | Diese Seite |
| 2 | WvdS.Shell — GUI-Schicht | PFX-Validator, Context-Detector, JWT-Manager, TOTP-Dialog |
| 3 | Gateway.Service — Service-Schicht | Auth-Endpoints, JWT (ML-DSA-65), TOTP-Service, Kerberos/SSPI |
| 4 | Datenschicht — DB-Schemas | ENIVERSSIAM Schema (auth.* + core.person), ENIVERSCAFM, PIMS |
| 4.1 | DB-Funktionen — Auth Controller | Stored Procedures, Functions, Views für Controller.Auth |
| 5 | Auth-Migration — Legacy-Systeme | Phasen 1–5, Mapping-Tabellen, SQL-Skripte |