2012-05-09 2 views
1

JS APIのFB.loginメソッドは、ユーザーIDを含むユーザー情報の辞書を含む応答を返します。それはJS APIのクライアント側に存在します。ユーザーIDのJS APIログインの保証?

これがfacebokキャンバスアプリを実行しているサーバーに返される場合、サーバーはユーザーIDが改ざんされていないことを信頼する必要があります。応答で返される署名付きチェックサムがないので、これがどのように保証されるかはわかりません。

POSTで署名されたリクエストからユーザーIDを取得してセッションに格納する方法を確認できますが、それは正しいとは思われません。私はこれを安全に行う方法があると確信しています。それはそれよりもバロックではありません。

アイデア?

答えて

1

サーバーにはServer-Side authenticationを使用する必要があります。

ユーザーがあなたのアプリケーションを読み込んでまだ認証していないときに、彼は認証ダイアログに彼を送ります。返信すると、アクセストークンを返すためにfacebookサーバーと交換するコードが得られます。グラフのapiを "/ me"にしてユーザーデータを取得します。

さらに、あなたのキャンバスのポストへのポストのURLが、あなたのアプリシークレットを使って署名された署名入りのリクエストを受け取ったときに、デコードした後にあなたの秘密キーと照合して真偽を確認することができます。 さらに、署名された要求にはユーザーIDが含まれているため、セキュリティで保護されていることもわかります。

サーバーサイド認証とクライアントサイド認証の両方を使用することをお勧めします。異なるトークンを取得します(サーバーの長さは60日で、クライアントは数時間です)。

関連する問題