有人可以解释一下,声明机制在新的ASP.NET Identity Core中意味着什么吗?
我所看到的,有一个AspNetUserLogins
表,其中包含UserId
,LoginProvider
和ProviderKey
。
但是,我仍然无法理解或找到有关何时将数据添加到AspNetUserClaims
表以及该表用于什么情况的任何信息?
有人可以解释一下,声明机制在新的ASP.NET Identity Core中意味着什么吗?
我所看到的,有一个AspNetUserLogins
表,其中包含UserId
,LoginProvider
和ProviderKey
。
但是,我仍然无法理解或找到有关何时将数据添加到AspNetUserClaims
表以及该表用于什么情况的任何信息?
Answers:
声明机制在新的ASP.NET Identity Core中意味着什么?
有两种基于角色和声明的常见授权方法。
基于角色的安全性
用户被分配到一个或多个角色,通过该角色用户可以获得访问权限。同样,通过为用户分配角色,用户可以立即获得为该角色定义的所有访问权限。
基于声明的安全性
基于声明的身份是一组声明。声明是一个实体(用户或另一个应用程序)关于自身的声明,它只是一个声明。例如,声明列表可以包含用户名,用户电子邮件,用户年龄,用户对某项操作的授权。在基于角色的安全性中,用户将凭据直接提供给应用程序。在基于声明的模型中,用户向应用程序提供声明而不是凭据。为了使声明具有实用价值,它必须来自应用程序信任的实体。
以下步骤说明了在基于声明的安全模型中发生的顺序:
但是,当数据添加到AspNetUserClaims以及此表用于什么情况时,我仍然无法理解和找到任何信息?
当您处于不使用基于角色的安全性的情况下,而选择使用基于声明的安全性时,则需要利用AspNetUserClaims表。有关如何在ASP.NET Identity中使用声明的信息,请参见下面的链接以获取更多信息。
http://kevin-junghans.blogspot.com/2013/12/using-claims-in-aspnet-identity.html
更新资料
我什么时候必须使用基于角色的安全性以及何时基于声明?你能写几个例子吗?
没有一个非常明确的情况,您会使用或不使用基于角色的安全性或基于声明的安全性,这与使用A而不是B的情况不同。
但是,基于声明的访问控制可以更好地将授权规则与核心业务逻辑分离。当授权规则更改时,核心业务逻辑将不受影响。在某些情况下,您可能更喜欢使用基于索赔的方法。
有时不需要索赔。这是重要的免责声明。拥有大量内部应用程序的公司可以使用集成Windows身份验证来实现声明所提供的许多好处。Active Directory在存储用户身份方面做得很好,并且由于Kerberos是Windows的一部分,因此您的应用程序不必包含很多身份验证逻辑。只要您构建的每个应用程序都可以使用集成Windows身份验证,您就可能已经达到了身份乌托邦。但是,出于多种原因,您可能需要Windows身份验证以外的其他功能。您可能拥有面向Windows的应用程序,供Windows域中没有帐户的人使用。另一个原因可能是您的公司已与另一家公司合并,而您 在没有(也可能永远没有)信任关系的两个Windows林之间进行身份验证时遇到了麻烦。也许您想与具有非.NET Framework应用程序的另一家公司共享标识,或者您需要在运行在不同平台(例如Macintosh)上的应用程序之间共享标识。在这些情况下,基于声明的身份可能是您的正确选择。
有关更多信息,请访问http://msdn.microsoft.com/zh-cn/library/ff359101.aspx
The user presents the credentials to the issuing authority that the RP application trusts.
您可以用作此授权人/发行人吗?一些例子会很好。我在msdn网站(您提供的链接)上用红色标记了文章,但它们仅列出了一个示例:ADFS,还有其他选择吗?在任何地方都找不到此信息。:(
只是为了补充@Lin上面所说的内容。我专门指的是这个问题:
我什么时候必须使用基于角色的安全性以及何时基于声明?你能写几个例子吗?
考虑一种情况,如果您有一个拥有技术人员和经理的时钟系统。在每周结束时,技术人员必须安排带有时钟信息的报告,以显示该周工匠的工作时间,并由工资单合并和使用。在提交最终报告之前,通常必须对此类系统进行修正或更正,因为您不想多付或少付您的员工。您可以Role-Based
通过创建Manager Role
和来为经理和技术人员使用一种方法Technician Role
。但是,这Manager Role
是一种能够访问和编辑工匠时钟信息的功能。另一方面,您可以Technician Role
没有访问这些信息的能力。但这是有趣的部分;经理可以提出索赔,并允许技术人员访问时钟系统并进行报告。因此,可以仅针对未经编辑的访问提出索赔,也可以使用访问和编辑功能提出索赔。
更像是说,嗯,默认情况下,作为管理员,我可以访问一些我的技术人员无法访问的信息。但是我不总是在办公室吗?我该怎么办,这样即使我不在身边,他仍然可以继续工作?为了解决这个问题,系统可以具有管理者可以为人们创建索赔的功能,而无需访问某些特定信息。我们经常在我们的ERP系统中到处看到这些。没有访问某些模块的用户,当他们被提升时,他们将授予ERP系统的更多模块许可,有时保持相同的用户角色。
您可以考虑使用以下示例来进一步了解声明和角色。