2

apicontrollerを使用して最初のRESTサービスを作成しました。mvc-4の代わりにWebフォームで使用しています。Webサービスにセキュリティを実装するにはどうすればよいですか。ブラウザ以外のクライアントがサービスを使用する可能性があることを念頭に置いて、セキュリティの設定をどのように進めますか。フォーム認証を使用しているasp.netアプリケーションに対してブラウザーから自分自身を認証すると、アプリは認証Cookieを返します。この認証クッキーは、後続の各要求でブラウザーによって転送され、アプリケーションは、ユーザーがCookieを復号化してサインインしていることを認識します。
私は複数の光景のチュートリアルを見ていましたWebAPIのセキュリティについて。彼らは、jsonデータが渡された場合にユーザーにログインできるメソッドが必要であると主張しています。ログインすると、メソッドは認証Cookieをクライアント(ブラウザおよびその他のサービスクライアント)に返します。クライアントは、後続の各要求でこのCookieを送信して、自分自身を承認する必要があります。この認証スキームはWebサービスでは正常ですか、それとも他の推奨される方法がありますか?問題は、どのように実装するかというよりも、何を実装するかということです。

編集:この質問に対する@AliOstadの回答から得たアイデアつまり、httpsで理想的に機能するサービス用に別のログインメソッドを作成する必要があります。このメソッドは、ユーザーの電子メールと発行時刻を含む暗号化された認証ヘッダーを返す必要があります。クライアントがトークンを取得すると、認証ヘッダーでこのトークンを(andriodアプリなどに)渡すことでサービスを使用できます。データサービス(httpsで動作するログインサービスとは対照的に)がトークンはx分後に期限切れになるため、httpで動作します。サーバー側では完全に問題ありませんが、クライアントはトークンの有効期限が切れていることをどのようにして知ることができ、データサービスからデータを取得する前に別のトークンを取得する必要がありますか?私の2番目の懸念は、この方法で実装した場合、asp.netアプリケーション(asp。ネットアプリケーションとWebAPIは同じアプリケーションで実行されています)。そこで(javascriptで)、認証トークンを取得するために認証トークンまたはユーザー名とパスワードのいずれかが必要になりますが、どちらも実行可能ではないようです?
これらのシナリオをどのように処理する必要がありますか?

4

1 に答える 1

5

Dominick Baier はこの主題の権威であり、彼のブログでこの主題に関するシリーズを公開しています。ここでシリーズの最初を参照してください。

賢明な小さな答えで本当に要約することはできません。投稿を確認する必要があると思います。


アップデート

私のクライアントは、トークンの有効期限が切れたことをどのように知ることができますか

フォーム認証とは異なり、ユーザーが期限切れのトークンを持っていてログイン画面にリダイレクトされた場合、Web API は HTTP 応答コードと通信します。これは、クライアントが人間のユーザーではなくマシンである可能性が非常に高いためです。

そのため、クライアント エージェントは期限切れのトークンがあるかどうかを認識できません。代わりに、期限切れのトークンを使用して API に接続すると、401 (無許可) 応答が返されます。この時点で、クライアントは新しいトークンの取得を試みます。

asp.net アプリケーションによって作成されたデータ サービスへの ajax 呼び出しを処理する方法

彼らは AJAX 呼び出しを行わず、次のいずれかを行います。

  • 同じボックスにある場合は、直接呼び出しを行います (オブジェクトを作成し、メソッドを呼び出します)。
  • HttpClient を使用してサービスを呼び出し、データを使用する
于 2012-05-02T14:41:36.377 に答える