OpenNIT-Vault-Extension/README.md
Claude 07a5785580 Sechs Review-Punkte: Speicherort, Domain-Pruefung, Rechte, Generator, Notizen, Bearbeiten
1. Passwort mehrstufiger Logins nicht mehr auf der Platte: Der Auftrag lag
   als __pendingFill in chrome.storage.local, also im Klartext auf der
   Festplatte. Die 30-Sekunden-Pruefung verhinderte nur die Verwendung,
   nicht die Speicherung - wurde der zweite Schritt nie erreicht, blieb
   das Passwort liegen. Er liegt jetzt ausschliesslich im Speicher des
   Service Workers, je Tab, und wird beim Abholen verbraucht, nach 30 s
   verworfen, beim Sperren geleert und beim Schliessen des Tabs entfernt.
   Reste frueherer Versionen raeumt onInstalled ab.

2. Domain-Warnung: fillDomainMatches akzeptierte mit
   eh.endsWith('.' + pageHost) auch die Gegenrichtung - ein Eintrag fuer
   vpn.firma.de galt auf firma.de als passend und die Warnung blieb aus.
   Diese Klausel entfaellt.

3. scripting und activeTab werden nicht mehr angefordert; beide waren
   unbenutzt (das Content-Script laeuft ueber content_scripts, der
   Tab-Zugriff ueber host_permissions). PERMISSIONS.md begruendete
   scripting mit dem nativen Value-Setter, was nichts damit zu tun hat.

4. Passwort-Generator: buf lieferte dieselben Werte fuer Zeichenwahl und
   Mischreihenfolge, wodurch die Permutation mit dem Inhalt korrelierte.
   Beides zieht jetzt getrennt ueber randomBelow(), das den obersten,
   unvollstaendigen Block verwirft (gleichverteilt statt Rest-Modulo).
   Laenge (12-48) und Sonderzeichen sind waehlbar.

5. Notizen laufen ueber copySecret und werden damit ebenfalls aus der
   Zwischenablage entfernt; sie enthalten in der Praxis oft
   Wiederherstellungscodes. copyToClipboard entfaellt.

6. urlmatch.js buendelt die drei abweichenden matchUrl-Fassungen zu einer
   Regel, geladen in Service Worker, Popup und Seiten. escAttr escapt jetzt
   auch & < > und Apostroph, traegt also in jedem Attributkontext.
   Eintraege lassen sich im Popup bearbeiten und loeschen; beim Bearbeiten
   bedeutet ein leeres Passwortfeld unveraendert, sodass das Passwort das
   Popup nicht verlaesst.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G12DRMpe4UjYDwuRU1sjy1
2026-07-31 15:55:37 +02:00

5.3 KiB
Raw Permalink Blame History

OpenNIT Vault

OpenNIT Vault Browser-Erweiterung

Passwort-Manager-Erweiterung für OpenNIT Autofill für Benutzer-, Passwort- und 2FA-Felder direkt im Browser.


Was ist das?

