chore: entferne veraltete Architekturdokumente

Signed-off-by: StefanMoCoAt <stefan.mo.co@gmail.com>
This commit is contained in:
2026-05-05 21:22:46 +02:00
parent 6f15ada447
commit 15222b5453
258 changed files with 3388 additions and 6533 deletions
@@ -0,0 +1,68 @@
# Onboarding-Backend & Desktop-Identität
Dieses Dokument beschreibt die Backend-Infrastruktur für die Identifizierung und Authentifizierung von
Desktop-Clients ("Meldestelle-Biest").
## 🚀 Übersicht
Im Gegensatz zur Web-App (die via Keycloak/JWT authentifiziert) nutzen die Desktop-Instanzen für die
Offline-Synchronisation eine Identität, die während des **Onboarding-Prozesses** lokal vergeben und am Server
registriert wird.
## 🛡️ Authentifizierungs-Mechanismus
Die Authentifizierung erfolgt über zwei HTTP-Header, die bei jedem Request vom Desktop-Client mitgesendet werden müssen:
| Header | Beschreibung | Beispiel |
|:-----------------|:---------------------------------------------------|:-------------------|
| `X-Device-Name` | Der beim Onboarding vergebene Gerätename | `Meldestelle-PC-1` |
| `X-Security-Key` | Der beim Onboarding vergebene Sicherheitsschlüssel | `secret-key-123` |
### DeviceSecurityFilter
Ein Custom-Security-Filter (`DeviceSecurityFilter`) im Backend extrahiert diese Header und setzt einen Spring Security
Kontext mit der Authority `ROLE_DEVICE`.
## 🛰️ API-Endpunkte (Identity Service)
### 1. Gerät registrieren
Wird beim Abschluss des Onboarding-Screens aufgerufen.
- **URL:** `POST /api/v1/devices/register`
- **Body:**
```json
{
"name": "Meldestelle-PC-1",
"securityKeyHash": "...",
"role": "MASTER"
}
```
- **Hinweis:** Dieser Endpunkt ist `permitAll()`, um die Erstregistrierung zu ermöglichen.
### 2. Gerät abrufen
- **URL:** `GET /api/v1/devices/{name}`
- **Auth:** Erfordert `ROLE_DEVICE` oder `JWT`.
## 💾 Datenmodell (Exposed)
Die Tabelle `identity_devices` speichert die registrierten Instanzen:
- `id`: Eindeutige UUID.
- `name`: Gerätename (eindeutig).
- `security_key_hash`: Der Sicherheitsschlüssel (gehasht).
- `role`: `MASTER` oder `CLIENT`.
- `last_sync_at`: Zeitstempel der letzten erfolgreichen Synchronisation.
## 🛠️ Local Test-Setup
Für lokale Tests mit `curl`:
```bash
curl -X GET http://localhost:8081/api/v1/devices/Meldestelle-PC-1 \
-H "X-Device-Name: Meldestelle-PC-1" \
-H "X-Security-Key: secret-key-123"
```