基于声明的授权的目的是什么?

时间:2009-11-24 21:13:43

标签: wcf authorization

我一直在阅读Azure的访问控制服务和基于声明的授权一段时间,无论出于何种原因,我仍然没有看到从基于角色/权限的授权转移到声明背后的理由基于模型。模型看起来与我类似(它们可能是),除了客户端可以做和不能做的列表来自第三方并且被包含在某种令牌中,而不是来自某种类型的数据库服务器必须查询。让第三方(令牌发行人)参与的优势是什么?

我完全理解将认证外包给第三方的优势。它允许应用程序不必一直创建新用户,担心存储密码等,只需将其推送到已经设置了基础结构的其他服务。它本质上是DRY的身份验证原则。

但是,在我看来,同样的逻辑不适用于授权。每个应用程序都有自己必须保护的资源,因此也有自己的授权用户执行某些操作的规则。基础设施看起来很简单,每个应用程序都可以自己创建它(一个表将用户映射到角色,可能还有另一个映射角色到权限),即使你想外包它,似乎基于声明的模型正在做比这更复杂的东西。

我见过的唯一部分解释来自Building a Claims-Based Security Model in WCF,它为基于声明的身份验证提供了两个主要优势:更灵活,有人“保证”声明中的信息是正确的。你什么时候需要其中任何一个?

基于声明的授权似乎越来越受欢迎,因此我认为必须有一些合理的理由;我还没弄明白那是什么。有人可以提供一个具体的例子,说明基于声明的auth比基于角色的工作更好,以及为什么它在这种情况下效果更好?

(编辑:我错过了文章中列出的第三个好处:支持单点登录/联合。但是如果没有涉及授权,身份验证是否会自行处理?)

4 个答案:

答案 0 :(得分:9)

我想联合安全/基于声明的系统带来的好处的主要承诺是处理不同系统所需的面积减少一个。

想象一个网站,您有本地用户使用Windows凭据进行身份验证,一群使用用户名/密码的互联网用户,其他使用证书的用户,以及另一组具有生物识别身份验证的用户。

在今天的系统中,您必须设置和处理所有不同类型的身份验证方案及其不同的处理方式。这可能会变得非常混乱。

联合安全解决方案的承诺是为您处理所有这些杂务 - STS(安全令牌服务器)将为您处理所有不同类型的身份验证系统,并向您提供统一且可信的一组声明一个来电者 - 无论他到达你的网站的哪条路和哪条路上。

当然,只需检查并对一组声明做出反应,而不是必须了解四个,五个,十个不同且不同的身份验证系统,这对我来说是一个非常有说服力的承诺!

答案 1 :(得分:1)

基于声明的授权的目的是允许基于布尔表达式的细粒度访问控制,该布尔表达式评估访问实体和资源的特征。这减少或消除了配置组的需要。与联合身份一样,声明还为身份提供者提供了一种管理其用户的工具,允许资源提供者阻止用户访问资产。

注意:声明可以在单个企业中使用,并提供以下好处:

1)访问授权和撤销不需要配置或取消配置

2)因此,变化是瞬间的

3)资源所有者可以定义访问的范围和要求,而不是让管理员创建组来管理组成员身份 - 这会将访问控制决策移到最适合做出此类决策的人手中(数据所有者)

4)这导致需要的组更少,组中的成员更少

5)创建单个组以容纳具有访问权限的大型社区可能存在问题(for 例如,所有全职员工都可以阅读人力资源政策) - 索赔可以避免这个问题

6)审计更具信息性 - 授予或拒绝的原因显而易见

7)声明支持动态属性,例如双因素身份验证,时间或网络限制

还有很多原因,但会想到这些原因。很快将有一个视频在www.cionsystems.com展示这个(免责声明 - 我在那里工作并录制视频 - 我仍然需要发布它)另外,作为参考,声称感知应用和平台包括SharePoint 2010,Windows 2012 (文件共享),Azure,许多SaaS服务(Facebook和Salesforce)

此外,声称您可以混合来自多个来源(例如Facebook和您当地的AD)等的信息 - 这一点越来越重要

不确定规则是否允许这样做,但请随时向我提出您的问题或意见。我很乐意编辑帖子进行任何更正或添加相关信息。

声明可以来自AD,数据库表,SAML,OAuth,算法,XACML或任何其他可信提供商。利用索赔需要一些工具包 - 应用程序和平台在这个领域迅速发展。

All the Best,

答案 2 :(得分:0)

基于声明的访问控制还有助于构建基于属性的访问控制和基于策略的访问控制。如果您对可以根据其他属性分配给用户的一组预先约定的声明进行标准化(例如,美国经理可以声明U_M;欧洲经理可以声明E_M)。 在基于属性和基于策略的环境中,可以使用XACML实现细粒度授权(也称为细粒度授权)。 在这种情况下,您可以获得授权,具体取决于用户是谁(声明),还取决于他们想要做什么(资源信息)以及在何种情况下(上下文)。

使用XACML的CBAC将允许您表达如下规则:

  

经理可以编辑他们自己创建的笔记或记录他们的笔记   创建直接报告。

答案 3 :(得分:0)

基于角色的安全性是一种有限的安全模型 授权是:

 Based on role membership only

基于声明的安全性更加灵活和富有表现力 授权可以是:

  • 基于角色成员资格

    基于年龄

    基于地理位置

    基于帐户余额

    基于尺寸

    基于预先定义的安全级别

    基于上述

  • 的任意组合