chore: entferne veraltete Architekturdokumente
Signed-off-by: StefanMoCoAt <stefan.mo.co@gmail.com>
This commit is contained in:
@@ -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"
|
||||
```
|
||||
Reference in New Issue
Block a user