WorkTime ProHandbuch
Zur Anwendung

Lizenz

WorkTime Pro wird über einen zentralen Lizenzserver lizenziert, den der Hersteller betreibt. Die Anwendung beim Kunden prüft dort ihre Lizenz und bekommt ein signiertes Ergebnis zurück.

Die vollständige Anleitung samt Admin-Schnittstelle des Lizenzservers steht in docs/LICENSE-SERVER.md. Dieser Artikel beschreibt die Kundenseite.

Was in die .env gehört

LICENSE_KEY=WTPRO-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
LICENSE_SERVER_URL=https://license.example.com
LICENSE_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
INSTANCE_SALT=<zufälliger Wert je Installation>

Den öffentlichen Schlüssel liefert der Lizenzserver unter /api/public-key.

In einer Umgebungsvariablen steht ein PEM meist mit maskierten Zeilenumbrüchen (\n); die Anwendung setzt sie vor der Prüfung in echte Umbrüche zurück.

Die Stufen

StufeSchlüsselEnthaltene Module
BASICWTBAS-…Zeiterfassung, Mitarbeiter, Berichte
PROFESSIONALWTPRO-…zusätzlich ArbZG-Compliance, Rentabilität, Abteilungen, Standorte, Kostenstellen
ENTERPRISEWTENT-…zusätzlich Arbeitszeitmodelle, Schichten, API-Schlüssel, DSGVO-Modul, Prüfprotokoll

Endpunkte eines nicht lizenzierten Moduls antworten mit 503.

Was geprüft wird — und was gilt

Maßgeblich ist der signierte Token, nicht der Rumpf der Antwort: Die JSON-Felder daneben sind ungeprüft und ließen sich unterwegs beliebig setzen. Der Token bindet außerdem die Instanz.

Ohne hinterlegten LICENSE_PUBLIC_KEY ist keine Prüfung möglich. Im Produktivbetrieb ist das ein Fehler und die Anwendung startet nicht — sonst genügte eine abgefangene oder umgeleitete Antwort, um sich jede Stufe zuzuweisen. Außerhalb des Betriebs bleibt es bei einer Warnung, damit Testaufbauten weiterlaufen.

Hardwarebindung

Bei der ersten Prüfung wird die Lizenz an einen Fingerabdruck der Instanz gebunden — aus Maschinenkennung, MAC-Adresse und INSTANCE_SALT. Ein Kopieren des Schlüssels auf einen zweiten Server schlägt fehl.

Deshalb bindet docker-compose.yml die Maschinenkennung des Wirts schreibgeschützt in den Container ein; ohne sie änderte sich der Fingerabdruck bei jedem Neustart.

Beim legitimen Serverwechsel löst der Hersteller die Bindung über die Admin-Schnittstelle. Die nächste Prüfung bindet die Lizenz an den neuen Server.

Offline-Toleranz

Die Anwendung prüft beim Start und danach täglich um drei Uhr. Ist der Lizenzserver nicht erreichbar, läuft sie bis zu sieben Tage mit der zuletzt zwischengespeicherten Lizenz weiter.

Eine Sperre wirkt entsprechend spätestens nach sieben Tagen.

Ohne Lizenz

LageVerhalten
NODE_ENV ≠ production, kein SchlüsselEvaluierungsmodus, alle Module frei
Produktivbetrieb, kein Schlüsseldie API startet nicht
Lizenzserver nicht erreichbarsieben Tage Weiterbetrieb aus dem Zwischenspeicher
abgelaufen, gesperrt, fremde InstanzModul-Endpunkte antworten mit 503
Sitzobergrenze erreichtweitere Mitarbeiter anzulegen wird abgelehnt

Ein Platzhalter in LICENSE_KEY ist kein gangbarer Mittelweg: Die Prüfung schlägt dann fehl, und die API beendet sich beim Start mit „Lizenz ungültig oder abgelaufen“.

Den Stand ansehen

  • In der Oberfläche: Berichte & System → Lizenz.
  • Über die Schnittstelle: GET /api/v1/license/status, ohne Anmeldung abrufbar.