0

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 要求を認証し、ロールの承認を行う最も簡単な方法は何ですか? 第三者へのアクセスを提供する必要はありません。

4

2 に答える 2

2

初めに:

でも最近、ブラウザの Cookie をなくそうという動きはなかったですか?それとも、デフォルトで Cookie を無効にして、ユーザーが有効にする必要があったのでしょうか? (つまり、オプトアウトではなくオプトイン)

私の知る限り、永続的な Cookie (または永続的な Cookie) のみがオプトインを必要とします。そのため、あなたの場合、Cookie の使用について心配する必要はないようです。


それはさておき、問題が何であるかはまだわかりません。OAuth は適切なツールではなく、基本認証は少し扱いに​​くいと判断したようです。

ただし、要件を満たすと思われるソリューションも表現しています。つまり、各リクエストで送信できる認証後にトークンを送り返し、その真正性を検証するためにいくつかの計算を適用することです。これは、作成時に暗号化またはハッシュ化され、リクエストごとに検証できる、サーバー上のある種の非公開ランダム情報を使用することで実現できます。これをカスタム HTTP ヘッダーに貼り付けることができます。

あなたが遭遇する問題はまだセッションだと思います。本質的に、サーバー セッションの作成とは、ユーザーがサービスの使用を承認されている期間を追跡することです。だから、そこには少し状態があります。

まず、検証を可能にするランダムに作成された情報 (トークンが表す/含む) を取得します。HTTP 要求ヘッダー (トークン) の値が自分のものであることを確認する何らかの方法が必要です。ただし、(おそらく) 許可された期間の期限切れを管理する方法も必要です。誰かが承認できる期間の上限がある限り。

したがって、私の見方では、この情報をサーバーに保存するか、トークン自体に保存する必要があります。それ以外の場合は、正しい軌道に乗っているように聞こえます。

于 2013-09-23T08:38:57.143 に答える
0

ソフトウェアがオンライン サービスを保護するのに役立つ可能性は見当たりませんでしたが、http の仕組みがどのように役立つかについては、より深く知っています。いいえ、多くのサイトで一般的に使用されていますが、Cookie/フォームもハッキングされる可能性があります。実際、http はテキストベースのプロトコルとして非常に単純であるため、http 要求全体がハッキングされる可能性があります。各フィールドは、ユーザーまたはゲートウェイによって悪用される可能性があります。Cookie /フォームが危険であると考える人がいる理由は、サーバーが入力を使用してデータを変更/挿入/削除する可能性があるためです。しかし、これはこれらのテクノロジーの期待される機能にすぎません。これを避けるには、リクエスト フィールドを慎重に解析する必要があります。値を sql コマンドに直接貼り付けようとしないでください。最初に適切にフォーマットされているかどうかを確認する必要があります。

于 2013-09-23T09:05:31.357 に答える