【问题标题】:Difference between Roles and Claims [duplicate]角色和声明之间的区别[重复]
【发布时间】:2014-11-21 12:36:16
【问题描述】:

在我们的系统中,我们有一种方法可以为用户设置权限。他们创建一个组名,例如 Admin,然后为他们想要执行的任务分配所有权限。

例如,他们可以添加 AddCompany、ViewCompany、DeleteCompany、EditCompany

这使得创建不同的权限组变得非常容易,并且我们可以非常轻松地控制安全性。

我是否认为在这种情况下组名 = 角色并且每个权限都是一个声明?

【问题讨论】:

  • 糟糕。抱歉,尝试链接错误的页面。

标签: c# asp.net vb.net security claims-based-identity


【解决方案1】:

基于角色的授权用于将用户分组(角色),然后设置角色而不是单个用户的权限。

例如:在您的情况下,您可以创建管理员角色并提供执行“AddCompany、ViewCompany、DeleteCompany、EditCompany”任务的权限。

在这种情况下,通过一小组角色更容易管理大量用户。这是最常用的身份验证模型。

基于声明的授权为您的授权策略提供了额外的抽象层。此外,声明是一种提供有关用户而不是用户组的信息的方法。您创建授权策略,用于根据用户提供的身份验证证据生成声明集。然后用户向应用程序提出声明以访问资源。

声明是一个主题对自己或另一个主题的陈述 主题。声明可以是关于名称、身份、密钥、组、 例如,特权或能力。索赔由 提供者,它们被赋予一个或多个值,然后打包在 由发行人发行的安全令牌,通常称为 安全令牌服务 (STS)

资源:http://msdn.microsoft.com/en-gb/library/ff649821.aspx

http://msdn.microsoft.com/en-gb/library/ff649821.aspx

http://msdn.microsoft.com/en-gb/library/ff359101.aspx

希望这会有所帮助。

【讨论】:

  • 好的,我明白这里的区别,谢谢。所以我猜角色可以使用声明来设置,声明将是他们所在的组?同样在我们的系统中,我们还有另一部分安全性,如果用户是特定公司的一部分,那么他们可以看到某些数据。这会被视为索赔吗?既然他们声称自己是公司的一部分?在我们当前的项目中,我们将其添加为针对用户的属性......
  • 我认为帖子更好地解释了事情,实际上向您展示了角色可以用作声明以及为什么stackoverflow.com/questions/22814023/…
【解决方案2】:

角色是声明,但并非所有声明都是角色。

在基于声明的授权系统中,您可以使用角色作为权限,但也可以使用其他东西。在我当前的项目中,我们有从角色到权限的多对多映射。

【讨论】:

  • 也许是你的一个例子?
  • 我认为他的意思是;角色“管理员”可以是声明之一。但是声明也可以是“出生日期”,这不是一个角色。在 .net 中有声明类型类 System.Security.Claims.ClaimTypes,并且那里有 ClaimTypes.Role。
猜你喜欢
  • 2016-04-20
  • 2011-05-23
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
相关资源
最近更新 更多