JWT_ACCESS_SECRET war zwar als Pflicht-Env-Var geprueft, aber ohne Mindestlaenge - ein kurzer/erratbarer Wert haette nicht nur das Faelschen von Access-/MFA-/SSO-Tokens fuer jeden Nutzer erlaubt, sondern auch (ueber mfa-crypto.util.ts, das den AES-Schluessel fuer gespeicherte TOTP-Secrets aus genau diesem Wert ableitet) das Entschluesseln aller gespeicherten MFA-Secrets. main.ts bricht den Start jetzt mit klarer Fehlermeldung ab, wenn JWT_ACCESS_SECRET kuerzer als 32 Zeichen ist. .env.example und das K8s-Secret-Template zeigen jetzt einen ausreichend langen Platzhalter mit Erzeugungshinweis (openssl rand -hex 32). Betrifft nur main.ts's bootstrap() - e2e-Tests bootstrappen ueber test/utils/create-test-app.ts direkt via configureApp() und durchlaufen diese Pruefung nicht, daher keine Testanpassung noetig. Co-Authored-By: Claude Sonnet 5 <[email protected]>
22 lines
1.1 KiB
YAML
22 lines
1.1 KiB
YAML
# Vorlage – keine echten Werte. Kopieren, echte Werte setzen, per `kubectl apply` außerhalb
|
||
# der Versionskontrolle anwenden (oder ueber Secret-Manager/Sealed-Secrets im Cluster).
|
||
apiVersion: v1
|
||
kind: Secret
|
||
metadata:
|
||
name: apicore-backend-secret
|
||
type: Opaque
|
||
stringData:
|
||
# Host ist der In-Cluster-Service aus deploy/k8s/postgres/service.yaml.
|
||
# Anderer Namespace als das Backend? Dann FQDN nutzen:
|
||
# apicore-postgres.<namespace>.svc.cluster.local
|
||
DATABASE_URL: "postgresql://apicore:change-me-postgres-password@apicore-postgres:5432/apicore?schema=public"
|
||
# Mindestens 32 Zeichen (server-seitig erzwungen, Start bricht sonst ab) -
|
||
# signiert jedes Access-/MFA-/SSO-Token UND verschluesselt gespeicherte
|
||
# TOTP-Secrets. Erzeugen z.B. mit: openssl rand -hex 32
|
||
JWT_ACCESS_SECRET: "change-me-to-a-random-value-at-least-32-characters-long"
|
||
JWT_REFRESH_SECRET: "change-me-refresh-secret"
|
||
# Entra ID App-Registrierung (SSO). Siehe configmap.example.yaml
|
||
# fuer OIDC_ISSUER_URL/OIDC_REDIRECT_URI.
|
||
OIDC_CLIENT_ID: "change-me-entra-client-id"
|
||
OIDC_CLIENT_SECRET: "change-me-entra-client-secret"
|