2

Coturn を使用してプロジェクト用に TURN サーバーをセットアップしようとしていますが、ドキュメンテーションはせいぜい大ざっぱです...

これを行うツールがあることはturnadmin承知していますが、データベースに対して直接クエリを実行することを強く望んでいます。これは潜在的に多くのユーザーを持つアプリであり、その共有キー (hmackeyturnusers_lt) は変更される可能性があります (アプリとパスワードを共有しないために、アプリは特定の揮発性のユーザー パラメーターのハッシュである「偽の」パスワードを使用します。とても秘密です)。

わずかなドキュメントから、hmackeyレルム、ユーザー名、およびパスワードを使用して計算されることを収集できます。

$ turnadmin -k -u myusername -r my.realm.org -p my-password
> e.g. 0x7a69b0e2b747a4560045f79d171b78c0

私のコードがこれら 3 つのパラメーターを認識しているとすると、hmac ハッシュを作成するにはどうすればよいでしょうか? たとえば、私が持っているPHPでは

string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = false ] )

$algoここでは SHA1 にする必要がありますが、$data(ユーザー/パスの連結など) および$key(レルムなど) にはどのような値が入りますか?

turn_secretレルムの「値」をリストした表もあります。これ$keyは上記の例のように使用する必要があると推測していましたが、キーを追加および変更しても、turnadmin を呼び出したときに同じ結果が得られます。

基本的に、私がやりたいことは(疑似コード)です:

// 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

...そして、クライアントで、$name$coturn_pwを資格情報として使用して TURN サーバーに接続できるようになりますmy.realm.com

それとも、私はこれを考えすぎていて、アプリに汎用ユーザーを使用し、パスワードをハードコーディングして、誰が誰と話しているかを Coturn に認識させるべきですか?

4

2 に答える 2