EinbettungWeb-SDK

Web-SDK

Zeigen Sie eine Certivant-Verifizierung mit einem einzigen Script-Tag in Ihrer eigenen Website an — als Modal oder inline, mit den Ereignissen ready, step, complete, cancel und error, strengen Origin-Prüfungen und Kameraunterstützung.

Das Certivant Web-SDK ist ein kleines, abhängigkeitsfreies Script, das eine Verifizierung innerhalb Ihrer Seite öffnet — als Modal oder inline in einem Container — und Ihrem Code mitteilt, wann der Antragsteller jeden Schritt erreicht und wann er fertig ist. Der Antragsteller verlässt Ihre Website nie, und über Ihre Seite gehen niemals personenbezogene Daten: Das SDK meldet einen Schrittnamen, einen Endstatus und eine öffentliche ID.

Es bettet dieselben gehosteten Seiten ein, die Sie bereits per Link versenden können:

Sie übergebenÖffnetSeite
tokendie gehostete Verifizierung/verify/<token>
formSlugein öffentliches Formular/forms/<slug>
liveIdTokendie Aufnahmeseite für Live ID/live-id/<token>
urleine der oben genannten Seiten als vollständiger Linkmuss auf einem vertrauenswürdigen Origin liegen

1. Ihre Website freigeben

Browser zeigen eine Seite nur dann in einem Frame an, wenn der Eigentümer der Seite zustimmt. Fügen Sie unter Einstellungen → KYC → Einbettung die Origins der Websites hinzu, die sie einbetten werden — einen pro Zeile:

