什么是ASP .NET身份的要求
有人可以解释一下,在新的ASP.NET Identity Core中声明机制的含义是什么?
正如我所见,有一个AspNetUserLogins
表,其中包含UserId
, LoginProvider
和ProviderKey
。
但是,我仍然无法理解或find有关何时将数据添加到AspNetUserClaims
表的信息以及该表用于何种情况?
索赔机制在新的ASP.NET Identity Core中意味着什么?
有两种基于angular色和声明的通用授权方法。
基于angular色的安全性
用户被分配到一个或多个用户通过其获得访问权限的angular色。 而且,通过将用户分配给angular色,用户立即获得为该angular色定义的所有访问权限。
基于声明的安全性
基于声明的身份是一组声明。 索赔是一个实体(用户或其他应用程序)自己作出的声明,这只是一个声明。 例如,声明列表可以包含用户的姓名,用户的电子邮件,用户的年龄以及用户对操作的授权。 在基于angular色的安全性中,用户直接向应用程序提供凭证。 在基于声明的模型中,用户向应用程序提交声明而不是证书。 对于具有实用价值的声明,它必须来自应用程序信任的实体。
以下步骤说明了基于索赔的安全模型中发生的顺序:
- 用户请求一个动作。 依赖方(RP)应用程序请求令牌。
- 用户将凭证提供给RP应用程序所信任的发行机构。
- 在对用户凭据进行身份validation之后,颁发机构会发出一个带有声明的已签名令牌。
- 用户将该令牌呈现给RP应用程序。 应用程序validation令牌签名,提取声明,并基于声明,接受或拒绝请求。
但是,我仍然无法理解和find任何信息,当数据加到AspNetUserClaims和这个表使用什么情况?
当您处于不使用基于angular色的安全性的情况下,并且您select使用基于声明的安全性时,您将需要使用AspNetUserClaims表。 有关如何在ASP.NET身份中使用声明,请参阅下面的链接以获取更多信息。
http://kevin-junghans.blogspot.com/2013/12/using-claims-in-aspnet-identity.html
更新
什么时候我必须使用基于angular色的安全性和基于索赔的时间? 你能写几个例子吗?
没有一个非常清楚的情况,你会或不会使用基于angular色或基于声明的安全性,而不是使用A而不是B的情况。
但是,基于声明的访问控制允许更好地将授权规则与核心业务逻辑分开。 当授权规则改变时,核心业务逻辑不受影响。 将会出现您可能更喜欢使用基于索赔的方法的情况。
有时候索赔是不需要的。 这是一个重要的声明。 拥有大量内部应用程序的公司可以使用集成Windows身份validation来实现索赔提供的许多好处。 Active Directory在存储用户身份方面做得很好,而且由于Kerberos是Windows的一部分,因此您的应用程序不必包含太多身份validation逻辑。 只要您构build的每个应用程序都可以使用集成Windows身份validation,就可能已经达到了您的身份乌托邦。 但是,您可能需要使用Windows身份validation之外的其他许多原因。 您可能拥有在Windows域中没有帐户的人使用的面向Web的应用程序。 另一个原因可能是您的公司已经与另一家公司合并,并且您在跨两个没有(也可能永远不会)build立信任关系的Windows森林进行身份validation时遇到问题。 也许您想与另一家拥有非.NET Framework应用程序的公司共享身份,或者您需要在运行于不同平台(例如Macintosh)上的应用程序之间共享身份。 这些只是一些基于声明的身份可能是您正确select的情况。
有关更多信息,请访问http://msdn.microsoft.com/en-us/library/ff359101.aspx