エンド・ツー・エンドの暗号化

このトピックでは、React Native 向けの Vonage Video Client SDK におけるエンドツーエンド暗号化の使用方法について詳しく説明しています:

エンドツーエンド暗号化の概要については、以下を参照してください。 本題.

暗号化シークレットの設定

エンドツーエンド暗号化されたセッションは、サーバーAPIを使用して作成されます(参照: REST APIを使用して暗号化を有効にする).React Nativeクライアントがエンドツーエンドの暗号化セッションに参加するには encryptionSecret の支柱である。 OTSession コンポーネントを使用している:

<OTSession
  apiKey="api-key"
  sessionId="session-id"
  token="token"
  encryptionSecret="initial-encryption-secret"
>
  <OTPublisher />
  <OTSubscriber />
</OTSession>

有効な秘密は8文字以上256文字以下の文字列である。

を設定することでシークレットを変更できます。 encryptionSecret プロパティをReactステートのプロパティに指定し、その値を変更します:

<OTSession
  apiKey="api-key"
  sessionId="session-id"
  token="token"
  encryptionSecret={this.state.encryptionSecret}>
>
  <OTPublisher />
  <OTSubscriber />
</OTSession>

イベントとエラー

イベントとエラーは、ユーザー主導の暗号化の動作を管理するために不可欠である。エンドツーエンドの暗号化は、共有秘密モデルを使用します。セッション内の全員が、自分のメディアを暗号化し、他の全員のメディアを復号化するために、同じ秘密を使用することが期待されています。

OTSubscriber error() イベントハンドラーコールバックは、暗号化シークレットの不一致(または未設定)が原因でサブスクライバーがストリームのメディアをデコードできないときに呼び出される:

  <OTSubscriber
    eventHandlers={{
      error: event => {
        // Show UI notification.
      },
    }}
  >

OTSession error() クライアントが、無効な暗号化シークレット(または暗号化シークレットを指定せずに)で初期化されたエンドツーエンド暗号化セッションに接続しようとすると、イベントハンドラのコールバックが呼び出されます。 有効なシークレットは、8文字から256文字の文字列です。最適なユーザー体験を実現するため、アプリケーションは、OTSessionを設定する前に、ユーザーが指定した無効なシークレットを捕捉する必要があります。 encryptionSecret prop。次の例では、空の(したがって無効な)シークレットを使用してセッションが初期化されているため、接続を試みるとエラーが発生します:

<OTSession
  apiKey="api-key"
  sessionId="session-id"
  token="token"
  encryptionSecret=""
  eventHanders={{
    error: event => {
      // An error event is dispatched if you set an invalid encryption secret
    }
  }}
>
  <OTPublisher />
  <OTSubscriber />
</OTSession>