feat(apicore-sync): authenticate with an ApiCore API key

APICORE_API_KEY replaces the service-account login: the key is sent as
the bearer token directly, needs no password and no MFA exemption, may
only read the shop feed and can be revoked in ApiCore at any time. A
malformed key is rejected with a clear message before any request.
Email/password stays as fallback for ApiCore versions without keys.

The system status treats the key or the legacy login as configured.
README, .env.example and the k8s secret template describe the key.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Opus 5.5 committed 2026-09-28 01:24:26 +02:00
1 parent 5642f0c4af
commit 55be1fe881
7 files changed
+101 -16

No files matched your search

+7 -5
View File
@@ -106,11 +106,13 @@ stringData:
# "ApiCore-Synchronisierung"). Leer = der Sync-Knopf meldet einen
# Konfigurationsfehler, statt still nichts zu tun.
#
# ApiCore kennt keinen API-Key-Mechanismus, nur E-Mail/Passwort-Login —
# deshalb hier ein eigenes, MFA-FREIES Service-Konto eintragen, nicht einen
# echten Admin-Zugang. Noetige Leserechte: harvests:read, products:read,
# extractions:read, bottling:read und optional apiaries:read. Die Adresse
# APICORE_API_URL ist nicht geheim und steht in 01-configmap.yaml.
# Empfohlen: API-Schluessel aus ApiCore (Verwaltung -> Automatisierung ->
# API-Schluessel, Berechtigung "Shop-Daten lesen"). Kein Passwort, keine
# MFA, jederzeit widerrufbar. Die Adresse APICORE_API_URL ist nicht geheim
# und steht in 01-configmap.yaml.
APICORE_API_KEY: ""
# Nur fuer aeltere ApiCore-Staende ohne API-Schluessel: eigenes,
# MFA-freies Service-Konto mit Leserechten statt eines Admin-Zugangs.
APICORE_SYNC_EMAIL: ""
APICORE_SYNC_PASSWORD: ""