1

Ruby on Rails を使用して Web サーバー アプリケーションを開発し、Android を使用してクライアント アプリケーションを開発しています。Web サーバーには、認証なしでクライアント アクセスへのいくつかのルートがあります。リクエストがクライアントからのものかどうかを確認するためのトークンを作成することを考えました。次のような解決策を想像します。

  1. 「stackoverflow;」などのキーを作成します。
  2. このキーをクライアントとサーバー アプリケーションで共有します。
  3. ランダム文字列生成関数 + キーを使用して AES 暗号化を使用してトークンを生成します。
  4. クライアント アプリがサーバーにリクエストを送信するときは、生成されたトークンも送信します。
  5. サーバーは、共有キーと AES 暗号化を使用して、トークンが有効かどうかを検証します。

ここに私の疑問があります:

  1. これは彼らの間のコミュニケーションを発展させるための最良の方法ですか?
  2. 両方のシステムで使用する gem/api の暗号化と復号化はありますか?

私を導くための提案や例を説明することを躊躇しないでください =)

前もって感謝します

4

1 に答える 1

2

より安全で標準的な方法は、SSL クライアント証明書を使用することです。

アプリのすべての新しいバージョンに対してクライアント証明書を発行し、あなたまたはあなたの署名 CA だけが秘密鍵を持っている証明書 (つまり、CA 証明書) を使用して署名されていることを確認してください。

接続を許可する前にクライアント証明書を要求するように Web サーバーをセットアップします。保持している CA 証明書と照合して証明書を検証するように Web サーバーを設定します。

この方法では、アプリから抽出できる「共有秘密」はありません。誰かがクライアント証明書を抽出して盗んだ場合は、新しい証明書を使用してアプリの更新バージョンを発行し、次に古い証明書を CA の失効リストに追加するか、Web サーバーにその特定の証明書をブロックするように指示します。

ruby、java、javascript コードを書く必要はありません。

于 2013-03-02T20:29:18.817 に答える