2012-03-01 18 views
0

サイト全体にSSLを持つAsp.Net MVC 3サイトがあります。 私は、userNameとパスワードを受け入れ、Webアプリケーションで他のアクションを呼び出すためのトークンを返すコントローラのログインアクションを持っています。バックグラウンドでは、REST APIが呼び出されます。Asp.Net MVC 3セキュアログイン

有効なユーザーが私のウェブサイトにログインしないようにするにはどうしたらいいですか?その後、Fiddlerを使用してトークンを抽出しますか?彼はいくつかの悪質なものを行うために、そのトークンを使用して、私のREST APIを呼び出すことができるようになります。その後 ...

答えて

1

どのように私は、有効なユーザがその使用後に私のウェブサイトは、ログインして に行かないことを確認することができますフィドラーはトークンを抽出する?

できません。しかし、それはユーザ認証承認の全体のポイントです。認証を使用して(ユーザー名とパスワードを入力した後で)ユーザーを特定し、後でAPIにアクセスするために使用するトークン(認証Cookie)をユーザーに付与します。

権限を使用して、ユーザーがこのトークンでできることを制限します。今、ユーザーがログインして認証トークンを保有されている場合でも、彼はすることはできません

[Authorize(Roles = "Admin")] 
public ActionResult SuperSecret() 
{ 
    ... 
} 

:たとえばあなただけのAdministratorsグループに属するユーザーでログインが与えられたコントローラのアクションにアクセスすることができると言うことができます彼がAdministratorsグループに所属していない限り、このコントローラアクションにアクセスします。

+0

しかし、彼は私のウェブサイトからTOKENを入手したので、彼は私のAPIよりもはるかに高い特権(範囲)を持っています。あなたが言うように彼が役割管理者になると言うことができます... –

+1

@RadenkoZec、これは基本的にあなたのWebサイトでの承認を実装していないことを意味します。あなたは認証のみを実装しています。現在、ユーザーがTOKENを持っている場合、彼はあなたのサイトで何かをすることができます。そして、あなたが認証されたユーザーにこのトークンを与えているので、彼がそれを再利用するのを防ぐために何もできません。ユーザーの異なるロールを区別したい場合は、承認を実装する必要があります。 –