文章出處

這篇英文博文是 Andrew Lock 寫的 Introduction to Authentication with ASP.NET Core 。

以下是簡單的閱讀筆記:

-----------------------------------

ASP.NET Core 的驗證模型是 claims-based authentication 。Claim 是對被驗證主體特征的一種表述,比如:登錄用戶名是...,email是...,用戶Id是...,其中的“登錄用戶名”,“email”,“用戶Id”就是ClaimType。

You can think of claims as being a statement about...That statement consists of a name and a value.

對應現實中的事物,比如駕照,駕照中的“身份證號碼:xxx”是一個claim,“姓名:xxx”是另一個claim。

一組claims構成了一個identity,具有這些claims的identity就是 ClaimsIdentity ,駕照就是一種ClaimsIdentity,可以把ClaimsIdentity理解為“證件”,駕照是一種證件,護照也是一種證件。

ClaimsIdentity的持有者就是 ClaimsPrincipal ,一個ClaimsPrincipal可以持有多個ClaimsIdentity,就比如一個人既持有駕照,又持有護照。

------------------------------------

理解了Claim, ClaimsIdentity, ClaimsPrincipal這三個概念,就能理解生成登錄Cookie為什么要用下面的代碼?

var claimsIdentity = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, loginName) }, "Basic");
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
await context.Authentication.SignInAsync(_cookieAuthOptions.AuthenticationScheme, claimsPrincipal);

要用Cookie代表一個通過驗證的主體,必須包含Claim, ClaimsIdentity, ClaimsPrincipal這三個信息,以一個持有合法駕照的人做比方,ClaimsPrincipal就是持有證件的人,ClaimsIdentity就是證件,"Basic"就是證件類型(這里假設是駕照),Claim就是駕照中的信息。 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()