2017-02-18 11 views
1

私は、認証されたユーザーだけが使用できるように制限したいサーバールートを構築しています。 POSTでこのルートにuser.uidを送り、Firebaseに存在するUIDを検証したいと考えています。 Firebaseで手動でUIDを追加してこのデータをチェックすることはできますが、Firebase認証がどのUIDを追跡しているかを確認することは可能ですか?私はこのアプローチが自分のリストと照らし合わせてチェックするほうがいいと思う。FirebaseユーザのUIDが有効かどうかを判断する方法はありますか?

これは、これらのルートに偽のUID(悪意のある目的など)でアクセスしないようにするためです。

答えて

1

サーバー上のFirebase Admin SDKを使用すると、特定のUIDがプロジェクトのFirebase認証ユーザーに対応するかどうかを確認できます。 Firebase documentation on retrieving user dataから:

admin.auth().getUser(uid) 
    .then(function(userRecord) { 
    // See the UserRecord reference doc for the contents of userRecord. 
    console.log("Successfully fetched user data:", userRecord.toJSON()); 
    }) 
    .catch(function(error) { 
    console.log("Error fetching user data:", error); 
    }); 
+0

これは私が必要としていたものです。 – skwny

0

A UIDはFirebaseユーザがFirebaseに認証されたユーザが認証されていない場合にヌルであるペイロードの一部です。ユーザー認証時にUIDを取得できます。 。構文はあなたが作業しているどのようなフレームワークによって異なり

具体的な構文と例についてFirebase APIリファレンスをチェックアウト:UIDを検証https://firebase.google.com/docs/reference/

1

は、悪意のあるユーザーをブロックするのに十分ではありません:1)攻撃者ができました他のユーザーのUIDを送信して他のユーザーになりすます、2)UIDが変更されたり期限切れになることはありません。つまり、ユーザー(または攻撃者)に再認証を強制する方法はありません。

必要なのは、クライアントアプリケーションのFirebaseトークンをサーバーに渡し、受け入れる前にトークンを検証することです。

  • トークンはFirebaseの秘密鍵で安全に署名されています。他の誰も有効なFirebaseトークンを発行することはできません。

  • トークンは1時間有効です。 Firebaseサーバは、新しいトークンを発行する前に、アカウントステータス(例えば、パスワード変更イベント)をチェックする。

  • トークンペイロードには、UIDとオーディエンスが含まれています。オーディエンスが自分のアプリケーションであることを確認する必要があります。

Firebase Admin SDKまたはサードパーティのライブラリを使用してFirebaseトークンを確認できます。詳細は、Firebase docを参照してください。

+0

これは確かに良い方法です。私は最初に考えていたものの代わりにこの方法を使用します。 – skwny

関連する問題