- Neuer Abschnitt "Karten erstellen (Aufgaben-Workflow)" mit Workflow A/B - Bekannte Struktur erweitert: Workflows, Columns, Lanes für Board 1 - Pitfalls ergänzt: Arrival Rule, Parent-Link API, linkedCards read-only - Settings und Plans aktualisiert Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.4 KiB
Fix: OAuth Callback 403 Forbidden - WEBHOOK_URL und BASE_URL fehlen Prefix
Aktuelle Situation (Stand 2026-02-05)
Problem: OAuth-Callback zu flow.wvits.de/rest/oauth2-credential/callback schlägt mit 403 Forbidden fehl.
Screenshot zeigt: Callback-URL hat KEINEN Prefix → nginx blockt mit 403.
Root Cause Analyse
Gefundene Probleme:
-
✅ WEBHOOK_URL ohne Prefix (Hauptursache)
# docker-compose.yml auf srv-docker02 # WEBHOOK_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/ # ← Auskommentiert! WEBHOOK_URL=https://flow.wvits.de/ # ← Aktiv, OHNE Prefix→ OAuth-Callbacks gehen zu
/rest/oauth2-credential/callbackstatt/PREFIX/rest/oauth2-credential/callback -
✅ N8N_EDITOR_BASE_URL fehlt
# N8N_EDITOR_BASE_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/ # ← Auskommentiert→ n8n nutzt Fallback (
N8N_PROTOCOL + N8N_HOST), aber ohne Prefix → UI-Redirects, WebSocket-URLs, Asset-Loading könnten fehlschlagen -
⚠️ nginx blockt alles ohne Prefix
# /home/vinosadmin/n8n-reverse-proxy/nginx.conf auf srv-revproxy01 location / { return 403; } # ← Catch-All blockt→ Nur Requests unter
/77ba0b14e9ccd5521a0ec1867332378c/werden weitergeleitet -
ℹ️ NPM Asset-Cache existiert (kein direktes Problem, aber Pitfall)
- Cache-Key:
$host$request_uri(ohne Client-IP) - Könnte 403-Responses cachen wenn externer Client Assets abruft
- Aktuell: Cache leer, kein Problem
- Cache-Key:
-
ℹ️ Custom Certificates Mount-Error (kein Problem für OAuth)
/opt/custom-certificatesAccess denied- Betrifft nur HTTPS zu internen Services mit Custom CA
- SMTP ist unverschlüsselt (SSL=false), kein Impact
Fix-Plan
Schritt 1: n8n docker-compose.yml korrigieren (srv-docker02)
SSH: ssh vinosadmin@srv-docker02
Datei: /home/vinosadmin/n8n/docker-compose.yml
Änderungen:
# 1. WEBHOOK_URL mit Prefix aktivieren (Zeile ~31)
# WEBHOOK_URL=https://flow.wvits.de/
WEBHOOK_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/
# 2. N8N_EDITOR_BASE_URL mit Prefix hinzufügen (nach N8N_PROXY_HOPS)
N8N_EDITOR_BASE_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/
Begründung:
WEBHOOK_URL: n8n nutzt diese für OAuth-Callback-URLs und Webhook-GenerierungN8N_EDITOR_BASE_URL: n8n nutzt diese für UI-Redirects, WebSocket-URLs, Asset-Pfade
Schritt 2: Container neu starten
cd /home/vinosadmin/n8n
docker compose down
docker compose up -d
Warum down statt restart?
- Environment-Variablen werden nur beim
upneu eingelesen restartbehält alte Env-Vars bei
Schritt 3: Verifikation
A) Container-Status prüfen:
docker compose ps
docker compose logs -f n8n-main | head -20
B) Environment-Variablen verifizieren:
docker exec n8n-n8n-main-1 env | grep -E "(WEBHOOK_URL|EDITOR_BASE_URL)"
Erwartete Ausgabe:
WEBHOOK_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/
N8N_EDITOR_BASE_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/
C) OAuth-Flow testen:
- n8n UI öffnen:
https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/ - Credentials → Microsoft Teams account 2 → "Connect my account"
- Microsoft-Login → Callback sollte zu
/PREFIX/rest/oauth2-credential/callbackgehen - Erfolgreich: "Connected" - Credential ist authorisiert
D) Nginx-Logs prüfen (falls 403):
# Auf srv-revproxy01
ssh -J sshtest@10.10.254.201 vinosadmin@srv-revproxy01
docker logs --tail 50 n8n-reverse-proxy-nginx-1 2>&1 | grep oauth
Schritt 4 (Optional): NPM-Cache leeren
Falls nach dem Fix immer noch Probleme auftreten:
# Auf srv-revproxy01
ssh -J sshtest@10.10.254.201 vinosadmin@srv-revproxy01
docker exec npm sh -c 'rm -rf /var/lib/nginx/cache/public/*'
docker exec npm nginx -s reload
Geänderte Dateien
| Datei | Host | Änderung |
|---|---|---|
/home/vinosadmin/n8n/docker-compose.yml |
srv-docker02 | WEBHOOK_URL + N8N_EDITOR_BASE_URL mit Prefix |
Sicherheit & Impact
Was ändert sich:
- OAuth-Callbacks gehen nun zu
/PREFIX/rest/oauth2-credential/callback(mit Prefix) - nginx leitet alle
/PREFIX/*Requests weiter (bestehende IP-Kontrolle bleibt) - Keine Änderungen an Firewall-Regeln oder nginx-Config
Keine Regression:
- Bestehende Webhooks (UPS-Workflow) unverändert:
/PREFIX/webhook/* - Interner Zugang via n8n.vinos.de weiterhin funktional
- Externe Webhooks weiterhin erlaubt (
allow allin Webhook-Block)
Troubleshooting
Falls OAuth immer noch 403:
A) Callback-URL prüfen:
# Browser DevTools → Network Tab → OAuth-Redirect URL ansehen
# Sollte sein: flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/rest/oauth2-credential/callback
# NICHT: flow.wvits.de/rest/oauth2-credential/callback
B) Container-Logs prüfen:
docker compose logs n8n-main | grep -i webhook
C) nginx-Logs prüfen:
# Auf srv-revproxy01
docker logs --tail 100 n8n-reverse-proxy-nginx-1 2>&1 | grep "403\|oauth"
Falls SPA nicht lädt (weiße Seite):
NPM-Cache leeren (gecachte 403-Responses):
# Auf srv-revproxy01
docker exec npm sh -c 'rm -rf /var/lib/nginx/cache/public/*'
docker exec npm nginx -s reload
Browser-Cache leeren:
- Ctrl+Shift+R (Hard Reload)
- Oder Incognito-Fenster