2

すべてのリクエストで「Api-Key」を必要とし、すべての認証済みリクエストでユーザーの「AccessToken」を必要とする API があります。現在、ユーザーがログインすると、「AccessToken」が返され、それ以降の各リクエストで送信されます。

私の質問は、この API を使用する現在の Web サイトのワークフローに関するものです。注 - Web サイトと Api は異なるソリューション/アプリ ドメインにあり、現在は同じボックスにありますが、後でそうなるとは思えません。

現在、Web サイトは MVC コントローラー/アクション メソッドを介して Api にすべての要求を行います。最初は、クライアント側のすべてのリクエストを実行するために大量の jquery を作成する必要なく、これが起動して実行する最も簡単な方法だと思いました。さらに、サーバーはその Api-Key を認識し、Ac​​cessToken が保存されているフォーム認証を使用します。

Web サーバーをスキップして Jquery から WebApi に直接移行すれば高速になることは誰もが知っていると思いますが、このプロセスの最初のレビューで、認証に関する問題に遭遇しました。

最後に質問:)

before send を ajax で使用してヘッダーを変更できることはわかっていますが、アクセストークンと Web サイトの API キーをクライアント側に安全に送信してこれを送信するにはどうすればよいでしょうか?

間違っている場合はお知らせください。ただし、Razor を使用して ViewData / ViewBag を使用し、それをビュー内の JavaScript に変換すると、AccessToken と Api-Key がそこに座って、ビューソースを実行するときに世界が確認できるようになりますか?

現時点の

Jquery -->  MVC Action -->  WebApi

もっと早く

Jquery -->  WebApi

そこにあるほとんどのApiラッパーがMVCコントローラー/アクション内から使用されていることに気付きました。したがって、実際には、それを行う方法が正しい方法であると考えていますか?

乾杯

4

1 に答える 1

1

API キーを秘密にしておく必要がある場合は、クライアントから遠ざける必要があります。

そのままプロキシを使用し続ける必要があると思います。クライアントからサーバーへの通信を保護する必要がある場合はそうしますが、API キーをクライアントに直接公開しないでください。

アクセス トークンの存続期間が短く、API が提供するメソッドに厳重なセキュリティが必要ない場合は、アクセス トークンを使用して簡単に公開し、API キーをサーバー上で非表示にすることができます。

いずれにせよ、あなたはそのままプロキシしていると思います。クライアントからサーバーへの通信をどの程度厳密に保護するかという問題です。サーバーから API までは、そのままで実装することも、適切と思われる別の方法で実装することもできます。

それを超えて、私はあなたのコントローラーをできるだけ愚かにしておくことをお勧めします. API 呼び出しを行うサービス レイヤーに足の負担を任せましょう。

于 2012-12-19T04:37:39.110 に答える