2

既知のコンシューマーのみが REST API にアクセスできるようにするために、クライアント アプリケーションは、シークレットを使用して各 HTTP リクエストに署名し、結果の署名をAPI キーと共にサーバーに送信します。

JavaScript クライアントの場合、API キーシークレットはスクリプト自体にハードコーディングされています...では、このメカニズムは、リクエストを送信するクライアントが実際に本来あるべきクライアントであることをどのように保証するのでしょうか? シークレットが JavaScript にハードコードされていると、誰もがそれを見て、シークレットを盗み、他のアプリケーションで使用できるため、私が質問しています。

API を消費者に公開するより安全な方法はありますか? このトピックをカバーする Stackoverflow に他の投稿があることは知っています...しかし、消費者認証とユーザー認証の両方を処理する方法がわかりません。私の場合、コンシューマー認証はサード パーティが API にアクセスできるかどうかを決定し、ビジネス ロジックとは何の関係もありませんが、ユーザー認証はアプリケーション レベルで行われます (つまり、コンシューマーが識別および認証された後)。

4

2 に答える 2

0

グーグルで調べた後、この素晴らしい記事を見つけ、説明されているソリューションを実装しました;-)

于 2014-08-14T18:19:32.837 に答える
0

ドメインを確認し、既知のドメインのみに制限する SOP 設定を提供できます。IPが一定になる場合は、オリジンIPでリクエストをドロップできます。

さらに、クライアントがサーバー上でそこから呼び出して js コードに渡す必要があるシークレット ジェネレーターをサーバー上に持つことができ、そこから API 呼び出しにアタッチできます。このようにして、SOP を使用するクライアントは、js が挿入されていないことを確認できます。応答を提供する前に、クライアントの IP を確認できます。

基本的に、サービスを提供する消費者のタイプによって異なります。彼らはエンタープライズ顧客ですか?

于 2014-08-05T06:24:59.453 に答える