ASPを理解する.NET Core検証モデル(Claim,ClaimsIdentity,ClaimsPrincipal)が読まなければならない英語のブログ

1821 ワード

この英語のブログはAndrew Lockが書いたIntroduction to Authentication with ASPです.NET Core .
以下は簡単な読書ノートです.
-----------------------------------
ASP.NET Coreの検証モデルはclaims-based authenticationです.Claimは、認証されたボディの特徴の記述です.たとえば、ログインユーザー名は...、メールは...、ユーザIdは…であり、その中の「ログインユーザ名」「email」「ユーザId」がClaimTypeです.
You can think of claims as being a statement about...That statement consists of a name and a value.
現実の物事に対応して、例えば免許証、免許証の中の“身分証明書の番号:xxx”は1つのclaimで、“名前:xxx”は別のclaimです.
1組のclaimsは1つのidentityを構成して、これらのclaimsを持つidentityはClaimsIdentityで、免許は1種のClaimsIdentityで、ClaimsIdentityを“証明書”と理解することができて、免許は1種の証明書で、パスポートも1種の証明書です.
ClaimsIdentityの所有者はClaimsPrincipalで、1つのClaimsPrincipalは複数のClaimsIdentityを持つことができて、例えば1人が免許を持っていて、パスポートを持っています.
------------------------------------
Claim,ClaimsIdentity,ClaimsPrincipalの3つの概念を理解すれば,ログイン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の3つの情報を含まなければならない.合法的な免許を持っている人を例にとると、ClaimsPrincipalは証明書を持っている人であり、ClaimsIdentityは証明書であり、「Basic」は証明書タイプ(ここでは免許を仮定する)であり、Claimは免許の情報である.