docs: § 7.6 um Passwort-Login (1FA) erweitern; Admin-Zugang ist jetzt 1FA
- Neuer Abschnitt 7.6.1 „Anmeldung mit Benutzername & Passwort (1FA, ohne 2FA)" (/login), Knopf auf der Zugangs-Seite, Konten aus dem Authelia-Datei-Backend. - /admin-login als auf Admins beschränkte Variante (7.6.2). - Recovery (ADMIN_API_KEY) -> 7.6.3, Härtung -> 7.6.4; Intro + TOC-Anchor angepasst. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
6792e1be86
commit
2ccfd7f6d6
1 changed files with 34 additions and 19 deletions
|
|
@ -44,7 +44,7 @@ funktioniert trotzdem, die Ausgabe ist dann unformatiert.
|
|||
6. [Einstellungen und Konfiguration](#6-einstellungen-und-konfiguration)
|
||||
|
||||
**Administration**
|
||||
7. [Nutzerverwaltung und Authentifizierung](#7-nutzerverwaltung-und-authentifizierung) · [7.5 Admin-Web-Panel](#75-admin-web-panel) · [7.6 Admin-Login & Recovery](#76-admin-zugang-ohne-persönlichen-link-selbstanmeldung--recovery)
|
||||
7. [Nutzerverwaltung und Authentifizierung](#7-nutzerverwaltung-und-authentifizierung) · [7.5 Admin-Web-Panel](#75-admin-web-panel) · [7.6 Anmeldung & Admin-Zugang](#76-anmeldung--admin-zugang-link-passwort-recovery)
|
||||
8. [Gedächtnis und Erinnerungen](#8-gedächtnis-und-erinnerungen)
|
||||
9. [Resilienz, Fallbacks und Metriken](#9-resilienz-fallbacks-und-metriken)
|
||||
10. [Notfall-Erkennung und Eskalation](#10-notfall-erkennung-und-eskalation)
|
||||
|
|
@ -1872,34 +1872,49 @@ Protokolliert werden u. a. `config_set` / `config_reset` (Laufzeit-Einstellungen
|
|||
> Sichtbar im Log-Tab nur im **Dienst-Betrieb** (Journal). Im Vordergrund-Betrieb
|
||||
> (`make run`) erscheinen die Audit-Zeilen im Terminal.
|
||||
|
||||
### 7.6 Admin-Zugang ohne persönlichen Link (Selbstanmeldung & Recovery)
|
||||
### 7.6 Anmeldung & Admin-Zugang (Link, Passwort, Recovery)
|
||||
|
||||
> 🔧 Admin
|
||||
|
||||
Die App-Oberfläche (`/`) ist **nur per persönlichem Zugangslink** (`?k=<token>` → Cookie
|
||||
`va_token`) erreichbar — bewusst ohne SSO, damit Senioren keine Login-Maske sehen. Wer
|
||||
seinen Link verliert, kommt zunächst nicht in die App. Als **Admin** bist Du dadurch
|
||||
**nicht ausgesperrt**: Du hast einen Selbst-Login und zwei unabhängige Recovery-Wege.
|
||||
Die App-Oberfläche (`/`) erkennt Dich an einem `va_token`-Cookie. Es gibt drei Wege hinein:
|
||||
1. **Persönlicher Zugangslink** (`?k=<token>`) — der Standardweg für Senioren (keine
|
||||
Login-Maske); ein gültiges Cookie loggt automatisch ein.
|
||||
2. **Benutzername & Passwort (1FA, ohne 2FA)** — für Betreuer/Admins (§ 7.6.1).
|
||||
3. **Recovery-Wege**, falls ein Admin ausgesperrt ist (§ 7.6.3 / 7.6.4).
|
||||
|
||||
#### 7.6.1 Selbstanmeldung mit dem Admin-Passwort (empfohlen)
|
||||
Ohne gültiges Cookie zeigt `/` die Seite „Persönlicher Zugang nötig" mit einem Knopf
|
||||
**„Mit Benutzername & Passwort anmelden"** (→ `/login`). Senioren nutzen weiter ihren Link;
|
||||
`/` leitet bewusst **nicht** automatisch zur Login-Maske um (sonst säßen Senioren ohne
|
||||
Authelia-Konto fest).
|
||||
|
||||
Rufe im Browser auf:
|
||||
#### 7.6.1 Anmeldung mit Benutzername & Passwort (1FA, ohne 2FA)
|
||||
|
||||
Rufe auf (oder klicke den Knopf auf der Zugangs-Seite):
|
||||
|
||||
```
|
||||
https://voice.jamulix.de/admin-login
|
||||
https://voice.jamulix.de/login
|
||||
```
|
||||
|
||||
Ablauf: Der Reverse-Proxy schickt Dich zu **Authelia** (`auth.jamulix.de`) → Du meldest
|
||||
Dich mit Deinem **Admin-Passwort/2FA** an → das Gateway erkennt Dich als SSO-Admin
|
||||
(`ADMIN_USERS`), setzt Dir ein frisches `va_token`-Cookie und leitet in die App (`/`).
|
||||
**Kein Link nötig.** Bookmarke diese URL als „Admin-Login".
|
||||
Ablauf: Der Reverse-Proxy schickt Dich zu **Authelia** (`auth.jamulix.de`) → Du gibst
|
||||
**nur Benutzername + Passwort** ein (Zugriffsregel `voice.jamulix.de → one_factor`, also
|
||||
**kein 2FA**) → das Gateway erkennt Dich am `Remote-User`, setzt ein frisches
|
||||
`va_token`-Cookie und leitet in die App (`/`). Gilt für **Admins und normale
|
||||
Authelia-Nutzer**; die Konten liegen im Authelia-Datei-Backend
|
||||
(`/etc/authelia/users_database.yml`).
|
||||
|
||||
- Technisch dahinter steht der Endpunkt `GET /api/admin/login` (dieselbe Wirkung; die
|
||||
hübsche URL `/admin-login` ist nur ein nginx-Alias darauf).
|
||||
- **Jeder Aufruf rotiert Deinen Token** — alte persönliche Links *dieses Admin-Nutzers*
|
||||
werden ungültig. Für eine Wiederherstellung korrekt und ein Sicherheitsplus.
|
||||
- Endpunkt dahinter: `GET /api/login` (nginx-Location `/login`).
|
||||
- **Jeder Login rotiert Dein Token** — ein zuvor gesetztes Cookie / ein alter Link
|
||||
*dieses Nutzers* wird ungültig (ein Token pro Nutzer).
|
||||
- Andere `*.jamulix.de`-Dienste bleiben bei **2FA**; nur `voice.jamulix.de` ist 1FA.
|
||||
Sicherheits-Hinweis: 1FA für den Admin-Zugang ist schwächer als 2FA — bewusste Abwägung.
|
||||
|
||||
#### 7.6.2 Recovery per `ADMIN_API_KEY` (SSO-unabhängig)
|
||||
#### 7.6.2 Admin-Selbstanmeldung (`/admin-login`)
|
||||
|
||||
`https://voice.jamulix.de/admin-login` ist die auf **Admins** (`ADMIN_USERS`) beschränkte
|
||||
Variante von `/login` — gleicher Ablauf, aber Nicht-Admins bekommen 403. Praktisch als
|
||||
Bookmark „Admin-Login". Endpunkt: `GET /api/admin/login` (nginx-Alias `/admin-login`).
|
||||
|
||||
#### 7.6.3 Recovery per `ADMIN_API_KEY` (SSO-unabhängig)
|
||||
|
||||
Funktioniert auch, wenn Authelia gerade nicht erreichbar ist — vom Server/localhost aus.
|
||||
Den Key liest Du als root aus `/etc/voice-assistant/voice-assistant.env`.
|
||||
|
|
@ -1923,7 +1938,7 @@ echo "https://voice.jamulix.de/?k=$TOKEN"
|
|||
> geraten lassen (kein `?key=` in URLs verwenden, außer beim einmaligen Bootstrap über
|
||||
> `GET /api/admin/request-headers?key=…`), und nach solchem Gebrauch rotieren.
|
||||
|
||||
#### 7.6.3 Härtung gegen Total-Aussperrung
|
||||
#### 7.6.4 Härtung gegen Total-Aussperrung
|
||||
|
||||
Eine echte Vollsperre bräuchte: Link weg **und** Authelia-Konto weg **und**
|
||||
`ADMIN_API_KEY` weg **und** kein SSH. Um auch das abzusichern:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue