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

Jon*_*ter 21 wcf authorization

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

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

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

我见过的唯一部分解释来自于WCF构建基于声明的安全模型,它给两个主要的优点,基于声明的身份验证:更多的灵活性,并且有人"担保",一个要求的信息是正确的.你什么时候需要其中任何一个?

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

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

mar*_*c_s 9

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

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

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

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

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

  • 是的,是的 - 但是,由于您在身份验证后向您提供了一套统一的声明,因此您还可以简化对其的授权.您不需要处理呈现给您的不同类型的"身份" - 您只需获得一组声明,并在此基础上授权(或拒绝)给定呼叫者执行某些操作 (2认同)