Files
internxt-webdav/docs/browser-token-auth.md
2026-02-28 12:36:30 +01:00

4.4 KiB
Raw Blame History

Browser-Token-Authentifizierung (Ansatz B)

Da der API-Login für Ihren Account-Typ blockiert ist, können Sie sich im Browser einloggen und die Session-Daten für den WebDAV-Wrapper verwenden.

Ablauf

  1. Auf https://drive.internxt.com einloggen
  2. Token und Mnemonic aus dem Browser extrahieren
  3. In .env eintragen
  4. WebDAV-Server starten

Token extrahieren

Schritt 1: Alle gespeicherten Keys anzeigen

Auf https://drive.internxt.com eingeloggt sein. DevTools (F12) → Console:

// Alle localStorage-Keys anzeigen
Object.keys(localStorage).filter(k => k.includes('x') || k.includes('token') || k.includes('Token')).forEach(k => console.log(k));

Damit sehen Sie, welche Keys es gibt (z.B. xNewToken, xMnemonic, xUser).

Schritt 2: Token und Mnemonic auslesen

// Token und Mnemonic anzeigen
console.log('Token:', localStorage.getItem('xNewToken') || localStorage.getItem('xToken') || '(nicht gefunden)');
console.log('Mnemonic:', localStorage.getItem('xMnemonic') || '(nicht gefunden)');

Schritt 3: Falls nichts gefunden wird

  • Application-Tab prüfen: DevTools → Application (oder Anwendung) → links Local Storagehttps://drive.internxt.com auswählen. Dort alle Einträge durchsehen.
  • Richtige URL: Sie müssen auf https://drive.internxt.com sein (nicht internxt.com) und eingeloggt sein nach dem Login auf /drive oder /app.
  • Session vs. Local: Manche Werte liegen in sessionStorage. Testen mit:
    console.log('sessionStorage:', Object.keys(sessionStorage));
    
  • Alle Keys anzeigen: Zum Debuggen alle Keys mit Werten:
    for (let i = 0; i < localStorage.length; i++) {
      const k = localStorage.key(i);
      console.log(k + ':', localStorage.getItem(k)?.substring(0, 50) + '...');
    }
    

.env eintragen

INXT_TOKEN=eyJhbGciOiJIUzI1NiIs...
INXT_MNEMONIC=word1 word2 word3 ...
# Namensentschlüsselung: CRYPTO_SECRET oder CRYPTO_SECRET2 (CLI-Default: 6KYQBP847D4ATSFA)
CRYPTO_SECRET=6KYQBP847D4ATSFA
# Optional: WebDAV-Credentials erzwingen (sonst beliebige Credentials akzeptiert)
# WEBDAV_USER=backup
# WEBDAV_PASS=geheim

WebDAV-Credentials (für Duplicati, Explorer)

Der Server erwartet Basic Auth. Ohne WEBDAV_USER/WEBDAV_PASS in .env akzeptiert er beliebige Credentials Sie können in Duplicati z.B. Benutzername backup und Passwort geheim eintragen. Mit WEBDAV_USER und WEBDAV_PASS werden nur diese Credentials akzeptiert.

WebDAV-Server starten

npm start

Server läuft auf http://127.0.0.1:3005. Phase 14 aktiv: PROPFIND, MKCOL, DELETE, MOVE, GET, PUT. Für GET und PUT wird INXT_MNEMONIC benötigt.

PowerShell Copy-Item: „Null character in path“

Windows/.NET fügt bei WebDAV-Pfaden manchmal Null-Bytes ein. Workaround:

# Variante 1: Direkt per HTTP (umgeht WebDAV-Bugs, UUID aus dir i: übernehmen)
Invoke-WebRequest -Uri "http://127.0.0.1:3005/_.69942103-e16f-4714-89bb-9f9f7d3b1bd5" -OutFile test.md

# Upload per PUT (PowerShell)
Invoke-WebRequest -Uri "http://127.0.0.1:3005/meine-datei.txt" -Method PUT -Body "Inhalt" -ContentType "application/octet-stream"

# Variante 2: Robocopy (kopiert alle Dateien aus Root)
robocopy "i:\" "." /NFL /NDL

# Variante 3: Explorer  Datei per Drag & Drop kopieren
``` Windows Explorer: Netzlaufwerk verbinden  `http://127.0.0.1:3005`.

## Token erneuern (bei 401 / abgelaufen)

Tokens laufen nach einiger Zeit ab (typisch Stunden). Bei 401-Fehlern oder Nicht autorisiert“:

### Option A: Automatisch (Chromium)

```bash
npm run token-refresh

Öffnet einen Browser mit drive.internxt.com. Einloggen die Tokens werden extrahiert und .env automatisch aktualisiert. Server neu starten.

Option B: Manuell

  1. https://drive.internxt.com öffnen und erneut einloggen
  2. Token und Mnemonic wie oben (Schritt 2) aus der Console auslesen
  3. .env mit den neuen Werten aktualisieren
  4. WebDAV-Server neu starten

Hinweise

  • Bridge-API: Der Download nutzt die Internxt Bridge mit x-api-version: 2 und den Headern internxt-version/internxt-client. Ohne diese liefert die Bridge 400.
  • Sicherheit: Mnemonic und Token sind hochsensibel. Nicht in Git committen, .env in .gitignore belassen.
  • Nur für Sie: Die Tokens sind an Ihre Session gebunden. Für andere Nutzer funktioniert dieser Ansatz nicht.