2016-08-06 11 views
0

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?

Antwort

0

Wie der HMAC-Schlüssel bauen ist in RFC 5389 beschrieben:

key = MD5 (username ":" Reich ":" SASLprep (Passwort))

wo MD5 in RFC 1321 und SASLprep definiert ist() ist definiert in RFC 4013

Die einzige Tabelle, die Sie aktualisieren müssen, ist turnusers_lt. Die turn_secret Tabelle und der SHA1-Algorithmus werden zum Generieren von time-limited credentials verwendet.

Und natürlich, verwenden Sie vorbereitete Anweisungen, anstatt den SQL-String manuell zu erstellen.