Ktor Server: Authentifizierung (API-Key) #43

Closed
opened 2026-05-14 17:28:28 +00:00 by jreinemann-euris · 1 comment
jreinemann-euris commented 2026-05-14 17:28:28 +00:00 (Migrated from github.com)

Feature: API-Key-basierte Authentifizierung fuer den REST-Server

Part of: #11
Depends on: #42

Ziel

Alle API-Endpoints sind durch einen konfigurierbaren API-Key geschuetzt. Nur Clients mit gueltigem Key koennen auf das Inventar zugreifen.

Scope

  • Ktor Authentication Plugin einbinden
  • API-Key-Validierung via HTTP-Header (X-API-Key oder Authorization: Bearer <key>)
  • API-Key wird in application.conf konfiguriert
  • Health-Endpoint bleibt oeffentlich (kein Auth noetig)
  • 401 Unauthorized bei fehlendem/falschem Key

Technische Hinweise

  • Ktor authentication {} Plugin mit Custom Provider oder Bearer-Auth
  • Fuer privaten Gebrauch (2-10 Geraete) ist ein statischer API-Key ausreichend
  • Key sollte mindestens 32 Zeichen lang sein (in Doku empfehlen)
  • Kein User-Management noetig (ein Key fuer alle Geraete)

Akzeptanzkriterien

  • API-Endpoints erfordern gueltigen API-Key
  • Requests ohne Key liefern 401 Unauthorized
  • Health-Endpoint funktioniert ohne Auth
  • API-Key ist ueber Konfiguration aenderbar (nicht hardcoded)
  • Tests: Auth-Tests (gueltig, ungueltig, fehlend)
## Feature: API-Key-basierte Authentifizierung fuer den REST-Server Part of: #11 Depends on: #42 ### Ziel Alle API-Endpoints sind durch einen konfigurierbaren API-Key geschuetzt. Nur Clients mit gueltigem Key koennen auf das Inventar zugreifen. ### Scope - Ktor Authentication Plugin einbinden - API-Key-Validierung via HTTP-Header (`X-API-Key` oder `Authorization: Bearer <key>`) - API-Key wird in `application.conf` konfiguriert - Health-Endpoint bleibt oeffentlich (kein Auth noetig) - 401 Unauthorized bei fehlendem/falschem Key ### Technische Hinweise - Ktor `authentication {}` Plugin mit Custom Provider oder Bearer-Auth - Fuer privaten Gebrauch (2-10 Geraete) ist ein statischer API-Key ausreichend - Key sollte mindestens 32 Zeichen lang sein (in Doku empfehlen) - Kein User-Management noetig (ein Key fuer alle Geraete) ### Akzeptanzkriterien - [ ] API-Endpoints erfordern gueltigen API-Key - [ ] Requests ohne Key liefern 401 Unauthorized - [ ] Health-Endpoint funktioniert ohne Auth - [ ] API-Key ist ueber Konfiguration aenderbar (nicht hardcoded) - [ ] Tests: Auth-Tests (gueltig, ungueltig, fehlend)
jreinemann-euris commented 2026-05-14 18:50:29 +00:00 (Migrated from github.com)

Abgeschlossen (2026-05-14)

Zyklen: 1 (Korrektur: Ktor 3 Principal-Kompatibilität)
Tests: 7 neue Auth-Tests + 8 bestehende Tests, 0 Fehler

Implementierte Artefakte

  • Authentication.kt: Custom Ktor AuthenticationProvider mit X-API-Key und Bearer-Support
  • application.conf: Konfigurierbarer API-Key mit Env-Variable-Override (KRISENVORRAT_API_KEY)
  • Routing.kt: Inventory-Routes in authenticate-Block, Health bleibt öffentlich
  • AuthenticationTest.kt: 7 Tests (gültig, ungültig, fehlend, beide Header-Varianten)
  • ApplicationTest.kt: Bestehende Tests mit API-Key-Header aktualisiert

Abweichungen

Keine

## Abgeschlossen (2026-05-14) **Zyklen:** 1 (Korrektur: Ktor 3 Principal-Kompatibilität) **Tests:** ✅ 7 neue Auth-Tests + 8 bestehende Tests, 0 Fehler ### Implementierte Artefakte - ✅ Authentication.kt: Custom Ktor AuthenticationProvider mit X-API-Key und Bearer-Support - ✅ application.conf: Konfigurierbarer API-Key mit Env-Variable-Override (KRISENVORRAT_API_KEY) - ✅ Routing.kt: Inventory-Routes in authenticate-Block, Health bleibt öffentlich - ✅ AuthenticationTest.kt: 7 Tests (gültig, ungültig, fehlend, beide Header-Varianten) - ✅ ApplicationTest.kt: Bestehende Tests mit API-Key-Header aktualisiert ### Abweichungen Keine
Sign in to join this conversation.
No description provided.