Policy-based authorization in .NET6

關於Authorization

有二種授權檢驗的方式:Role based 或 Policy based。 Role based 就是用角色決定,俱體上設定 Role 屬性在目標上,這會綁定固較沒有彈性難以客製化。可適於小型系統。 Policy based 是所謂抽像的〝政策〞,在俱體上就是跑程式決定。較有彈性然實作上有點小麻煩。

Policy based 關鍵知識

  1. 為『授權標的』指定『Policy』。

  2. 為該『Policy』註冊須滿足的授權需求『IAuthorizationRequirementarrow-up-right』。

  3. 滿足這些授權需求『IAuthorizationRequirement』就滿足『Policy』。

將 Policy based 關聯簡化表示如下

Target ---> Policy ---> Requirement ---> Handler

為授權標的指定 Policy

[ApiController]
[Route("api/[controller]/[action]")]
[Authorize("AuthFunc")] //<--- 指定 Policy based authorization
[AuthFunc("DEMO04")]    //<--- 添加客製屬性:表明標的的FuncCode。
public class YourController : ControllerBase  //<--- 授權標的
{
  ...省略...
}

為 Policy 註冊須滿足的授權需求(Authorization Requirement)

滿足授權需求(Authorization Requirement)就滿足 Policy

完整程式碼

參考文章

Last updated