BT

InfoQ ホームページ ニュース ASP.NET MVC 5 におけるフィルターによる認証の改善

ASP.NET MVC 5 におけるフィルターによる認証の改善

ブックマーク

原文(投稿日:2013/09/06)へのリンク

直近でリリースされた Visual Studio 2013 Developer Preview に含まれる ASP.NET MVC 5 により、多様なサードパーティ・ベンダーやカスタム認証プロバイダーの機能を利用した認証フィルターを適用することが可能となった。ただし、これらのフィルターは認可のフィルターよりも優先して実行される。

認証フィルターを作成するためには、新規の C# ASP.NET プロジェクトを作成し、表示されたプロジェクトから MVC 形式を選択する。Kunz, Leigh & Associates の Senior Software Developer である Eric Vogel 氏は、未認証のユーザをログインページにリダイレクトするカスタムフィルターを作成し、認証フィルターについて検証している。

Eric氏は CustomAttributes ディレクトリを作成し、ActionFilterAttribute と IAuthenticationFilter を継承した CustomAttribute という名前のクラスを作成した。

public class BasicAuthAttribute: ActionFilterAttribute, IAuthenticationFilter

IAuthenticationFilterインターフェースに含まれるOnAuthentication() メソッドを利用することで任意の認証が実行可能であり、OnAuthenticationChallenge() メソッドを利用することでユーザの認証情報に基づいたアクセス制限を実行することができる。

OnAuthenticationChallenge() メソッドは AuthenticationChallengeContext 引数を受け取り、実装は以下に示す様になる。

public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
    var user = filterContext.HttpContext.User;
    if (user == null || !user.Identity.IsAuthenticated)
    {
        filterContext.Result = new HttpUnauthorizedResult();
    }
}

ソースコード全体はEric氏のブログ投稿で確認できる。HomeController.cs ファイルを開き、以下の様に BasicAuthAttribute クラスを HomeController クラスから参照することで容易にテストできる。

using VSMMvc5AuthFilterDemo.CustomAttributes;

最後に、以下の様にカスタム属性を HomeController クラスに付与する。

[BasicAuthAttribute]
public class HomeController : Controller

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。