REST APIを搭載した小さなモバイルアプリケーション(AndroidおよびiOS)と少しのバックエンドサーバーを構築したいと考えています。私のサーバーに安全なFacebook認証を提供する
私のアプリのユーザー(アンドロイドまたはiOS)はFacebookにログインする必要があります。私はfacebook mobile sdkを使ってそれを行います。ログインが成功すると、facebook sdkはauthentificationsTokenを返します。これはユーザーのスマートフォンに表示されます。
アイデアは次のとおりです。 私のアプリケーションには何らかのデータが必要なときはいつでも、アプリケーションはHTTPS経由でサーバーバックエンド(REST)に接続します。例:アプリケーションは簡単なHTTP GETを作成し、取得したFacebook認証トークンを渡します。 My Serverはこのfacebook authenticationTokenを取得し、このトークンを使用して、ユーザーが認証されているかどうかを判断し、Facebookのプロフィール情報(firstname、lastnameなど)を取得します。したがって、サーバーはFacebookにも連絡し、HTTP GET Requestのためのパーソナライズされた応答を生成します。
私の質問は以下のとおりです。それは、サーバーが正しい関連付けられているFacebookのユーザーを取得するために、それぞれのREST API呼び出しのために、このfacebookAuthenticationトークンを渡すことが本当に十分な
- ですか?
- 私はHTTPSを使用しているので、接続は十分に暗号化されていると思いますか?
- 私はいくつかの署名メカニズムが必要だと思うので、facebookAuthenticationトークンが私のモバイルアプリケーションからのみ送信されたことを確認するために、各REST API呼び出し(HTTPS経由)に署名してください。私はSHA-1でRSAを使ってREST APIコールに署名することでそれを行います。しかし、このアプローチの問題は、クライアントが秘密鍵をアプリケーションのどこかに(署名要求のために)保存する必要があり、サーバが公開鍵を知っている(署名一致のため)ということです。これは正しいです?はいの場合は、モバイルアプリ(特にアンドロイド)をデコンパイルして秘密鍵を取得できるため、大きなセキュリティ上の問題と思われます。この秘密鍵をアプリに安全に保存するにはどうすればよいですか?あなたがお勧めできる署名システムがありますか?
Bt:iOSとAndroid用の優れたRSAライブラリをご存知ですか?