BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

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

この記事に星をつける

おすすめ度
スタイル

BT