https://app.example.com
https://*.example.org
http://localhost:3000
  • Ein Origin ist https://host mit optionalem :port, ohne Pfad.
  • Ein vorangestelltes *. erlaubt jede Subdomain (https://*.example.org), niemals die nackte Domain und niemals ein nacktes Suffix wie *.com.
  • Einfaches http ist nur für localhost, 127.0.0.1 und [::1] akzeptiert.
  • Bis zu 20 Origins. Jede andere Website zeigt „verweigert die Verbindung“.

Die Liste gilt nur für die Links Ihrer Organisation. Certivant liest sie anhand des Tokens oder des Formular-Slugs des Links, sodass eine Organisation niemals das Einbetten der Seiten einer anderen erlauben kann.

2. Die Verifizierung erstellen

Erstellen Sie die Verifizierung mit der REST-API und erhalten Sie ihr gehostetes Token (kvs_…) — siehe Sitzungen. Tun Sie dies auf Ihrem Server: Legen Sie niemals einen API-Schlüssel in den Browser.

3. Das Script einbinden und öffnen

<script src="https://app.certivant.com/embed/certivant.js"></script>
<button id="verify">Verify my identity</button>
<script>
  document.getElementById("verify").addEventListener("click", function () {
    var flow = Certivant.open({
      token: "kvs_…", // from your server
      onReady: function () { console.log("loaded"); },
      onStep: function (e) { console.log("step", e.step); },
      onComplete: function (e) { console.log("done", e.status, e.requestId); },
      onCancel: function () { console.log("closed"); },
      onError: function (e) { console.error(e.code, e.message); }
    });
  });
</script>

Der Origin des Scripts ist der Certivant-Origin, den es einrahmt. Verwenden Sie eine eigene Domain, laden Sie das Script von dort oder übergeben Sie origin: "https://id.yourbrand.com".

Inline

<div id="verification"></div>
<script>
  Certivant.open({
    mode: "inline",
    container: "#verification", // element or selector
    formSlug: "customer-onboarding",
    locale: "fr",
    minHeight: 640
  });
</script>

Der Frame wächst mit seinem Inhalt (Ereignisse resize) und schrumpft nie unter minHeight.

Optionen

OptionTypHinweise
token / formSlug / liveIdToken / urlstringEine davon ist erforderlich.
formKeystringZugriffsschlüssel für Formulare, die einen benötigen.
originstringCertivant-Origin, der eingerahmt wird. Standard: der Ort, von dem das Script geladen wurde.
trustedOriginsstring[]Zusätzliche Origins, auf die url zeigen darf.
mode"modal" oder "inline"Standard modal.
containerElement oder stringErforderlich für inline.
localestringSprache eines öffentlichen Formularlinks (fr, de…). Gehostete Verifizierungen folgen der Browsersprache des Antragstellers.
theme"light" oder "dark"Nur für den Modal-Frame.
title, closeLabelstringBarrierefreie Bezeichnungen (übersetzen Sie sie für Ihre Website).
closeOnBackdropbooleanSchließen, wenn der Hintergrund angeklickt wird. Standard false.
minHeightnumberMindesthöhe im Inline-Modus in px. Standard 600.
loadTimeoutMsnumberWartezeit, bevor not_ready gemeldet wird. Standard 20000.

Certivant.open() liefert ein Handle: close() (meldet cancel, sofern der Ablauf nicht bereits abgeschlossen ist), destroy() (still), on(event, fn), off(event, fn) sowie iframe und origin.

Ereignisse

EreignisCallbackNutzlast
readyonReadykeine — die Seite ist geladen und zeigt den Ablauf.
steponStep{ step, index?, total? } — z. B. intro, upload, review; Formulare melden page-1…
completeonComplete{ status, requestId? } — status ist approved, rejected, escalated, submitted oder pending-review.
cancelonCancelkeine — der Antragsteller hat das Modal geschlossen, bevor er fertig war.
erroronError{ code, message } — link_expired, link_cancelled, unavailable, invalid_options, untrusted_origin, not_ready.
resizeonResize{ height } — der Inline-Modus übernimmt dies für Sie.

complete bedeutet, dass der Antragsteller seinen Teil abgeschlossen hat. Eine gehostete Verifizierung meldet submitted: Die Entscheidung fällt danach. Verlassen Sie sich daher auf die Webhooks kyc.request.approved / kyc.request.rejected auf Ihrem Server, niemals auf ein Browserereignis. Die Aufnahmeseite für Live ID ist die Ausnahme — sie antwortet sofort mit approved (matched) oder rejected.

not_ready wird ausgelöst, wenn die Seite nach 20 Sekunden nicht ready gemeldet hat. Die übliche Ursache ist, dass der Origin Ihrer Website nicht unter Einbettung steht oder das Token bereits verwendet wurde.

Sicherheitsmodell

  • Wer eine Seite einrahmen darf. Der Proxy setzt auf Ihren gehosteten Links, Formularen und Live-ID-Seiten Content-Security-Policy: frame-ancestors 'self' <your origins> (und entfernt X-Frame-Options). Ein unbekanntes Token, ein Fehler oder eine leere Liste lassen sie nicht einrahmbar. Dashboard- und Anmeldeseiten sind nie einrahmbar.
  • Wem das SDK vertraut. Die URL des Frames wird nur aus dem eigenen Origin des SDK, aus origin oder aus trustedOrigins gebildet. Eine Nachricht wird nur akzeptiert, wenn sie vom Fenster genau dieses iframes stammt, vom exakten Origin, der eingerahmt wurde, und ein versioniertes Envelope { "source": "certivant", "version": 1, … } ist. Alles andere wird ignoriert.
  • Mit wem die Seite spricht. Die eingerahmte Seite sendet nur an den übergeordneten Origin, den das SDK angekündigt hat (?parentOrigin=), und nur wenn dieser Origin in Ihrer Erlaubnisliste steht (oder dem eigenen Origin der Seite entspricht) und, sofern der Browser ihn bereitstellt, mit location.ancestorOrigins übereinstimmt. Es wird nie mit dem Ziel * gesendet.
  • Keine personenbezogenen Daten. Ereignisse enthalten nie Namen, Dokumentdaten, Scores oder Bilder.

Kamera, Mikrofon und Standort

Das SDK setzt auf dem iframe allow="camera; microphone; geolocation; clipboard-write", wodurch diese Berechtigungen an die eingebettete Seite delegiert werden. Die eigene Permissions-Policy von Certivant erlaubt sie für ihre Seiten (camera=(self)…), sodass beide Seiten übereinstimmen. Ihre Website selbst muss über HTTPS (oder localhost) ausgeliefert werden und darf keinen Permissions-Policy-Header senden, der camera oder microphone blockiert.

Einfaches iframe

Ohne das SDK können Sie ein normales iframe verwenden — erlauben Sie zuerst Ihren Origin und fügen Sie das Attribut allow hinzu:

<iframe
  src="https://app.certivant.com/verify/kvs_…?embed=1&parentOrigin=https%3A%2F%2Fyour-site.example"
  allow="camera; microphone; geolocation; clipboard-write"
  style="width:100%;height:760px;border:0"
></iframe>

Ereignisse werden an das von Ihnen angekündigte parentOrigin gesendet, sofern es erlaubt ist. Hören Sie mit window.addEventListener("message", …) zu und prüfen Sie selbst event.origin, event.source und das Envelope.

Fehlerbehebung

SymptomAbhilfe
„verweigert die Verbindung“ / leerer FrameFügen Sie den Origin Ihrer Website unter Einstellungen → KYC → Einbettung hinzu (Schema und Port prüfen).
Fehler not_readyWie oben, oder das Token wurde bereits verbraucht oder ist abgelaufen.
Kamera startet nichtLiefern Sie Ihre Seite über HTTPS aus; prüfen Sie, dass auf Ihrer Website kein Permissions-Policy-Header camera blockiert; behalten Sie das Attribut allow bei.
Keine Ereignisse kommen anDie Seite sendet nur, wenn Ihr Origin erlaubt ist und ?embed=1&parentOrigin=… vorhanden ist — verwenden Sie das SDK oder fügen Sie die Parameter selbst hinzu.
Eigene DomainLaden Sie das Script von dort oder übergeben Sie origin.

Versionierung

Das Script meldet seine Version in Certivant.version und im Antwort-Header X-Certivant-SDK-Version. Das Nachrichten-Envelope trägt version: 1; Ergänzungen innerhalb von Version 1 sind abwärtskompatibel, und eine inkompatible Änderung erscheint als Version 2, wobei die vorherige Version weiterhin ausgeliefert wird. Der Loader wird für einige Minuten zwischengespeichert.

Für native Apps siehe Mobile WebView.