モバイルアプリケーションを構築しています (PhoneGap/Cordova を使用)。私のアプリを使用するには、クライアントは facebook で認証する必要があります。
私のwcfサービスを保護するために、そのfacebook認証メカニズムを使用したいと思います。私はそれを次のように使用することを考えていました:
最初の登録:
- クライアントが facebook にサインインし、アクセス トークンを取得する
- クライアントが自分の wcf サービスにアクセス トークンを送信する
- 私のサービスでは、アクセス トークンを拡張し (長寿命のトークンを取得するため)、新しいメンバーの新しいレコードを使用して DB に格納します。
- 拡張トークンとメンバー ID を使用してクライアントに応答を送信します
- クライアントはトークンとメンバー ID をモバイル デバイスに保存します
クライアントがアプリケーションに入るとき:
- クライアントが faceebok にリダイレクトする
- facebook による認証が失敗した場合 (さまざまな理由が考えられます)、彼は私のアプリケーションを再承認します。
- Facebook は新しいトークンを使用してクライアントをアプリケーションにリダイレクトします
- (デバイスに格納されているトークンと比較して) トークンが変更されていない場合は、ブレークします。
- クライアントは私の wcf サービスに古いトークン + 新しいトークンを送信します
- wcf は、受信した古いトークンと db に格納されているトークンを (メンバー ID を使用して) 比較してクライアントを識別し、等しくない場合は例外を発生させます。
- 私のサービスでは、アクセス トークンを拡張し (長寿命のトークンを取得するため)、DB に保存します。
- 拡張トークンを使用してクライアントに応答を送信します
- クライアントは、モバイル デバイスで古いトークンを新しいトークンでオーバーライドします。
モバイル アプリケーションから wcf サービスへのすべての要求に対して:
- クライアントはリクエストを送信し、渡される最初のパラメーターは、デバイスに保存されている facebook トークンです。2 番目のパラメーターはメンバー ID です。
- wcf は、受信したトークンと db に格納されているトークンを (メンバー ID を使用して) 比較してクライアントを識別し、等しくない場合は例外を発生させます。
- リクエストを処理する
結論として、クライアントの識別に facebook トークンを使用しました。さらに、ネットワーク レベルでのセキュリティ保護に SSL を使用できます。これは良いアプローチですか?ご協力ありがとうございました。