Funktionsvollständig · produktionsgehärtet · mehrsprachig (DE/EN/FR/ES)
Plattform-Handbuch

Rechtssicher signieren — mandantenfähig, in der eigenen Cloud.

miPDFsign Cloud nimmt PDF-Dokumente entgegen, baut daraus mehrstufige Signaturvorgänge und erzeugt PAdES-Signaturen (B/T/LT/LTA) über mehrere Verfahren — vom eigenen Zertifikat bis zur qualifizierten ID-Austria-Signatur. Diese Dokumentation erklärt jede Ansicht, jede Einstellung und den Betrieb.

Überblick

Die Plattform ist ein Software-as-a-Service für elektronische Signaturen: Jede Organisation ist ein eigener Mandant mit strikt getrennten Daten. Nutzer laden ein PDF hoch, legen einen Vorgang mit einem oder mehreren Beteiligten an, platzieren die sichtbaren Signaturfelder und versenden Einladungen. Unterzeichner öffnen einen sicheren Einmal-Link, zeichnen im Browser (auch am Handy, mit Finger oder Stift) und die Plattform erzeugt die PAdES-Signatur.

  • Fünf Signaturarten — vom serverseitigen Selbstsignieren bis zur qualifizierten QES.
  • Workflow — sequenziell oder parallel, mit Freigeber-Rollen (genehmigen/ablehnen).
  • Sichtbare Signaturen — beliebig platzierbar, mehrere Felder je Person, biometrische Erfassung (X/Y/Druck/Zeit).
  • Mandantenfähig — Organisationen, Rollen, eigene Signaturzertifikate und Identitätsanbindung je Org.
  • Nachvollziehbar — lückenloser Audit-Trail, Prüfbericht je signiertem Dokument.

Rollen & Zugang

Wer was sieht und darf, hängt an der Rolle. Externe Unterzeichner brauchen keinen Account.

Rolle

Mitglied

Legt Vorgänge an, verfolgt sie und verwaltet die eigenen Dokumente.

Rolle

Org-Admin

Zusätzlich: Benutzer, Signaturumgebungen, SSO/LDAP, Zeitstempel und Plugins der Organisation.

Rolle

Plattform-Admin

Betreiber-Sicht über alle Mandanten — Trials, Tarife, System-Health, Traces.

Ohne Konto

Externer Unterzeichner

Öffnet den Vorgang per Magic-Link (256-bit-Token, nur der Hash wird gespeichert) und signiert.

Die Oberfläche

Das Portal hat fünf Ansichten. Auf jeder Seite erklärt der ?-Button oben (neben der Sprachauswahl) die Abschnitte der aktuellen Ansicht kontextbezogen.

Dashboard

  • Vorgang anlegen — Titel, PDF hochladen, Ablauf (sequenziell/parallel), optionale Nachricht.
  • Teilnehmer — E-Mail, Signaturart/-umgebung, Rolle und optional die E-Mail-Sprache je Person; über 📍 die sichtbaren Felder im PDF platzieren.
  • Vorgangsliste — laufende Vorgänge mit Status, Klick öffnet die Detailseite.

Vorgangs-Details

  • Fortschritt — Statusbalken und wie viele Beteiligte schon signiert/freigegeben haben.
  • Dokumente — signiertes PDF ansehen, prüfen (🔎 erzeugt einen Prüfbericht), herunterladen oder per E-Mail senden.
  • Teilnehmer — wer signiert, in welcher Reihenfolge, mit Status.
  • Senden — erzeugt und verschickt die Magic-Links.
  • Audit-Trail — lückenloses Protokoll (standardmäßig eingeklappt).

Administration & Plattform-Konsole

Diese beiden Ansichten haben eigene Abschnitte — siehe Administration und Plattform-Konsole.

Unterzeichnen

Die Seite, die ein Empfänger per Einladungslink öffnet — siehe Unterzeichnen.

Signaturarten

Jeder Teilnehmer bekommt eine Signaturart zugewiesen. Verfügbar sind im Dropdown nur die vom Admin eingerichteten Signaturumgebungen. Alle Verfahren erzeugen PAdES über Syncfusion PDF + BouncyCastle (handgeschriebenes CMS).

