0

へのアクセスを拒否しFirebaseストレージセキュリティルールを取得:カント私は何かのWRT Firebaseストレージルールを欠けていると確信しているが、私は次のことをやったファイル

STEPを1

まず私が設定次Firebaseストレージルール:私は唯一のカスタム要求をユーザーに署名した予想

service firebase.storage { 
    match /b/{bucket}/o { 
    match /items/{dev_key}/{perm_id}/{file_name} { 
     allow write: if request.auth.uid == dev_id; 
     allow read: if request.auth.token.permId == perm_id; 
    } 
    } 
} 

allow read: if request.auth.token.permId == perm_id;、ファイルをダウンロードできるようにするには、関連する場所にマッチpermId。だから、

、次のように私は、ユーザーにcustom claim in Cloud Functionsを設定します。

STEP 2

admin.auth().setCustomUserClaims(uid, {permId: '1'}).then(() => { 
     // send off some triggers to let user know the download is coming 
     admin.database().ref(`collection/${uid}/${itemId}`).update({ 
      downloadReady: true 
     }); 
    }); 

を次に私は、ユーザーに署名し、再びに戻って署名した...カスタム要求を設定しています。 私は次のように彼らはクラウド機能に設定されたことを確認:

STEP 3

admin.auth().verifyIdToken(idToken).then((claims) => { 
     console.log("--------------claims -------------"); 
     console.log(JSON.stringify(claims)); 
    }); 

をそして、私はクライアント側では...クレーム列にpermID: "1"

を見た私は、downloadURLを要求しました(ここでうまくいけばうまくいけば間違っています)...これは公開ダウンロードURLではなく、Firebase StorageのセキュリティルールがチェックするダウンロードURLであることを期待しています。

ステップ4

私はこの呼び出しから受け取った
var pathReference = storage.ref('items/<some-key>/1/Item-1'); 

pathReference.getDownloadURL() 
.then((url)=>{ 
    console.log("url: ", url); 
}) 

URLは私にこのリンク https://firebasestorage.googleapis.com/v0/b/emiru84-games.appspot.com/o/games%2FcfaoVuEdJqOWDi9oeaLLphXl0E82%2F1%2FGame-1?alt=media&token=45653143-924a-4a7e-b51d-00774d8986a0 (私がテストに使用小さな小さな画像)

を与えたこれまでのところは良い、正しい主張を持つユーザーは、これを表示することができましたimage

次に、ステップ2を繰り返しますが、この場合はpermIdを「0」にしてログアウト/ログインし直してください。私は、ユーザーが正しいカスタム要求をもはや持っていないため、以前に生成されたURLが機能しなくなることを期待していました...バケットの場所はまだ同じ場所(バケット/ dev_key/1/filename)

手順4を繰り返した場合、新しいURLが取得され、適切な403エラー応答が返されます。しかし、古いURLはまだ働いていました(私は、トークンパラメータが付けられている限り)。もしそうならば、ダウンロードURLが公開されていれば、ストレージのセキュリティールールがどのように変わるのか分かりませんか?

私の霧の脳をクリアする助けがあれば幸いです。

答えて

1

Cloud Storage for FirebaseのダウンロードURLは、常に公開されています。セキュリティルールの影響を受けません。

ファイルへのパブリックアクセスを許可しない場合は、そのダウンロードURLを取り消すことができます。

+0

完全に感謝します。とても有難い。 –

関連する問題