Zum Hauptinhalt springen

Unterschriften-Verwaltung — E-Signatur (A-2)

Bezug: A-2, R4, R9, OP-SIGN-1 · Status: Provider-Abstraktion + Niveau-Matrix gebaut (Slice 4, 0.4.0); konkreter Anbieter (DocuSign/PandaDoc-HTTP-Adapter) bleibt offen (OP-SIGN-1 Rest).

Entscheidung (A-2)

Unterschriften werden über einen Standard-E-Signatur-Dienst (DocuSign oder PandaDoc) eingeholt — kein Eigenbau (G-1). Medidentas spricht den Provider über eine Provider-Abstraktion an, sodass der Anbieter austauschbar bleibt und ein zweiter Provider (Fallback / Niveau-spezifisch) ergänzt werden kann.

eIDAS-Niveau je Dokumenttyp (zentral!)

Elektronische Signaturen haben unterschiedliche Rechtswirkung — das Niveau muss zum Dokumenttyp passen (RISK-2):

NiveaueIDASWannBeispiel-Dokumenttyp
SESeinfache Signaturgeringe FormanforderungEinwilligung, Kenntnisnahme
AESfortgeschritten (Identität gebunden, Änderung erkennbar)erhöhte BeweiskraftStandard-Verträge, Vollmachten
QESqualifiziert (= eigenhändige Unterschrift, Zertifikat)Schriftform gesetzlich gefordertformgebundene Verträge

CH: Schweiz nutzt ZertES (nicht eIDAS); QES-Äquivalent ist die qualifizierte ZertES-Signatur. Niveau ist je Dokumenttyp begründet festzulegen (Compliance-Tracker §3).

Anbietervergleich (OP-SIGN-1 — Entscheidungsgrundlage)

KriteriumDocuSignPandaDoc
Marktreife / Verbreitungsehr hochhoch
eIDAS QES/AESja (über Partner/CSP)ja (über Partner)
EU-Datenresidenzverfügbar (Region wählen)verfügbar
Datenexport USUS-Konzern → Transfer prüfen (DPF/SCC)US-Konzern → Transfer prüfen
Dokument-Erstellung/Templatesstarksehr stark (CPQ/Proposals)
API / Webhooksreif, breitreif
Kostenhöhertendenziell günstiger

Empfehlung (vorläufig): Auswahl an den Pflicht-Niveaus und der Datenresidenz festmachen — wenn QES für formgebundene Verträge nötig ist, den Anbieter mit passender CSP-Anbindung und EU-Residenz wählen. Entscheidung in OP-SIGN-1 mit Begründung dokumentieren.

Provider-Abstraktion

Einheitliche Operationen der Abstraktion: envelopeErstellen(dokument, unterzeichner, niveau) · statusAbfragen(id) · webhookVerarbeiten(event) · signiertesDokumentAbrufen(id).

Sequenz: Unterschrift einholen

Nicht-funktional

  • Idempotenz/Reconciliation: Webhook verpasst? → periodischer Status-Abgleich (RISK-6).
  • Nachweis (G-4): Signatur-Zertifikat/Audit-Trail des Providers zusammen mit dem Dokument archivieren.

Umgesetzt (Slice 4, 0.4.0)

  • Provider-Abstraktion SignaturProvider (server/src/signatur/provider.ts): anfordern + status; FakeSignatur (signatur/fake.ts) für Tests/Staging. Provider-Wahl via SIGNATUR_PROVIDER (MVP: fake).
  • Niveau-Matrix (domain/signatur-niveau.ts, begründet, admin-editierbar gedacht): Vollmacht → QES, Vertrag/Auftrag → AES, Mandat/Einwilligung → SES, Default → AES.
  • Signatur-Dienst (api/signatur-service.ts): anfordern (Niveau aus Matrix) · idempotenter Status-Abgleich (RISK-6) · bei Abschluss Rückablage der signierten Fassung nach NextCloud (R9) + Dokument-Status unterschrieben (R3) + Onboarding-Item geprüft (R2) — „eine Wahrheit" (G-2).
  • D1-Tabelle signatur_vorgang (Migration v3), Felder R4-F01..08. REST: POST /api/dokumente/:id/signatur, GET /api/mandanten/:id/signaturen, POST /api/signaturen/:id/abgleich. Ohne Provider/NextCloud → 503.

Offene Punkte

  • OP-SIGN-1 (Rest): konkreter Anbieter (DocuSign vs. PandaDoc) + HTTP-Adapter (Envelope-Flow, Webhooks statt Pull-Abgleich) + Datenresidenz/AVV (US-Transfer) + QES-CSP-Anbindung. Abstraktion + Niveau-Matrix stehen; der Adapter ist die Verfeinerung.