VerfahrenWas es istNiveau
Selbstsigniert + ZeitstempelVollständig serverseitig (RSA) mit bestmöglichem RFC-3161-Zeitstempel. Sofort einsatzbereit.B / T
OrgCertificateSignieren mit dem eigenen hochgeladenen Zertifikat (PKCS#12/PFX + Passwort, RSA & ECDSA). Der private Schlüssel wird nur pro Signatur entschlüsselt und verlässt den Server nie.B–LTA
ID-Austria QESInteraktiv: der Unterzeichner macht den Handy-Signatur-Schritt in seinem eigenen Browser; der Server bettet die zurückgelieferte CMS ein.QES · LTA
A-Trust SealeIDAS-qualifiziertes Organisations-Siegel; die ECDSA-Schlüsseloperation läuft entfernt auf der A-Trust-HSM.QES · LTA
Swisscom AISStatisches Organisations-Siegel (REST/mTLS).QES
PAdES-Niveaus B Basissignatur · T mit vertrauenswürdigem Zeitstempel · LT mit eingebetteten Sperrinformationen (Langzeit) · LTA mit Archiv-Zeitstempel. Höhere Niveaus werden erreicht, wenn TSA und Sperrdaten verfügbar sind.

Vorgang anlegen

  1. PDF hochladen und dem Vorgang einen Titel geben.
  2. Ablauf wählenSequenziell (nacheinander, Reihenfolge erzwungen) oder Parallel (alle gleichzeitig).
  3. Teilnehmer hinzufügen — E-Mail, Signaturart/-umgebung und Rolle (Unterzeichner, Freigeber, Betrachter).
  4. Signaturfelder platzieren — über 📍 pro Person ein oder mehrere Felder im PDF setzen (Seite, Position, Größe). Ohne Platzierung wird unsichtbar signiert.
  5. Optional: Sprache & Nachricht — E-Mail-Sprache je Empfänger, freie Nachricht an alle.
  6. Senden — die Einladungen (Magic-Links) gehen raus; im Sequenzmodus zunächst nur an den Ersten.
Mehrere PositionenEine Person kann an mehreren Stellen unterschreiben — jedes platzierte Feld wird einzeln signiert und als eigene sichtbare Signatur gestempelt.

Unterzeichnen

Der Empfänger öffnet den Einladungslink — kein Konto nötig. Die Seite funktioniert am Desktop wie am Handy-Browser.

  • Dokument — das PDF durchscrollen; die eigenen Signaturfelder sind markiert.
  • Signieren — Feld antippen, mit Finger oder Stift zeichnen, „Fertig". Bei mehreren Feldern führt „Zur nächsten Signatur" zum nächsten offenen Feld.
  • Biometrie — bei den serverseitig erzeugten Signaturen werden X/Y/Druck/Zeit erfasst, verschlüsselt und als CMS-Attribut eingebettet.
  • Freigeben/Ablehnen — Freigeber genehmigen oder lehnen mit Begründung ab; Ablehnung beendet den Vorgang.
Nach AbschlussSind alle handelnden Beteiligten fertig, wird der Vorgang abgeschlossen und das fertig signierte PDF automatisch per E-Mail an alle plus den Ersteller verschickt (und an aktive Outbound-Plugins geliefert). Ist der Signatur-Validator konfiguriert, hängt an dieser E-Mail zusätzlich je signiertem PDF ein Prüfbericht (Abschlussprotokoll).

Administration

Die Einstellungen der eigenen Organisation. Alle Abschnitte sind ein-/ausklappbar; ungenutzte starten eingeklappt.

Benutzer

Benutzer anlegen, Rolle (Mitglied/Org-Admin) ändern, deaktivieren. Bei lokalen Konten lässt sich das Passwort zurücksetzen (🔑) — bei SSO/LDAP-Konten nicht, da diese am Identitätsanbieter authentifizieren.

Signaturumgebungen

Eine Signaturumgebung ist eine benannte, gespeicherte Konfiguration für genau eine Signaturart (Zertifikate und Zugangsdaten, verschlüsselt). Der zentrale Punkt: Eine Methode erscheint im Teilnehmer-Dropdown erst, wenn du dafür eine Umgebung angelegt hast. Du kannst mehrere anlegen — z.B. zwei Organisationszertifikate — und unterscheidest sie über den Namen.

MethodeWas du angibstWoher
Selbstsignatur + ZeitstempelNichts — sofort einsatzbereit. Optional eine eigene TSA-URL.
OrganisationszertifikatEine .p12/.pfx-Datei und ihr Passwort (RSA & ECDSA).Deine CA oder interne PKI. Der private Schlüssel verlässt den Server nie.
ID Austria (QES)Die Dienst-Zugangsdaten des ID-Austria-Signaturdiensts.A-Trust / dein ID-Austria-Vertrag.
A-Trust SealA-Trust-REST-Zugangsdaten und deine Claimed Identity (z.B. customer-name:key-static).Dein A-Trust-Siegel-Vertrag.
Swisscom AISDie mTLS-Client-Zugangsdaten und deine Claimed Identity.Dein Swisscom-AIS-Vertrag.

Single Sign-on mit OIDC — „Mitarbeiter mit dem Firmenkonto anmelden lassen“

Noch nie damit zu tun gehabt? SSO bedeutet, dass sich dein Team mit dem bereits vorhandenen Konto anmeldet — Microsoft 365, Google Workspace, Okta, Keycloak — statt mit einem eigenen miPDFsign-Passwort. Im Hintergrund spricht miPDFsign mit diesem System (dem Identitätsanbieter, kurz IdP) über das Standardprotokoll OpenID Connect. Einmal pro Organisation einrichten: miPDFsign als „Anwendung“ im IdP registrieren, ein paar Werte übernehmen und dem IdP eine Rücksprung-Adresse nennen.

1. Was du vom IdP (bzw. der IT-/Identity-Abteilung) brauchst:

Du brauchstWas es istBeispiel
Authority / Issuer-URLBasisadresse des IdP für deinen Mandanten; alles Weitere wird daraus ermittelt.https://login.microsoftonline.com/<tenant-id>/v2.0
Client-IDID der für miPDFsign registrierten Anwendung.a1b2c3d4-…
Client-SecretPasswort dieser Anwendung (meist nur einmal angezeigt).Xy8Q~…
Name des Groups-ClaimsWelches Token-Feld die Gruppen enthält. Standard groups.groups
Admin-GruppeGruppe, deren Mitglieder Org-Admins werden.miPDFsign-Admins

2. Der eine Wert, den du dem IdP gibst — die Redirect-URI (Callback / Reply-URL). Exakt angeben (echte Domain, https, kein Schrägstrich am Ende):

https://DEINE-DOMAIN/api/auth/oidc/callback

3. App registrieren (Beispiel: Microsoft Entra ID / Azure AD):

  1. Entra Admin Center → App-Registrierungen → Neue Registrierung.
  2. Redirect-URI: Plattform Web, Wert = obige Callback-URL.
  3. Anwendungs-(Client-)ID kopieren → deine Client-ID.
  4. Zertifikate & Geheimnisse → Neues Clientgeheimnis → den Wert sofort kopieren → dein Client-Secret.
  5. Tokenkonfiguration → Gruppenanspruch hinzufügen; Name/Objekt-ID der Admin-Gruppe notieren.
  6. Authority = https://login.microsoftonline.com/<tenant-id>/v2.0.

Okta, Google und Keycloak folgen demselben Muster.

4. In miPDFsign eintragen (Administration → Single Sign-on): Aktiviert einschalten; Authority, Client-ID, Client-Secret einfügen; Scopes = openid profile email belassen; Groups-Claim = groups belassen; Admin-Gruppe setzen; Speichern.

5. Wie sich dein Team anmeldet: Mit SSO anmelden für deine Organisation wählen. Der erste Login legt das Konto automatisch an (Just-in-time) — kein lokales Passwort. Die Rolle wird bei jedem Login aus dem Groups-Claim gesetzt.

Fehlersuche „redirect_uri mismatch“ → der Callback im IdP stimmt nicht exakt.  Admins kommen als normale Mitglieder an → Groups-Claim fehlt oder Admin-Gruppe passt nicht (Name vs. Objekt-ID).  Login bricht später → Client-Secret abgelaufen; neues erstellen.

LDAP / Active Directory — „Mitarbeiter mit dem Windows-/AD-Konto anmelden lassen“

Noch nie damit zu tun gehabt? Betreibt deine Organisation ein lokales Verzeichnis — Microsoft Active Directory oder einen anderen LDAP-Server — kann miPDFsign Benutzernamen und Passwörter direkt dagegen prüfen. Sinnvoll ohne Cloud-IdP. In einem Satz: miPDFsign verbindet sich mit einem schreibgeschützten Dienstkonto, sucht die Person anhand des eingegebenen Benutzernamens und meldet sich dann als diese Person mit ihrem Passwort an; klappt das, ist sie drin.

Was du von der IT-/Verzeichnis-Abteilung brauchst:

FeldWas es istActive DirectoryAnderes LDAP
HostHostname/IP des Verzeichnisservers.dc01.corp.example.comldap.example.com
Port389 für StartTLS, 636 für LDAPS.389 / 636389 / 636
VerschlüsselungLDAPS oder StartTLS — im Produktivbetrieb immer eine davon.LDAPS auf 636StartTLS auf 389
Basis-DNWo nach Nutzern gesucht wird.OU=Users,DC=corp,DC=example,DC=comou=people,dc=example,dc=com
Bind-DN (Dienstkonto)Ein schreibgeschütztes Konto zum Durchsuchen.CN=svc-mipdfsign,OU=Service,DC=corp,DC=example,DC=comcn=reader,dc=example,dc=com
Bind-PasswortPasswort dieses Kontos (verschlüsselt gespeichert).
Nutzer-FilterWie ein Nutzer gefunden wird; {0} = eingegebener Name.(sAMAccountName={0})(uid={0})
E-Mail-AttributFeld mit der E-Mail.mailmail
Anzeigename-AttributFeld mit dem vollen Namen.displayNamecn
Gruppen-AttributFeld mit den Gruppen.memberOfmemberOf
Admin-GruppeGruppe, deren Mitglieder Org-Admins werden.CN=miPDFsign-Admins,OU=Groups,DC=corp,DC=example,DC=comcn=admins,ou=groups,dc=example,dc=com
Standardwerte sind auf Active Directory abgestimmt (sAMAccountName={0}), mail, displayName, memberOf — für ein typisches AD füllst du nur Host, Port, Verschlüsselung, Basis-DN, das Dienstkonto und die Admin-Gruppe.

Konfigurieren (Administration → LDAP / Active Directory): Aktiviert; Host + Port; LDAPS oder StartTLS ankreuzen; Basis-DN; Bind-DN + Passwort; Nutzer-Filter belassen ((sAMAccountName={0}) für AD); Attribut-Standards belassen; Admin-Gruppe setzen; Speichern.

Vor dem Ausrollen testen: „Verzeichnis-Login testen“ mit Benutzername und Passwort eines echten Nutzers führt die komplette Suche-dann-Anmeldung aus und zeigt E-Mail, Name und ob der Nutzer Admin wäre — ohne ein Konto anzulegen. Konfiguration anpassen, bis der Test grün ist.

Wie sich dein Team anmeldet: Verzeichnis-Nutzer geben Benutzername, Passwort und die Organisation (deren Slug) ein — nötig, weil Benutzernamen über Mandanten nicht eindeutig sind. Der erste Login legt das Konto an (Just-in-time); die Rolle wird jedes Mal aus dem Gruppen-Attribut abgeleitet.

Fehlersuche Verbindung abgelehnt/Timeout → Host/Port oder Firewall.  Test meldet ungültige Zugangsdaten → Nutzer-Filter oder Basis-DN passt nicht (AD nutzt sAMAccountName, viele LDAP-Server uid).  Nutzer ist kein Admin → Gruppen-Attribut oder Admin-Gruppe stimmt nicht (in AD meist ein voller DN).  Passwörter im Klartext → LDAPS/StartTLS aktivieren.

Biometrie-Zertifikat

Erfasste biometrische Signaturdaten (X/Y/Druck/Zeit) werden hybrid mit einem öffentlichen Zertifikat verschlüsselt; nur wer den passenden privaten Schlüssel hat, kann sie später entschlüsseln — genau das ermöglicht die Analyse durch einen Schriftsachverständigen im Beweisverfahren. Du musst dafür nichts einrichten:

  • Standardmäßig automatisch erzeugt — legst du kein eigenes an, erstellt miPDFsign Cloud automatisch ein Schlüsselpaar (CN {Orgname}_miPDFsign_cloud_biometrics). Biometrie funktioniert ab dem ersten Tag.
  • Privaten Schlüssel herunterladen — beim erzeugten Zertifikat lädst du den privaten Schlüssel herunter und verwahrst ihn sicher offline; du brauchst ihn, um Biometriedaten später zu lesen. Optional vergibst du ein Passwort, das die Datei schützt (verschlüsseltes PKCS#8).
  • Eigenes verwenden — lade dein eigenes Zertifikat hoch. Das ersetzt das erzeugte und löscht den privaten Schlüssel vom Server — ab dann hast nur du ihn.
  • Neu erzeugen — ein frisches Schlüsselpaar anlegen; bereits mit dem alten Zertifikat verschlüsselte Daten brauchen dann den alten privaten Schlüssel.
Sicherheitshinweis Bei einem automatisch erzeugten Zertifikat liegt der private Schlüssel verschlüsselt auf dem Server, damit er herunterladbar bleibt — der Server kann in diesem Modus biometrische Daten also technisch entschlüsseln. Für die stärkste Garantie („der private Schlüssel berührt den Server nie“) lädst du dein eigenes Zertifikat hoch; miPDFsign Cloud hält dann nur den öffentlichen Schlüssel.

Branding (Enterprise)

Unter Administration → Branding hinterlegen Enterprise-Organisationen (und Testphasen, zum Ausprobieren) Anzeigename, Akzentfarbe und Logo (PNG/JPEG bis 512 KB): Externe Unterzeichner sehen sie auf der Signierseite, der Anzeigename erscheint zusätzlich in den E-Mails zum Vorgang. Standard-Tarife behalten gespeicherte Werte, gerendert oder editierbar sind sie dort nicht.

Zeitstempel · Plugins · Audit-Trail

  • Zeitstempel (TSA) — optionaler eigener RFC-3161-Dienst, den alle Signaturen nutzen.
  • Plugins — ausgehende Zustellung (z.B. Webhook), die bei Abschluss das signierte Dokument liefert.
  • Audit-Trail — org-weites Ereignisprotokoll.

Plattform-Konsole

Die mandantenübergreifende Betreiber-Konsole (/platform, nur für Plattform-Admins). Alles in einer Hand — kein separates Tooling nötig. Vier Registerkarten:

Tab

Organisationen

Alle Mandanten mit Trial-Status; Testphase verlängern, Tarif auf Vollbetrieb stellen, sperren/aktivieren.

Tab

System

Live-Health aller Dienste — Datenbank, Redis, Speicher, Mail, Tracing — mit Latenz und Gesamtstatus.

Tab

Audit

Org-übergreifendes Audit-Protokoll, filterbar nach Organisation und Aktion.

Tab

Traces

Aktuelle Anfragen aus dem Tracing (Operation, Dauer, Fehler) — direkt im UI eingebettet.

Anmeldung & API

Zwei Wege, nach der Anmeldeform automatisch erkannt:

  • JWT (Portal)POST /api/auth/login mit E-Mail/Benutzername + Passwort und optional dem Organisations-Slug (nötig für Verzeichnis-Login). Lokale Passwörter sind PBKDF2-HMAC-SHA256.
  • API-Key (Maschine) — der mpk_…-Schlüssel aus der Registrierung, gesendet als X-Api-Key oder Authorization: Bearer mpk_…. Schlüssel werden nur gehasht gespeichert.

Die vollständige OpenAPI-Referenz für Integratoren liegt unter /api/docs (JSON unter /api/openapi/v1.json) mit beiden Sicherheits-Schemata.

# Trial anlegen → liefert einen API-Key
curl -X POST https://DEINE-DOMAIN/api/trial/signup \
  -H "Content-Type: application/json" \
  -d '{"organizationName":"Acme","adminEmail":"a@acme.com","password":"…"}'

# Dokument hochladen (mit API-Key)
curl -X POST https://DEINE-DOMAIN/api/documents \
  -H "X-Api-Key: mpk_…" -F "file=@vertrag.pdf;type=application/pdf"

Sicherheit & Datenschutz

  • Mandantentrennung — jede Datenzeile trägt eine Org-ID; EF-Core-Query-Filter erzwingen die Isolation datenbankseitig (kein mandantenübergreifender Lesezugriff by design).
  • Magic-Links — 256-bit-CSPRNG-Token; gespeichert wird nur der SHA-256-Hash. Ein Link ist nicht aus dem Hash rekonstruierbar.
  • Secrets verschlüsselt — Zertifikatspasswörter, Client-Secrets und Biometriedaten liegen Data-Protection-verschlüsselt; der Schlüsselring liegt persistent in Redis (überlebt Neustarts).
  • Zwei-Faktor-Authentifizierung — jedes Passwort-Konto kann auf der 🔒 Sicherheit-Seite TOTP-2FA aktivieren (QR-Enrolment, 8 einmalige Wiederherstellungscodes). Der Login verlangt dann nach dem Passwort einen 6-stelligen Code; SSO/LDAP/Google-Konten bringen die MFA ihres Identity-Providers mit.
  • Rate-Limiting — Login und Trial-Registrierung sind pro IP begrenzt (429 mit Retry-After).
  • Härtung — nur der Reverse-Proxy ist von außen erreichbar; HSTS + Security-Header; E-Mail mit SPF/DKIM/DMARC (p=quarantine).
PDF-EngineSignaturen entstehen ausschließlich mit Syncfusion PDF + BouncyCastle (handgeschriebenes CMS). Die Lizenzkette ist permissiv, einzige kommerzielle Komponente ist die bezahlte Syncfusion-Lizenz.

Deployment

Drei Wege — vom lokalen Start bis zum Anbieter-Deployment. Zustand liegt extern in PostgreSQL / Redis / S3-kompatiblem Objektspeicher; die API- und Worker-Tiers sind zustandslos.

Lokal (Entwicklung)

docker compose up -d --build
# API :8090 · Web :3100 · MinIO :9001 · Mailpit :8025 · Jaeger :16686

Portabel (eigener Server / VPS)

Ein selbstständiger Stack, der die Images aus der Registry zieht und einen eigenen Caddy mit automatischem Let's-Encrypt-Zertifikat mitbringt — env-gesteuert über die Domain:

docker compose --env-file .env.production \
  -f docker-compose.deploy.yml pull
docker compose --env-file .env.production \
  -f docker-compose.deploy.yml up -d

Das Web-Image ruft dieselbe Origin auf, von der es ausgeliefert wird — ein Image passt für jede Domain, Staging und Prod unterscheiden sich nur in der Env-Datei.

Kubernetes

Ein Helm-Chart (deploy/helm/mipdfsign) mit Deployments für API/Worker/Web, Services, Ingress und HPA (horizontale Autoskalierung). PostgreSQL/Redis/S3 als externe Dienste.

Mail-ZustellbarkeitDer mitgelieferte Mailserver funktioniert, aber die Zustellbarkeit von einer frischen Server-IP ist immer heikel. Für Produktion empfiehlt sich ein Transaktions-Mail-Relay (via EMAIL_* konfigurierbar).
miPDFsign Cloud · .NET 10 · Next.js 15 · PostgreSQL · Redis · S3/MinIO · OpenTelemetry. Diese Dokumentation beschreibt den aktuellen Funktionsstand der Plattform.