C# ASP.NET Web APIにおけるAuthorizeAttributeの使い方とは?
認可(Authorization)とは、認証済みのユーザーが特定のリソース(Web APIリソース)に対してアクションを実行することを許可されているかどうかを判断するプロセスです。例えば、データの取得や投稿を行う権限を持っているかどうかも、認可の一部に含まれます。認可プロセスはコントローラーのアクションメソッドが実行される前に実行されるため、そのリソースへのアクセスを許可するかどうかを柔軟に制御できます。
ASP.NET Web APIでは、認可は「認可フィルター(Authorization Filters)」を使って実装されます。このフィルターはコントローラーのアクションメソッドが実行される前に処理されます。Web APIには組み込みの認可フィルターとしてAuthorizeAttributeが用意されており、このフィルターはユーザーが認証済みかどうかをチェックします。未認証の場合は、アクションメソッドを呼び出すことなくHTTPステータスコード401(Unauthorized)を返します。
AuthorizeAttributeは、グローバル、コントローラーレベル、個別のアクションメソッドレベルのいずれかに適用できます。
グローバルに適用する
すべてのWeb APIコントローラーへのアクセスを制限したい場合は、AuthorizeAttributeフィルターをグローバルフィルターリストに追加します。
public static void Register(HttpConfiguration config){
config.Filters.Add(new AuthorizeAttribute());
}
コントローラーレベルで適用する
特定のコントローラーへのアクセスを制限したい場合は、フィルターを属性としてコントローラーに追加します。
// コントローラー内のすべてのアクションに認可を要求する
[Authorize]
public class StudentsController : ApiController{
public HttpResponseMessage Get(int id) { ... }
public HttpResponseMessage Post() { ... }
}
アクションメソッドレベルで適用する
特定のアクションメソッドへのアクセスのみを制限したい場合は、属性をアクションメソッドに直接追加します。
public class StudentsController : ApiController{
public HttpResponseMessage Get() { ... }
// 特定のアクションに対して認可を要求する
[Authorize]
public HttpResponseMessage Post() { ... }
}
実装例
using System.Web.Http;
namespace DemoWebApplication.Controllers{
public class DemoController : ApiController{
[Authorize]
public IHttpActionResult Get(){
return Ok();
}
}
}
上記のようにアクションメソッドにAuthorize属性を付与した場合、アクセス時にはベアラートークン、APIキー、OAuthなどの適切な認可情報が必要になります。認可されていない状態でアクセスすると、以下のような401 Unauthorizedレスポンスが返されます。

-
C# ASP.NET Web APIのフィルターの種類と使い方を徹底解説
ASP.NET Web APIフレームワークでは、リクエスト処理のさまざまな段階に追加のロジックを組み込むために「フィルター」が使用されます。フィルターは、ロギング、認可、キャッシュといった横断的関心事(クロスカッティングコンサーン)を実装するための仕組みであり、アクションメソッドやコントローラーに対して、宣言的またはプログラム的に適用できます。ここでは、C#のWeb APIで利用できる主なフィルターの種類について詳しく見ていきましょう。Web APIの主なフィルターの種類1. 認証フィルター(Authentication Filter)認証フィルターは、ユーザーの身元情報を検証するために使用
-
C# ASP.NET Web APIにおけるコントローラーアクションの4つの戻り値の型とは?
ASP.NET Web APIのアクションメソッドには、主に以下の4種類の戻り値の型を指定することができます。 void(戻り値なし) プリミティブ型/複合型 HttpResponseMessage IHttpActionResult 1. void(戻り値なし) すべてのアクションメソッドが必ずしも何かを返す必要はありません。戻り値の型としてvoidを指定することも可能です。 コード例 using DemoWebApplication.Models; using System.Web.Http; namespace DemoWebApplication.Controllers {