0

私はfirebaseを初めて使用しています。私は与えられたコードの下に持っている -nodejsアプリケーションのFirebaseセキュリティルール

var config = { 
 
    apiKey: ".....", 
 
    authDomain: "....", 
 
    databaseURL: ".....", 
 
    storageBucket: "...." 
 
}; 
 

 
firebase.initializeApp(config); 
 

 
function writeData(socialType, userName, name, message) { 
 
    database.ref("/" + socialType + "/" + userName + "/").set({ 
 
     name: name, 
 
     message: message 
 
    }); 
 
} 
 
writeData("fb", "Jhon", "booo1", "message1");

私はこれらの種類のセキュリティ規則であるべきだろうか(私はAPIキーとのアクセスを意味し、そして何のログインはありません実際にはfirebase nodejsライブラリに。 firebase.auth() authメソッドが存在しません)。私は匿名アクセスを許可したくないので、有効なapiキーがあればアクセスを許可したい。私はエラーをPERMISSION_DENIED取得このセキュリティ規則について

{ 
 
"rules": { 
 
    ".read": "auth != null", 
 
    ".write": "auth != null" 
 
    } 
 
}

。私は認証していないので、authがないので、おそらく意味がありますが、APIキーを使ってアクセスしてください。

注:私はサービスアカウントを使用したくありません。私はAPIキーを使用してデータにアクセスしたい(リード/ライト)

答えて

1

APIキーはあなたのプロジェクトをFirebaseサーバに限定するだけです。 Firebaseでnode.jsプロセスを認証したり、データベースのどのデータにもアクセスする権限が与えられたりしません。

firebaseを使用してnode.jsプロセスから認証するには、methods outlined in the documentationのいずれかを実行する必要があります。これらのすべてでは、データベースに直接アクセスするか、カスタムトークンに署名するために、何らかの方法でサービスアカウントを使用する必要があります。これは単にサーバー側のプロセスでFirebase認証が機能する方法であり、回避する方法はありません。

+0

私はあなたに少し詳しく説明します。私はCordova(クロスプラットフォーム(アンドロイド/ ios)プラットフォームのモバイルアプリケーションを書くためのjavascriptフレームワーク)を使用しています。だから私は私のアカウント情報を出荷する必要があるので、本当にサービスアカウントを同梱したくないのです。また、私のアプリのユーザーのログインシナリオはありません。私は、アクセストークンタイプのソリューションをもっと期待していました。 –

1

あなたのルールと現在の問題は、次のとおりです。

{ 
 
"rules": { 
 
    ".read": "auth != null", 
 
    ".write": "auth != null" 
 
    } 
 
}

あなたがログインしていないことが表示されますので。ブラウザのコードに適切なapiキーがある場合は、ファイアベースanonymous authを使用してauth!== nullを成功させることができます。

将来的には、信頼性を向上させるために!==を使用することをお勧めします。

関連する問題