1. ホーム
  2. asp.net-mvc

MVC5 Claims 版 Authorize 属性について

2023-07-16 06:21:21

質問

MVC5と新しいOWIN認証ミドルウェアで、VS2013 RCの新機能を試しています。

というわけで、これまで使っていた [Authorize] 属性を使用していましたが、クレーム/アクティビティベースの認証を使用しようとしているため、同等の属性を見つけることができません。

私が見逃している明らかなものがありますか、それとも自分で作成する必要がありますか?私は、箱の中に 1 つがあることをちょっと期待しました。

私が特に探しているのは、以下のようなものです。 [Authorize("ClaimType","ClaimValue")] だと思います。

よろしくお願いします。

どのように解決するのですか?

結局、単純な属性を書いて処理することにしました。フレームワークの中に、余計な設定をせずにすぐに使えるものが見つからなかったのです。以下にリストアップします。

public class ClaimsAuthorizeAttribute : AuthorizeAttribute
{
    private string claimType;
    private string claimValue;
    public ClaimsAuthorizeAttribute(string type, string value)
    {
        this.claimType = type;
        this.claimValue = value;
    }
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        var user = filterContext.HttpContext.User as ClaimsPrincipal;
        if (user != null && user.HasClaim(claimType, claimValue))
        {
            base.OnAuthorization(filterContext);
        }
        else
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
    }
}

もちろん、コントローラ-アクション-動詞の三つ組をどうにかしてクレームに使いたいのであれば、型と値のパラメータを削除することも可能でしょう。