BT

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

| 作者: Anand Narayanaswamy フォローする 0 人のフォロワー , 翻訳者 勇 大地 フォローする 1 人のフォロワー 投稿日 2013年9月17日. 推定読書時間: 2 分 |

原文(投稿日: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

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

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

このスレッドのメッセージについてEmailでリプライする

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

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT