web-dev-qa-db-ja.com

バックエンドAPIを保護するための最先端のアプローチは何ですか?

範囲

現在、バックエンドを開発していますREST APIは少数のMVCアプリケーションで使用されます。この場合、サーバー間通信のみについて話しているため、ユーザーが直接APIを使用することはありません。環境は純粋にWindows Server上にあり、現時点ではActive Directoryを使用する計画はありません。


サーバーアプリケーション(MVC)をバックエンドAPIに対して認証する最良の方法は何ですか?

すべてがhttpsを介して行われることを考慮して、現時点では(基本/ベアラを介した)クライアント証明書またはトークンベースの認証のいずれかを考慮します。

これらのアプローチの両方で、多くの長所と短所が浮かび上がります。私は本当にあなたの助けを確認し、修正し、場合によってはそれらを補完してほしいと思います。

トークンベースの認証

  • 他のパーツにも使用する場合に備えて、適切にスケーリングします
  • クライアント証明書なし(インストール、更新)

クライアント証明書認証

  • 企業環境で広く普及
  • よく確立された
  • 管理可能なクライアント数
  • 多くの人が最も安全なオプションの1つと見なしている
  • 単一障害点なし(自己ホストIDサーバー)

結論

私はいくつかの重要なものを忘れてしまったと確信しています。どんな種類の入力にも感謝します。

さらに、どのアプローチより上のスコープを選択した場合、どのアプローチを選択しますか?

2

私のアドバイスは、フロントエンドサーバーとバックエンドサーバーの間の認証について心配するのではなく、それらの間に安全なチャネルをセットアップすることです。アーキテクチャの観点から見ると、これはそれらすべてのサーバーを同じセキュリティゾーンに設定し、バックエンドへの外部アクセスを防ぐことを意味します。その後、1つのフロントエンドサーバーがバックエンドにリクエストを送信すると、ユーザーIDが渡されるだけで、バックエンドはそれを信頼します。これは、リクエストが信頼できるサーバーからしか送信できないためです。

これは中規模から大規模の計算センターでは一般的です。ユーザー認証はMVCサーバーによって行われるか、リバースプロキシによるX509証明書認証の場合に行われます。他のサーバーは、最初のサーバーがリクエストに入力した内容を信頼します認証。

1
Serge Ballesta