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