Bonus 17: Sichere API-Key-Speicherung (.env + age-Option)
- .gitignore: Secrets (.env, *.key, *.pem) + Coverage + Temp-Verzeichnisse - .env.example: Template ohne echte Werte, mit Anleitung - scripts/token-gen.mjs: HMAC-Bearer-Token-Generator - package.json: token-gen + build:twa Scripts - docs/SECRETS.md: komplette Anleitung - Lokale Entwicklung (.env) - CI (gitea-Repository-Secrets) - age-Verschluesselung als optionale Schicht - Was NIE tun / was IMMER tun - Incident-Response bei geleaktem Secret Verifiziert: - token-gen erzeugt Token korrekt (stderr: Token gueltig...) - 122/122 Tests gruen - .env.example im Repo, .env ist gitignored
This commit is contained in:
1 parent
67519ee416
commit
d7b1acbe33
5 files changed
+272
-1
No files matched your search
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env node
|
||||
// Token-Generator fuer die Notes-API (Phase 9: Auth)
|
||||
// Generiert ein Bearer-Token im Format: <timestamp>.<hmac-sha256-hex>
|
||||
|
||||
import { createHmac } from 'node:crypto';
|
||||
|
||||
const secret = process.env.NOTES_API_TOKEN;
|
||||
if (!secret) {
|
||||
console.error('Fehler: NOTES_API_TOKEN nicht gesetzt.');
|
||||
console.error('Setze die Env-Variable, z. B.:');
|
||||
console.error(' $env:NOTES_API_TOKEN = "my-secret" # PowerShell');
|
||||
console.error(' export NOTES_API_TOKEN=my-secret # Bash');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const ts = Date.now().toString();
|
||||
const hmac = createHmac('sha256', secret).update(ts).digest('hex');
|
||||
const token = `${ts}.${hmac}`;
|
||||
|
||||
console.log(token);
|
||||
console.error(`(Token gueltig fuer Bearer-Auth. Secret: ${'*'.repeat(8)})`);
|
||||
Reference in new issue
Block a user