
以下に説明する特定の認証方法を使用する HTTP 経由のビデオ ストリーミングを作成できるようにしようとしていますが、これにどうアプローチすればよいかわかりません。
現在、私は Motion パッケージを使用しています。このパッケージを使用すると、ローカル カメラからのビデオ ストリームをインターネット経由で簡単に転送できます。また、ユーザー名とパスワードによる認証も提供されます。ただし、私の使用例では、これは理想的ではありません。
私のアイデアは、オンデマンドでユーザーにリンクを提供して、一定時間内にストリームに繰り返しアクセスできるようにすることです。理想的には、これは URL パラメータの形式のトークンになります (https://www.link.com/stream?authId=FGJNDKD1256DD) では、このトークンを持つ人なら誰でも他の承認なしにストリームに接続できますが、トークンも 1 時間後に期限切れになります。
これを実現する方法を誰か知っていますか? カスタム トークン生成と認証処理を備えた独自の Web アプリケーションを作成する必要がありますか? それとも、そのような種類の認証をすぐに提供できる Web サーバーはありますか?
ありがとう
答え1
必要なビデオ ストリーミング認証方法を実現するには、カスタム ソリューションを実装する必要がある場合があります。 考えられる 1 つの方法は、ビデオ ストリームへのアクセスを要求するユーザーごとに一意のトークンを生成し、そのトークンを有効期限に関連付けることです。
これを実装するには、次の手順に従ってください。
- ランダムなトークン文字列を生成する: Python の uuid などのライブラリを使用して、一意のトークン文字列を生成できます。
- トークンとその有効期限を保存します。この情報は、SQLite や MySQL などのデータベースに保存できます。ユーザーがビデオ ストリームへのアクセスを要求するたびに、トークンをデータベースと照合して、その有効性と有効期限を確認できます。
- ビデオ ストリーミング用のカスタム エンドポイントを作成する: トークンをパラメーターとして受け入れ、それをデータベースと照合するカスタム エンドポイントを作成できます。トークンが有効で期限切れでない場合、エンドポイントはビデオ ストリームを返すことができます。トークンが無効または期限切れの場合、エンドポイントはエラー メッセージを返すことができます。
- ビデオ ストリームを提供する: NGINX などの Web サーバーを使用してビデオ ストリームを提供できます。NGINX は HTTP ライブ ストリーミング (HLS) をサポートしており、MP4 や MPEG-TS など、さまざまな形式でビデオを提供できます。
全体として、このアプローチではプログラミングとデータベースの設定が必要になりますが、必要な特定の認証方法を提供できるようになります。
答え2
UUID や GUID などの一意の ID、または時間 + ソルト値を含むハッシュ ユーザー名を指定します。作成時にそのキーを有効期限付きのルックアップ テーブルに保存します。
URL がキーで渡され、キーが検索されますが、有効期限が切れている場合は、キーは考慮されません。
有効期限が切れたキーのテーブルを定期的に消去します。