2016-12-11 5 views
0

Firebaseのドキュメントには、によってストリーミングビデオの場合、obtaining a downloadable url<video>タグのストリーミングビデオ用)がすべてのストレージ参照で行われることが提案されています。したがって、SDKを介してクライアント要求に適用されるセキュリティルールを設定することができます。firebase-storageのダウンロード可能なURLの認証を強制します

しかし、受信したダウンロード可能なURLは、認証が必要ない任意のクライアント/デバイスに公開されているようです。

このようなユースケースに対してセキュリティ認証を実施する方法はありますか?コンソールでパブリックURLを手動で取り消すことができますが、それはスケーラブルな解決策ではなく、安全でもありません。

答えて

1

Firebaseストレージからファイルをダウンロードするには、2つの方法があります。

  • gs://bucket/object
  • https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<UUID>

は、前者は内部基準で、経由でファイルをアップロードし、ダウンロードするために使用することができます私たちのSDK。これらは、Firebase AuthenticationとFirebase Storage Securityのルールによって保護されています。アプリケーション内で、アプリケーションのユーザーによって使用されるように設計されています。

後者は外部参照であり、通常はアプリケーションの外部で共有されたファイルをダウンロードするためにのみ使用できます。これを共有しているユーザーはアプリケーションの外部にあるため、認証できる方法がないため、承認はあまり面白くありません。

私たちが提供する許可は、「彼らは長い疑わしいトークンを持っていますか?」ということです。これは、ファイルを共有する権限を持つ誰かが許可を与えたことを意味します。これは一般に、特定のクレーム(URLの有効期間、有効な操作など)を伝えるために使用される暗号署名のため、「公開された、推測できないURL」または「署名されたURL」として知られています。

「内部」のアプリユーザーだけが使用できる「外部」表現を作成することにはほとんど意味がないと考えていますが、ご同意いただけない場合はユースケースを聞くことができます。

+0

ありがとうございました。私のユースケースはシンプルです。私はビデオオンデマンドサービスを希望しています。つまり、firebase認証時にのみビデオURLを提供します。したがって、認証されたユーザーは、ソースから直接ビデオURLをコピーして渡すことができます。トークンを手動で取り消すことはスケーラブルなソリューションではありません。 – tomper

+0

うん、ちょうど基本的にこれである最初の方法を使用してください。 –

+0

@MikeMcDonaldが言ったことを追加するだけです。 Googleが明らかにこのシステムを信じているのは、ファイル共有システムがどれだけ機能しているかということです。 Google Photsはそうした例の1つです。これを説明する興味深い記事は次のとおりです。[link](https://www.theverge.com/2015/6/23/8830977/google-photos-security-public-url-privacy-protected) –

関連する問題