• 理解ASP.NET Core验证模型(Claim, ClaimsIdentity, ClaimsPrincipal)不得不读的英文博文


    这篇英文博文是 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就是驾照中的信息。 

  • 相关阅读:
    35-高级特性之iterable与iterator
    33-高级特性之generator(1)
    34-高级特性之generator(2)
    32-高级特性之类装饰器
    什么是Autolayout
    屏幕适配
    NSTimer
    分页
    UIScrollView的缩放原理
    设置图片圆角
  • 原文地址:https://www.cnblogs.com/dudu/p/6367303.html
Copyright © 2020-2023  润新知