OpenNIT Vault ist die Browser-Erweiterung zum Passwort-Tresor von OpenNIT. Sie verbindet sich mit deiner selbst gehosteten OpenNIT-Instanz und bietet:

  • 🔎 Sofortsuche über alle persönlichen und Team-Tresore
  • ⌨️ Autofill von Benutzername, Passwort und 2FA/TOTP-Codes auch auf mehrstufigen Login-Seiten
  • 💡 Vorschläge direkt im Eingabefeld (passend zur aufgerufenen Website)
  • 👁️ Detailansicht mit Anzeigen/Kopieren von Zugangsdaten und 2FA-Code mit Countdown
  • Neue Einträge anlegen inkl. Passwort-Generator
  • 🔒 PIN-Sperre mit demselben PIN wie der Web-Tresor (Dauer frei wählbar, bis „bis Browser schließt")
  • ✏️ Anlegen, Bearbeiten und Löschen von Einträgen direkt im Popup
  • 🧹 Zwischenablage-Auto-Clear nach dem Kopieren von Geheimnissen
  • 📋 2FA-Code bereitgelegt: nach dem Ausfüllen landet beim nächsten 2FA-Feld auch auf einer Folgeseite automatisch ein frischer Code in der Zwischenablage (Strg + V genügt)
  • 🖼️ Favicons der hinterlegten Seiten (serverseitig gecacht keine externen Aufrufe)
  • 🌙 Heller & dunkler Modus (folgt dem System)

Wie es funktioniert

Die Erweiterung ist ein reiner Client zu deiner OpenNIT-Instanz. Sie enthält keinen eigenen Server und keinen Remote-Code alle Skripte sind im Paket enthalten. Kommuniziert wird ausschließlich mit dem von dir konfigurierten OpenNIT-Server über dessen REST-API (/api/vault/extension/...) per Bearer-Token.

  • Die Anmeldung erfolgt ausschließlich per SSO („Mit OpenNIT anmelden"). Die Erweiterung erhält dabei ein kurzlebiges, rotierendes Zugriffstoken ein manuelles Erzeugen von Tokens entfällt.
  • Passwörter werden serverseitig ver-/entschlüsselt; die Erweiterung fordert das Klartext-Passwort eines Eintrags erst im Moment des Ausfüllens/Kopierens an nicht beim Laden der Liste.
  • Es findet keine Ende-zu-Ende-Entschlüsselung im Browser statt; die Erweiterung speichert keine Passwörter dauerhaft (nur Server-URL, Sitzungstoken und Einstellungen in chrome.storage).

Details: docs/ARCHITECTURE.md · Berechtigungen: docs/PERMISSIONS.md

Anmeldung per SSO: „Mit OpenNIT anmelden" (OAuth 2.0 + PKCE) Anmeldung wie an OpenNIT (lokal + 2FA / M365 / Keycloak), automatische Token-Erneuerung mit Rotation. Einen manuell eingetragenen API-Token unterstützt die Erweiterung nicht mehr.

Installation

Aus dem Chrome Web Store

Am einfachsten für Endnutzer: den Store-Eintrag öffnen und „Hinzufügen" klicken. Anschließend die Erweiterung anheften, Einstellungen öffnen, Server-URL eintragen und „Mit OpenNIT anmelden" (SSO).

Store-Link folgt, sobald die Veröffentlichung abgeschlossen ist.

Aus dem Quellcode (Entwickler / self-hosted)

  1. chrome://extensions öffnen, Entwicklermodus aktivieren.
  2. „Entpackte Erweiterung laden" → den Ordner extension/ auswählen.
  3. Erweiterung anheften, Einstellungen öffnen, Server-URL eintragen und „Mit OpenNIT anmelden" (SSO).

Ausführliche Anleitung: docs/INSTALL.md.

Aus dem OpenNIT-Backend

Jede OpenNIT-Instanz bietet im Backend unter Admin → Vault-Erweiterung (/admin/vault/extension) einen ZIP-Download der Erweiterung (mit vorausgefüllter Server-URL) samt Einrichtungsanleitung. Diese generische Variante hier ist für die Veröffentlichung im Chrome Web Store bzw. als eigenständiges Repository gedacht.

Konfiguration

Einstellung Beschreibung
Server-URL Adresse deiner OpenNIT-Instanz, ohne abschließenden Slash (https://…).
Anmeldung Ausschließlich per SSO („Mit OpenNIT anmelden").
PIN-Sperre Aus / 5 Min / 15 Min / 1 Std / bis der Browser geschlossen wird. Nutzt den Tresor-PIN.
Zwischenablage Nach 30 s automatisch leeren (Standard: an).
2FA bereitlegen Frischen 2FA-Code beim nächsten 2FA-Feld in die Zwischenablage legen (Standard: an).

Build / Paketierung

./build.sh          # erzeugt dist/opennit-vault-<version>.zip aus extension/

Sicherheit & Datenschutz

  • Kein Remote-Code, keine Telemetrie, keine Drittanbieter-Server.
  • Datenfluss ausschließlich Browser ⇄ deine OpenNIT-Instanz.
  • Datenschutzerklärung: PRIVACY.md.

Sicherheitslücken bitte nicht über öffentliche Issues melden, sondern vertraulich an das OpenNIT-Team.

Verhältnis zu OpenNIT

Diese Erweiterung ist Teil des OpenNIT-Projekts. Der Quellcode wird in OpenNIT serverseitig generiert (src/Controllers/VaultApiController.php); dieses Repository ist die eigenständige, generische Fassung für Distribution und Store.

Lizenz

GNU AGPL-3.0 wie OpenNIT.