ASP.Net Web API を保護する方法について、私は多くのことを読みました。これは非常に紛らわしく、ドキュメントは必ずしも明確ではありません。これは重複した質問かもしれませんが、SO での検索では 100% 何も見つかりませんでした。
サードパーティに Web API へのアクセスを許可したい場合は、OAuth のようなものが必要です。私は OAuth を使った例をたくさん読んできましたが、読んだ後、これは私の進むべき道ではないと確信しました。他の誰かに API へのアクセスを許可したくありません。
これが私のシナリオです。バックエンドには ASP.Net MVC 4 と Web API を使用しました。Angularjs を使用して、フロント エンドで SPA Web アプリを作成しました。ユーザーは自分でログインし、システムを使用できます。私は、第三者が私たちの API に対して何かを開発することを決して許可したくありません。ただし、Web API はセッションの必要性を排除するため、魅力的です。これは、Web サーバーがビジー状態になった場合でも、より適切にスケーリングできることを意味します。
HTTP 基本認証について読んだことがありますが、それはすべての要求を有効にする必要があることを意味します。ユーザー情報が DB にある場合、または何らかのネットワーク サービスの背後にある場合、呼び出しごとに余分な IO が発生するため、問題があるように見えます。トークンを取得したら、サーバーはすべての呼び出しでいくつかの計算を行うだけでよいという考えを好みます。
ASP.Net MVC Angularjs テンプレートは、通常の形式の認証 (Cookie) と HTTP 偽造防止トークンを使用します。私はこのアプローチを喜んで使用しますが、最近、ブラウザーで Cookie を削除する動きがありませんでしたか? それとも、デフォルトで Cookie を無効にして、ユーザーが有効にする必要があったのでしょうか? (つまり、オプトアウトではなくオプトインします)。
私は OAuth のアイデアが気に入っています。なぜなら、トークンにはユーザーがどのロールに属していたかなどのクレームを含めることができるからです。クッキーにも保存されない限り、フォーム認証にロール情報がどのように含まれるかはわかりません。
更新:(私が何を求めているのかが明確ではなかったため、終了する投票に基づいています)
Web API に着信する AJAX 要求を認証し、ロールの承認を行う最も簡単な方法は何ですか? 第三者へのアクセスを提供する必要はありません。