Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
Wcf 什么';基于索赔的授权的目的是什么?_Wcf_Authorization - Fatal编程技术网

Wcf 什么';基于索赔的授权的目的是什么?

Wcf 什么';基于索赔的授权的目的是什么?,wcf,authorization,Wcf,Authorization,我阅读Azure的访问控制服务和基于声明的授权已有一段时间了,无论出于何种原因,我仍然看不到从基于角色/权限的授权转向基于声明的模型背后的原理。这些模型似乎与我类似(而且可能是),只是客户机可以做什么和不能做什么的列表来自第三方,并且被包装在某种令牌中,而不是来自服务器必须查询的某种数据库。让第三方(代币发行人)参与有什么好处 我完全理解将身份验证外包给第三方的好处。它允许应用程序不必一直创建新用户,不必担心存储密码等问题,而只需将其推送到其他已经建立了基础设施的服务上即可。它本质上是认证的干燥

我阅读Azure的访问控制服务和基于声明的授权已有一段时间了,无论出于何种原因,我仍然看不到从基于角色/权限的授权转向基于声明的模型背后的原理。这些模型似乎与我类似(而且可能是),只是客户机可以做什么和不能做什么的列表来自第三方,并且被包装在某种令牌中,而不是来自服务器必须查询的某种数据库。让第三方(代币发行人)参与有什么好处

我完全理解将身份验证外包给第三方的好处。它允许应用程序不必一直创建新用户,不必担心存储密码等问题,而只需将其推送到其他已经建立了基础设施的服务上即可。它本质上是认证的干燥原则

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

我所看到的唯一部分解释来自,它为基于声明的auth提供了两个主要优势:更大的灵活性,以及有人“担保”声明中的信息是正确的。你什么时候需要这些

基于声明的授权似乎越来越受欢迎,所以我认为它一定有一些很好的理由;我只是还没弄明白那是什么。有人能提供一个具体的例子,说明基于声明的auth比基于角色的auth工作得更好,以及为什么它在这种情况下工作得更好


(编辑:我错过了文章中列出的第三个好处:支持单点登录/联合。但是,在没有涉及授权的情况下,身份验证本身就可以解决这一问题吗?

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

想象一下,在一个站点中,本地用户使用Windows凭据进行身份验证,一群internet用户使用用户名/密码,其他用户使用证书,可能还有另一组用户使用生物特征验证

在今天的系统中,您必须设置和处理各种不同的身份验证方案及其不同的操作方式。那会变得相当混乱

联邦安全解决方案的承诺是为您处理所有这些琐事—STS(安全令牌服务器)将为您处理所有不同类型的身份验证系统,并向您提供一组关于调用方的统一且可信的声明—无论调用方从何处、以何种路径到达您的站点


当然,对我来说,仅仅检查一组声明并对其作出反应,而不必理解四个、五个、十个不同的、完全不同的身份验证系统,这看起来是一个非常有说服力的承诺

基于声明的访问控制也有助于建立基于属性的访问控制和基于策略的访问控制。如果您将一组预先商定的索赔标准化,这些索赔可以根据用户的其他属性分配给用户(例如,美国经理可以拥有索赔,欧洲经理可以拥有索赔)。 在基于属性和基于策略的环境中,可以使用XACML实现细粒度授权(也称为细粒度授权)。 在这种情况下,您可以拥有授权,这取决于用户是谁(声明),也取决于他们想做什么(资源信息)以及在什么情况下(上下文)

CBAC和XACML将允许您表达如下规则:

经理可以编辑他们自己创建的注释或他们的 创建直接下属


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

注意:索赔可在单个企业内使用,并提供以下好处:

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

2) 因此,变化是瞬间的

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

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

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

6) 审计更具信息性——批准或拒绝的原因显而易见

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

原因还有很多,但我想到了这些。不久将在www.cionsystems.com上发布一段视频,展示这一点(免责声明-我在那里工作并录制了视频-我仍然需要发布视频)。此外,声明敏感的应用程序和平台包括SharePoint 2010 on、Windows 2012(文件共享)、Azure、许多SaaS服务(Facebook和Salesforce)等,以供参考

此外,通过声明,您可以混合来自多个来源的信息(如Facebook和您的本地网站)
 Based on role membership only