1. Auth-Architektur — Gesamtübersicht

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
Zuletzt geändert: den 05.03.2026 um 23:33