【发布时间】:2010-12-20 01:28:14
【问题描述】:
我一直在阅读有关 Azure 的访问控制服务和基于声明的授权的一般信息,无论出于何种原因,我仍然看不出从基于角色/权限的授权转向声明背后的基本原理- 基于模型。这些模型看起来和我很相似(他们可能是),除了客户端可以做什么和不能做什么的列表来自第三方并且包含在某种令牌中,而不是来自某种数据库服务器必须查询。让第三方(代币发行者)参与有什么好处?
我完全理解将身份验证外包给第三方的优势。它允许应用程序不必一直创建新用户、担心存储密码等,因为他们可以将其推送到已经设置了基础设施的其他服务。它本质上是身份验证的 DRY 原则。
但是,在我看来,同样的逻辑不适用于授权。每个应用程序都有自己必须保护的资源,因此也有自己的规则来授权用户执行某些操作。基础设施似乎很简单,每个应用程序都可以自己创建它(一个将用户映射到角色的表,可能还有另一个将角色映射到权限的表),即使您想外包它,基于声明的模型似乎也在做比这更复杂的东西。
我看到的唯一部分解释来自Building a Claims-Based Security Model in WCF,它为基于声明的身份验证提供了两个主要优点:更大的灵活性,以及有人“保证”声明中的信息是正确的。您什么时候需要其中任何一个?
基于声明的授权似乎越来越受欢迎,所以我认为它一定有一些很好的理由;我只是还没弄清楚那是什么。有人可以提供一个具体示例,说明基于声明的身份验证比基于角色的身份验证效果更好,以及为什么在这种情况下效果更好?
(编辑:我错过了文章中列出的第三个好处:支持单点登录/联合。但是在不涉及授权的情况下,身份验证本身就不能解决这个问题吗?)
【问题讨论】:
标签: wcf authorization