そのため、私は現在、Djangoで構築されたRESTAPIにリクエストを送信するモバイルアプリに取り組んでいます。
APIを保護するために、秘密鍵と公開鍵のペア認証システムを使用する予定です。
私が考えたワークフローは次のようになります。
- ユーザーはFacebookを使用してログインします
- ユーザーが署名すると、アプリは秘密鍵を生成します
- 秘密鍵はサーバーとアプリの間で共有されるため、サーバーはその秘密鍵を特定のユーザーにマップすることを認識します。
- モバイルアプリがリクエストを行うたびに、アプリはリクエストパラメーターと秘密鍵を使用してHMAC/署名を生成します。HMACに加えて、アプリはそれを送信したユーザーのuser_idも送信します(これは公開鍵として機能します)。
- サーバーは要求を受信すると、独自のHMACを生成します。user_idを取得し、テーブル内の秘密鍵を検索します。秘密鍵を使用して、要求パラメーターを使用してHMACを再作成し、モバイルアプリが送信したHMACと比較します。サーバーとモバイルに一致するHMACがある場合、サーバーは要求を実行します。
今、私の問題はステップ3にあり、秘密鍵をモバイルアプリとサーバーの間で何らかの方法で共有する必要があります。秘密鍵を安全に送信するにはどうすればよいですか?