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
5.3 KiB
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)
chrome://extensionsöffnen, Entwicklermodus aktivieren.- „Entpackte Erweiterung laden" → den Ordner
extension/auswählen. - 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.