Ich versuche, einen TURN-Server für ein Projekt mit Coturn einzurichten aber, dass die Dokumentation zu finden bin bestenfalls lückenhaft ist ...manuell einfügen TURN Benutzer (Coturn) in eine Datenbank
Mir ist klar, dass es eine turnadmin
Tool, das dies für Sie tun wird, aber ich würde sehr viel lieber nur Abfragen in meiner Datenbank direkt ausführen. Dies ist eine App mit möglicherweise vielen Benutzern und ihre freigegebenen Schlüssel (hmackey
in turnusers_lt
) können sich ändern (um keine Passwörter mit der App zu teilen verwendet die App ein "gefälschtes" Passwort, das ein Hash von bestimmten flüchtigen Benutzerparametern ist, die aren sind nicht so geheim.
kann ich von den spärlichen Dokumenten sammeln, dass die hmackey
den Bereich, Benutzername und Passwort berechnet:
$ turnadmin -k -u myusername -r my.realm.org -p my-password
> e.g. 0x7a69b0e2b747a4560045f79d171b78c0
Da mein Code, der diese drei Parameter weiß, wie kann ich den HMAC-Hash bauen? Z.B. in PHP habe ich
string hash_hmac (string $algo , string $data , string $key [, bool $raw_output = false ])
$algo
hier SHA1 sein sollte, aber welche Werte gehen in $data
(z concat von Benutzer/Pass) und $key
(z Reich)?
Es gibt auch eine turn_secret
Tabelle einen ‚Wert‘ für einen Bereich Listing, ich vermute, dies sollte als $key
in dem obigen Beispiel verwendet werden, aber das Hinzufügen und die Schlüssel zu modifizieren noch das gleiche Ergebnis, wenn ich turnadmin nennen.
Wesentliches, was ich tun möchte, ist (Pseudocode):
// user registers
// pseudo-code, this is of course computed using php's password_hash function
$hashed_pw = hash($pw);
$db->query('insert into usertable (name, pass) values ($name, $hashed_pw)');
// this is implemented somewhere...
$coturn_pw = get_secret_hash($name);
// this needs implementing...
$HAMC = calc_hmac($name, $coturn_pw, 'my.realm.com');
$turndb->query('insert into turnusers_lt values (...)');
// on update, delete also update turnusers_lt
... und dann im Client, soll ich nun in der Lage sein, um den TURN-Server zu verbinden mit $name
und $coturn_pw
als Anmeldeinformationen für my.realm.com
.
Oder überlege ich das und sollte ich nur einen generischen Benutzer für meine App verwenden, das Passwort hartcodieren und Coturn herausfinden lassen, wer mit wem spricht?