ASP.NET WEB APIにおける認証と認可
3086 ワード
中国語と英語の用語対照
Authentication(ユーザー認証)
ASP.NET WEB APIにおけるユーザ認証は、HTTPモジュールとHTTPメッセージプロセッサの2つの方法で実現することができる.
1.HTTPモジュールによる認証
プロジェクトでは、IISに組み込まれた任意の認証モジュール(匿名認証、Basic基本認証、Windows統合認証、Digest要約認証、Microsoft.NET Passport認証)を使用するように構成できます.
ユーザを認証すると、コードによって実行されるセキュリティコンテキストを表すIPrincipalオブジェクトであるPrincipal(ボディ)が作成され、属性Threadを呼び出す.CurrentPrincipalの設定方法は、ユーザが既に認証に合格している場合、Identityを含む関連するIdentityオブジェクトを含むマスターを現在のスレッドに設定する.IsAuthenticatedプロパティはtrueであり、匿名リクエストの場合falseである.
2.HTTPメッセージプロセッサによる認証
ホストが提供するHTTPモジュール認証方法を使用しなければ、HTTP Message Handlerを実装することもできます.この場合、HTTPメッセージプロセッサは、HTTP要求をチェックし、Principalを設定する責任を負います.メッセージ・プロセッサを使用して認証を処理するのはいつですか?次の要素を考慮します.
Authorization(ユーザー認証)
ライセンスはASP.で発生する.NETはパイプの末端を処理し、コントローラに近い部分で、リソースアクセス権限を取得する際により細粒度の選択を行うことができます.
認証フィルタ(Authorization filters)は、コントローラの動作の前に実行され、要求が認証されていない場合、フィルタはエラー応答を返し、コントローラの動作は呼び出されません.コントローラの動作内部では、属性Apiを通過することができる.Controller.Userは現在のボディを取得します.次のコードはSystemの使用方法を示す.Web.Http.AuthorizeAttributeプロパティを使用して、認可を指定します.
//
[Authorize]
public class ValuesController : ApiController
{
public HttpResponseMessage Get(int id) { ... }
public HttpResponseMessage Post() { ... }
}
//
public class ValuesController : ApiController
{
public HttpResponseMessage Get() { ... }
[Authorize]
public HttpResponseMessage Post() { ... }
}
// ,
[Authorize]
public class ValuesController : ApiController
{
[AllowAnonymous]
public HttpResponseMessage Get() { ... }
public HttpResponseMessage Post() { ... }
}
//
[Authorize(Users="Alice,Bob")]
public class ValuesController : ApiController
{
}
//
[Authorize(Roles="Administrators")]
public class ValuesController : ApiController
{
}
//
public HttpResponseMessage Get()
{
if (User.IsInRole("Administrators"))
{
// ...
}
}