1

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

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

POST 署名付きリクエストからユーザー ID を取得し、それをセッションに保存する方法はわかりますが、それは正しくないようです。それよりもバロックではない、これを安全に行うための方法があると確信しています。

アイデア?

4

1 に答える 1

1

サーバーにはサーバー側認証を使用する必要があります。

ユーザーがアプリをロードし、まだ認証していない場合は、認証ダイアログに送信します。彼が戻ってきたら、Facebook サーバーと交換してアクセス トークンを取得するコードを取得します。その後、グラフ API に " /me" を実行してユーザー データを取得します。これは Facebook サーバーから取得するため、問題ないことがわかっています。

さらに、facebook がキャンバスの URL に投稿すると、アプリのシークレットを使用して署名された署名済みのリクエストが取得されます。それをデコードした後、シークレット キーと照合して信頼性を確認できます。さらに、署名されたリクエストにはユーザー ID があるため、それも保護されていることがわかります。

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

于 2012-05-09T20:44:20.563 に答える