リソースのアクセス許可を作成し、誰がそれらを読み取り、書き込み、または削除できるかを決定する必要があります。これらのアクセス許可はデータベース テーブルにある可能性があり、管理者が構成できる必要があります。次に、以下のように、一元化された場所 (フィルター属性など) でアクセス許可を確認します。
//Controller action method
[HttpPut]
[PermissionControlFilter]
public ApiResultBase Update(PlanDTO model)
{
...
}
// Filter attribute class
public class PermissionControlFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var permissions = GetUserPermissions(User.Identity.Name);
// check if the user has permission for the action and
// can read, write or delete according to the model type
// and rules defined for this model type
}
}
User --> ResourceおよびClaim --> Resourceに対して権限を定義する必要があります。
課題の 1 つは、非常に詳細なリソースに関して、アクセス許可をどのように定義するかということかもしれません。たとえば、ユーザーがエンティティの特定のフィールドを変更することを拒否し、他のフィールドを変更できるようにするアクセス許可をどのように定義する必要がありますか。
私の現在の要件は ASP.NET Web Api ですが、他のアプリケーションでも使用できるソリューションを使用したいと考えています。また、それが重要な要素である場合は、クレーム ベースのセキュリティも喜んで使用します。