2012-05-02 4 views
2

私は、apicontrollerを使用して最初の残りのサービスを作成しました。私はmvc-4の代わりにWebフォームで使用しています。 Webサービスでセキュリティを実装するにはどうすればいいですか?ブラウザ以外のクライアントがサービスを使用してセキュリティを設定する方法を覚えておいてください。 フォーム認証を使用しているasp.netアプリケーションに対してブラウザから自分自身を認証すると、アプリは認証Cookieを返します。この認証Cookieは、後続のリクエストごとにブラウザによって転送され、アプリケーションはCookieを復号してサインインしていることがわかります。
web apiのセキュリティについてtutorial on plural sightを見ていました。彼らは、jsonデータが渡された場合にユーザーをログインできるメソッドを用意するべきであると提唱しています。ログインすると、クライアント(ブラウザやその他のサービスクライアント)に認証Cookieが返されます。クライアントは、それ以降の認証要求ごとにこのCookieを送信して、自分自身を認証します。この認証スキームはWebサービスにとって通常のものか、それとも他に推奨される方法がありますか?問題は、実装する方法よりも実装すべき点についてです。Web Apiのセキュリティ

編集:私はこのquestionに、@ AliOstadの回答から得たアイデアは、私は理想的にHTTPSで動作するはずです、私のサービスのための別のログイン方法を作成する必要がありますし、このメソッドは、ユーザーの電子メールを含む暗号化された認証ヘッダを返さなければならないことで、問題の時間。クライアントがトークンを取得すると、認証トークンをアンドライドアプリに渡すことでサービスを利用することができます(httpsで動作するログインサービスとは対照的に)データサービスがトークンはx分後に期限切れになるため、httpで動作します。サーバー側では完全にOKですが、クライアントがトークンの有効期限が切れていることを知っていると、データサービスからデータを取得する前に別のトークンを取得する必要がありますか?私の第二の懸念は、asp.netアプリケーション(asp.netアプリケーションとWebアプリケーションが同じアプリケーションで実行されている)によって作成されたデータサービスへのajax呼び出しを、どうやって処理するのかということです。そこに(javascriptで)、私はどちらかの認証トークンを取得するには、認証トークンまたはユーザー名とパスワードが必要とどちらも実現可能なようですか?
これらのシナリオをどのように処理すればよいですか?

答えて

5

Dominick Baierはこのテーマの権威であり、彼のブログにこの件に関するシリーズがあります。一連の最初のhereを参照してください。

賢明な小さな答えでまとめることはできません。投稿を通過する必要があると思います。私のクライアントは、ユーザーが期限切れのトークンを持っているし、ログイン画面にリダイレクト、ウェブAPIが通信するとき、彼のトークンは、フォーム認証とは異なり

有効期限が切れていることを知っているだろうか


UPDATE

HTTPレスポンスコード - クライアントが人間ではないマシンである可能性が高いためです。

クライアントエージェントは、有効期限が切れたトークンがあるかどうかを知りません。期限切れのトークンを使用してAPIに接続する代わりに(Unauthorized)という応答が返されます。この時点で、クライアントは新しいトークンを取得しようとします。

aspによって作成されたデータサービスへのajax呼び出しをどのように処理できますか。ネットアプリケーション

彼らはAJAX呼び出しをすることはないだろう、彼らはどちらかでしょう:

  • それは同じボックスに
  • 利用の場合は直接呼び出しを(オブジェクトとメソッドのコールを作成する)作るのHttpClientサービスを呼び出してデータを使用する
+0

plz私の編集 –

+0

ありがとうございます。物事をもっとはっきりとさせました。私はajaxの呼び出しについて話をするときには、asp.netサイトからWeb APIサービスへの呼び出しを言うことを意味します。私のaspxページで実行されているjsコードで明らかにユーザーがサイトにログインしていても、Web APIサービスを呼び出すためのセキュリティトークンはありませんでした。 –

+0

私がこれまでに学んだのは、Web APIが基盤となるホスティング環境(この場合はasp.net)のPricipalオブジェクトを継承するということです。この継承は、グローバル構成オブジェクトからオフにすることができます。私の考えは、ユーザーエージェントがWebブラウザ以外のものであれば、継承を切り替えることです。私は自分自身を明確にしたと思いますか?あなたはこのアイデアに間違ったことを見ますか? –

関連する問題