1

私はFirebaseデータベースを使用していますし、Firebaseデータベースセキュリティルールが認証済みREST APIに適用されないのはなぜですか?

".write":false 

をテストするための1つのセキュリティルールが常に真である読み込み設定しました。

クライアント側のSDKをAndroidアプリに書き込むと、書き込みはデータベースのどこでも期待通りに拒否されます。

ただし、認証されたREST APIのパッチリクエストを使用してどこにでも書き込むと、常に成功します。 (資格は、サービスアカウントを使用して、十分なスコープで生成された)ん

 //googleCredAhmedabad and scopedAhmedabad are GoogleCredential objects 

     InputStream is = getServletContext().getResourceAsStream("/WEB-INF/firebaseauth/myserviceaccountfile.json"); 

     googleCredAhmedabad = GoogleCredential.fromStream(is); 

     scopedAhmedabad = googleCredAhmedabad.createScoped(
       Arrays.asList(
         "https://www.googleapis.com/auth/firebase.database", 
         "https://www.googleapis.com/auth/userinfo.email" 
         ) 
       ); 

     scopedAhmedabad.refreshToken(); 

     String myToken = scopedAhmedabad.getAccessToken(); 

は、REST API呼び出し切り札セキュリティルールを認証し、次のよう

トークンが生成されますか?

+0

おそらく、セキュリティールールは、クライアント側(androidとios)とWebサイドのSDHにのみ適用されます – Kushan

答えて

2

それはFirebase Documentationに記載されて:

認証リクエストパラメータがFirebase リアルタイムDatabaseルールによって保護されたデータへのアクセスを可能にし、すべての要求タイプによってサポートされています。 の引数は、Firebaseアプリのシークレットまたは認証 トークンのいずれかにすることができます。これについては、ユーザ認証セクションで説明します。

認証済みのREST APIを使用していると言われていますので、authパラメータが設定されていると仮定しています。つまり、セキュリティルールは認証されたREST APIには適用されません。

+0

予期しないので、authトークンなしでテストしただけです。私は、サービスアカウントを使って作成されたデフォルトの資格情報は、adminsdkのような完全な管理者権限を持っていると思います。そして、adminsdkとは違って、可能なオーサライドはありません:)何らかの形で、その部分がドキュメントにありませんでした。 – Kushan

関連する問題