2016-06-22 13 views
5

これらのコードスニペット(firebase doc)では、バックエンドサーバでの認証にuser.getUid()を使用していません。代わりにFirebaseUser.getToken()を使用してください。firebase認証でバックエンドサーバとの認証にgetUid()を使用できない理由

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
if (user != null) { 
    // Name, email address, and profile photo Url 
    String name = user.getDisplayName(); 
    String email = user.getEmail(); 
    Uri photoUrl = user.getPhotoUrl(); 

    // The user's ID, unique to the Firebase project. Do NOT use this value to 
    // authenticate with your backend server, if you have one. Use 
    // FirebaseUser.getToken() instead. 
    String uid = user.getUid(); 
} 


getUid() A unique user ID, intended as the user's unique key across all providers. 
getToken() The Firebase authentication token for this session. 

私の要件はです。

  1. まず、ユーザーにfirebase認証方法(電子メールとパスワード)を登録します。
  2. 私は文字列を保存しますuid = user.getUid();登録が成功すると自分のバックエンドサーバーで
  3. ユーザークレジット情報は、ユーザーの残高がキーuser.getUid()として自分自身のバックエンドサーバーに保存されていると言います。
  4. ユーザーは電子メールとパスワードでサインインし、彼の残高を尋ねます。
  5. firebaseからuser.getUid()を取得し、一致するレコードがユーザーにバランスを返す場合は、自分のレコードと一致させます。

getUid()は一意のユーザーIDですが、この値を使用してバックエンドサーバーで認証しないでください。

なぜですか?バックエンドサーバーでの認証にgetUid()を使用できないのはなぜですか?

+0

質問に対する回答が見つかりましたか?私はまったく同じことをやろうと思っています。私たちが持っている考え方のプロセスには問題はありません – Snake

答えて

9

uidは、ユーザーの一意の識別子です。したがって、ユーザーを識別している間は、ユーザーを認証しません。

私のスタックオーバーフローIDは209103であるというのは簡単なことです。それを知っていると分かります。しかし、あなたがFrank van PuffelenであることをStack Overflowに証明するには、あなたが私の資格情報を知っていることが必要です。

ユーザーのIDがインターフェイスで頻繁に公開されています。たとえば、自分のプロフィールをクリックすると、自分のIDが表示されます。これは私を識別するために必要です。同じIDを使用して認証する場合は、一度プロファイルを見たことのある人が誰でもそのサイトであなたを偽装する可能性があります。セキュリティに関しては良い考えではありません。

+2

あなたの応答に感謝し、私はあなたの意見を理解しています。私の要求に応じて、私はgetUid()を使用してユーザーを特定します(それらがfirebaseシステムで認証された後)。私のバックエンドサーバーでユーザークレジット情報として認証されると、私はこの認証されたユーザーのgetUid()を取得し、自分のDBのgetUid()に対してレコードを検索し、彼に提示します。私の質問は、私はこのプロセスでセキュリティホールを持っていますか? – user3559471

+0

@Frank、well actulally "NewPostActivity" final String userId = getUid():のFirebaseデータベースサンプルのgetuid()コメントを明確に理解できません。 getUidどのようにして毎回一意にすることができますか? – mehmet

+0

@ user3559471サーバーはそのアプリケーションを信頼できません。サーバーは正しいUIDを報告したアプリをどのように知っていますか?サーバーはトークンIDを使用して、アプリケーションの整合性にある信頼を制限することができます。サーバーは、最近、薄い空気から引っ張られるのではなく、ユーザーが火災基地から最近取得したことを確認した後、トークンからuidを取得します。 – user650881

関連する問題