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