7

coturn - https://code.google.com/p/coturn/を使用して WebRTC アプリ用に独自の TURN サービスを実行するつもりです。マニュアルには、認証と資格情報について次のように記載されています。

   ...

   -a, --lt-cred-mech
          Use long-term credentials mechanism (this one you need for WebRTC usage).  This option can be used with
          either flat file user database or PostgreSQL DB or MySQL DB or MongoDB or Redis for user keys storage.

   ...

このクライアント コードの例は、TURN に資格情報が必要であることも示しています。

// use google's ice servers
var iceServers = [
  { url: 'stun:stun.l.google.com:19302' }
  // { url: 'turn:192.158.29.39:3478?transport=udp',
  //   credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=',
  //  username: '28224511:1379330808'
  // },
  // { url: 'turn:192.158.29.39:3478?transport=tcp',
  //   credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=',
  //   username: '28224511:1379330808'
  // }
];
  • それらは常に必要ですか?(Coturn は認証メカニズムなしで実行できますが、WebRTC が機能するために厳密に必要かどうかは man ページから明らかではありません)
  • 必要に応じて、資格情報を 1 セットだけ作成し、それをすべてのクライアントに使用できますか? (クライアント コードの例は明らかにデモンストレーション用ですが、資格情報をクライアント側のコードにハードコーディングする可能性があることを示唆しているようです。これが不可能/推奨できない場合、適切な資格情報をクライアント側のコード?)
4

1 に答える 1

15

テストの結果、クライアント側のコードが機能するには認証情報を渡す必要があるようです (それ以外の場合は、コンソールにエラーが表示されます)。

Coturn で「no-auth」オプションを有効にしたままにする (または lt-cred-mech と st-cred-mech の両方をコメントのままにする) が、アプリケーション JS で資格情報を渡すことも機能しません。パスワード資格情報。非認証モードで実行されている場合、Coturn はクライアントが認証の詳細を送信することを期待していない可能性があるため、メッセージを解釈する方法がわかりません。

解決

lt-cred-mech を有効にして、ユーザー名とパスワードを Coturn 構成ファイルとアプリケーションの JS の両方にハードコーディングすると、うまくいくようです。Coturn 構成ファイルには、コメント化された「静的ユーザー」エントリがあります。キー形式ではなく、プレーン パスワード形式を使用してください。

Coturn 構成 (これは、私が使用した構成ファイル全体です):

fingerprint
lt-cred-mech
#single static user details for long-term authentication:
user=username1:password1
#your domain here:
realm=mydomain.com

Web アプリ JS からの ICE サーバー リスト:

var iceServers = [
    {
         url: 'turn:123.234.123.23:3478', //your TURN server address here
         credential: 'password1', //actual hardcoded value
         username: 'username1' //actual hardcoded value
    }
];

明らかに、資格情報は誰にでも見えるため、これは TURN サーバーに実際のセキュリティを提供しません(そのため、誰もがそれをリレーとして使用して帯域幅とプロセッサ時間を使い果たす可能性があります)。

要約すれば:

  • はい、WebRTC が TURN を使用するには、長期認証が必要です。
  • はい、誰もが使用できる単一の資格情報セットをハードコードするだけでよいようです.coturnは、2つのクライアントが同じ資格情報で同時に割り当てを取得することを気にしません.
  • 最小限の手間で適切なセキュリティを確保するための 1 つの可能なソリューションは、Coturn がサポートするTURN REST APIです。
于 2014-09-29T23:55:50.733 に答える