0

私の調査では、さまざまなソースに出くわしましたが、どういうわけか、どちらの側がプライベート API キーを生成しているか、もう一方の側がそれをどのように取得しているかを確認できませんでした。

多くの人が Amazon S3 Restful API をロール モデルとして推奨しています。そのため、それが理解できれば、自分の目的のために似たようなものを作成できます。

Amazon の S3 REST API。

たとえば、このはプロセスを非常にうまく説明していますが、説明に失敗しています。どちらの側が API キーを生成しているのでしょうか? ユーザーのサインアップ時に、プライベート API キーを生成し、それをデータベースのユーザー ID に割り当てるのはサービス側ですか?

ただし、この場合、サービスが実際に署名を検証できるように、クライアントは各リクエストの署名を作成するために API キーを知る必要があります。では、双方が秘密 API キーを取得するにはどうすればよいでしょうか。

私の場合、RESTful API サービスと通信するクライアントとして iPhone アプリと AngularJS Web アプリを使用します。

どうもありがとう、

4

1 に答える 1

-1

まず、クライアントに鍵を渡したくありません。一般に、これはセキュリティ上の悪夢です。(また、キーの作成が反映されるまでに数時間かかる場合があります。また、各キーのアクセス許可を管理する必要があります。) したがって、すべての署名はサーバーによって行われ、キーがサーバーから離れることはありません。

サーバーに S3 キーを持たせたいが、クライアントに何かを実行する権限を与える署名付きリンクのみを返す (特定のファイルを取得する、またはファイルを PUT する)。これはちょっとマザー・メイ・アイ・ゲームに似ています: クライアントは「S3 署名付きリンク」を要求し、S3 と通信して 1 つのことを行うことができます。サーバーは些細な作業を行っているため (リクエストが承認されていることを確認し、署名付き URL を返す)、かなりうまくスケーリングできます。

「ファイルの一覧表示」や「ファイルの削除」など、サーバーが S3 を呼び出して (つまり、クライアントからの Web リクエスト内で S3 に Web リクエストを行う)、結果をクライアントに返す方がよい場合があります (署名されたリンクをいじる代わりに)。ただし、これを行うと、適切なテクノロジを使用していない限り、スケーリング時に問題が発生する可能性があります。(つまり、node.js のようなイベント サーバーが必要です)

PUT リクエストの場合、署名付きリンクは事前に多くのもの (ファイル タイプなど) を指定する必要があることに注意してください。AWS の仕様を注意深く読む必要があります。

困惑した代理の問題に注意してください。あなたのコードには、すべてのユーザーのファイルを見ることができる 1 つのキーがあるため、ユーザー間のセキュリティはあなたの責任です。

于 2013-05-18T20:02:30.797 に答える