モバイルアプリのバックエンドに取り組んでおり、ASP.NET MVC 4WebApiを使用してRESTfulAPIを構築しています。アプリはiOSとAndroidで動作します。私のユーザーは自分のFacebookアカウントでのみログインでき、ログインした場合にのみ、すべての機能を使用できます。
私はモバイルアプリの経験があまりないので、それは設計上の問題です。2つのシナリオ(または3つ目のシナリオ)のどちらが、Facebook認証の責任者についてあなたにとってより良い設計だと思われますか。
- モバイルクライアントが責任を負います。バックエンドにアクセスせずに、Facebookと直接通信し、ユーザーが自分の資格情報を入力できるようにします。Facebookからトークンを取得すると、初めてバックエンドにアクセスし、すべてのリクエストでトークンを渡します。
- バックエンドAPIが責任を負います。モバイルクライアントは、そこからリソースにアクセスしようとします。バックエンドはクライアントから認証トークンを取得しないため、Facebookログインにリダイレクトします。ユーザーがクレデンシャルを入力すると、Facebookはトークンを渡してバックエンドに返信します。次に、バックエンドは、目的のリソースに関するクライアントの応答に喜んで応答します。
もちろん、2番目のシナリオは、バックエンドがDotNetOpenAuthなどのパッケージを使用してOAuthを処理する必要があることを意味しますが、1番目のシナリオでは、これらはすべてモバイルクライアントで発生します。