Den JWT-Signaturschlüssel für die Produktion festlegen
MobilityManager signiert Authentifizierungs-Token mit einem symmetrischen JWT-Schlüssel. Dieser Schlüssel ist sicherheitskritisch: Wer ihn kennt, kann Token fälschen, einschließlich SystemAdmin-Token. Dieser Artikel erläutert die Anforderungen und wie Sie den Schlüssel in der Produktion sicher festlegen.
Beim Start erzwungene Anforderungen
Außerhalb der Development-Umgebung verweigert die Anwendung den Start, sofern Jwt:Key nicht alle der folgenden Bedingungen erfüllt:
- Er ist vorhanden und nicht leer.
- Er ist mindestens 32 Byte lang.
- Er ist keiner der bekannten, eingecheckten Standardwerte.
Schlägt in der Produktion eine dieser Prüfungen fehl, wird der Start mit einer InvalidOperationException abgebrochen, die besagt, dass Jwt:Key ein starkes Geheimnis (≥32 Byte) sein muss und kein eingecheckter Standardwert sein darf.
Warnung: Die in
.env.exampleausgelieferten und für die lokale Entwicklung verwendeten Platzhalterschlüssel stehen ausdrücklich auf einer Sperrliste. Sie bestehen die Längenprüfung, werden aber außerhalb von Development dennoch abgelehnt. Verwenden Sie sie niemals erneut.
Einen starken Schlüssel erzeugen
Erzeugen Sie ein zufälliges Geheimnis von mindestens 32 Byte. Zum Beispiel:
openssl rand -base64 48
Verwenden Sie die vollständige Ausgabe als Schlüsselwert. Länger ist unbedenklich; das Minimum beträgt 32 Byte.
Den Schlüssel je Umgebung bereitstellen
Docker Compose
Legen Sie JWT_KEY in Ihrer .env-Datei fest. Sowohl die Compose-Datei für die Entwicklung als auch die für die Produktion setzen ihn voraus und brechen sofort ab, wenn er fehlt:
JWT_KEY=Zx8v...your-48-byte-random-value...==
Kubernetes
Speichern Sie den Schlüssel im Secret mobilitymanager-secrets unter Jwt__Key:
kubectl -n mobilitymanager-prod create secret generic mobilitymanager-secrets \
--from-literal=Jwt__Key='Zx8v...your-random-value...==' \
--dry-run=client -o yaml | kubectl apply -f -
Veröffentlichte Bereitstellung
Geben Sie Jwt__Key als Umgebungsvariable aus Ihrem Prozessmanager oder Secret-Store an. Legen Sie ihn nicht in einer eingecheckten appsettings.json ab.
Optionaler Aussteller und optionale Zielgruppe
Sie können außerdem Jwt__Issuer und Jwt__Audience festlegen. Werden sie weggelassen, lauten die Standardwerte CK.MobilityManager beziehungsweise CK.MobilityManager.Users. Halten Sie diese über alle Instanzen hinweg konsistent, die dieselben Token validieren.
Hinweis: Das Ändern des Signaturschlüssels macht alle zuvor ausgestellten Token ungültig und zwingt Benutzer, sich erneut anzumelden. Rotieren Sie bewusst und rollen Sie den neuen Schlüssel auf allen Instanzen gleichzeitig aus.
Verwandte Artikel
- Umgebungsvariablen und die .env-Datei konfigurieren
- Den Schlüssel zur Dokumentverschlüsselung im Ruhezustand konfigurieren
- Checkliste zur Produktionshärtung
- Fehlersuche bei einem fehlgeschlagenen Start