2.5 KiB
2.5 KiB
TURN REST Credentials (Ephemeral) – Nutzung & Betrieb
Dieses Dokument erklärt die TURN REST Credential Strategie für niom-turn (MVP → production-fähiger Pfad).
Warum TURN REST?
- Du willst für WebRTC kurzlebige TURN-Logins ausstellen (z.B. 5–10 Minuten).
- Dein TURN-Server speichert keine User-Passwörter pro Nutzer.
- Dein Backend (später) kann Tokens ausstellen; bis dahin kannst du lokal/ops-seitig Tokens generieren.
Verfahren (kompatibel zu gängigen WebRTC-Stacks)
Username: <expiry_unix_seconds> oder <expiry_unix_seconds>:<opaque_user_id>
- Beispiel:
1735412345:alice expiry_unix_secondsist ein Unix-Timestamp in Sekunden.
Credential (Password):
\n\text{credential} = \text{base64}(\text{HMAC-SHA1}(\text{secret}, \text{username}))\n
Dieses credential wird dann ganz normal als TURN-Passwort im ICE-Server-Config verwendet.
Server-Seite (niom-turn)
Konfiguration in appsettings.example.json:
auth.rest_secret: Shared Secret (muss geheim bleiben)auth.rest_max_ttl_seconds: Maximal akzeptiertes Zeitfenster in die Zukunft. Wenn ein Token zu weit in der Zukunft liegt, wird es abgewiesen (Sicherheitsmaßnahme).
Wichtig:
- Der Server akzeptiert TURN REST Credentials als Fallback nur wenn der Username nicht im CredentialStore gefunden wird.
- Ablauf/TTL:
expirymuss >=nowsein- und
expiry - now <= rest_max_ttl_seconds
Lokal Tokens generieren (ohne Backend)
Das Repo enthält ein kleines CLI:
- Binary: src/bin/turn_rest_cred.rs
Beispiele:
- Einfach (stdout als ENV-Zeilen)
cargo run --bin turn_rest_cred -- --secret "SUPER_SECRET" --user alice --ttl 600
- JSON Ausgabe
cargo run --bin turn_rest_cred -- --secret "SUPER_SECRET" --user alice --ttl 600 --json
Du erhältst:
username→ in WebRTC alsiceServers[].usernamecredential→ in WebRTC alsiceServers[].credential
WebRTC Beispiel (Frontend)
Du setzt in deiner App typischerweise:
- URLs (mindestens UDP + TLS):
turn:your-domain:3478?transport=udpturn:your-domain:3478?transport=tcpturns:your-domain:5349?transport=tcp
und dann:
username: vom Generator/Backendcredential: vom Generator/Backend
Betriebshinweise
- Secret Rotation: Plane Rotation (z.B. zwei Secrets parallel) – sonst brechen Tokens im Umlauf.
- TTL klein halten: 5–10 Minuten ist typisch.
- Logs: Niemals
secretoder vollständige Credentials loggen. - Rate Limits/Quotas: Unbedingt ergänzen (Open-Relay/Abuse vermeiden).