Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';这是ClaimsPrincipal的角色,为什么它有多重身份?_C#_.net_Authentication_Wif_Claims Based Identity - Fatal编程技术网

C# 什么';这是ClaimsPrincipal的角色,为什么它有多重身份?

C# 什么';这是ClaimsPrincipal的角色,为什么它有多重身份?,c#,.net,authentication,wif,claims-based-identity,C#,.net,Authentication,Wif,Claims Based Identity,我试图根据应用程序(依赖方)的声明来理解.NET背后的安全模型 我知道有两大类: ClaimsPrincipal-正在运行的进程的安全上下文 ClaimSideEntity—存储有关用户身份验证状态和声明的信息 问题是,ClaimsPrincipal只包含一组身份,并指向当前使用的身份,但据我所知,主体通常不会包含超过1个身份,即使会-用户从未使用2个或更多身份登录 对我来说,ClaimsPrincipal,除了用它来获取当前身份,请原谅我的无知,它是无用的 除了我所说的,让我们说一下关于C

我试图根据应用程序(依赖方)的声明来理解.NET背后的安全模型

我知道有两大类:

  • ClaimsPrincipal-正在运行的进程的安全上下文
  • ClaimSideEntity—存储有关用户身份验证状态和声明的信息
问题是,ClaimsPrincipal只包含一组身份,并指向当前使用的身份,但据我所知,主体通常不会包含超过1个身份,即使会-用户从未使用2个或更多身份登录

对我来说,ClaimsPrincipal,除了用它来获取当前身份,请原谅我的无知,它是无用的


除了我所说的,让我们说一下关于ClaimsPrincipal类的向后兼容性之外,我还缺少什么?

一个重要的安全原则是“谁说”,即我们是否信任主张对身份进行索赔的一方,因此,对于特定的ClaimsPrincipal,我们可能有不同的身份,每个身份都声明了一组不同的声明,这允许我们确定应用程序中的越权访问控制

让我们以通过Windows身份验证进行身份验证的企业应用程序为例,我们还希望基于应用程序数据库中的团队或部门声明一些访问控制

使用ClaimsTransformationManager,我们可以统一这两个集合,即在对用户进行身份验证后,我们可以在数据库中查找用户的团队/部门,并创建由应用程序发布的一组声明

因此,现在我们有了由Windows断言的角色(即隐藏在引擎盖下的声明),以及断言团队或部门自定义声明的应用程序标识

问题是,ClaimsPrincipal只包含一组身份,并指向当前使用的身份,但据我所知,主体通常不会包含超过1个身份,即使可能-用户从未使用2个或更多身份登录

这是一个错误的假设。事实上,如果应用程序需要n因素身份验证(n>1),则上下文中的ClaimsPrincipal将始终具有多个标识

试着这样看

主体=用户

身份=驾照、护照、信用卡、谷歌账户、Facebook账户、RSA SecurID、指纹、面部识别等

如果你被警察拦下,他们不会仅仅根据你的驾照来核实你是谁。他们还需要看到你的脸。否则你可以出示任何人的驾照


因此,为什么身份验证可以而且有时应该基于多个身份是有道理的。这就是为什么一个ClaimsPrincipal可以有任意数量的claimsentity。

如上所述,
用户的类型是
ClaimsPrincipal
,它由
claimsentity
组成

我制作了一张图表来更容易地解释它:


如果你正在为索赔而挣扎,我建议你读一下这篇文章

精彩的文章!