进入授权服务器


令人惊讶的是,在认证技术方面做了这么多工作,而在授权方面却做得很少。通常,授权(关于“谁能做什么”的决定)被烘焙到应用程序的代码中。这使得以后更改这些规则或审核规则变得困难。授权服务器通过将应用程序的授权外部化来填补这一空白。马克·钱里欧写道 a really useful article on entitlements servers,它正好提供这种服务。

他举了一个很好的例子来说明授权服务器的重要性:
假设一个自主开发的门户应用程序在服务代表查看客户档案时,必须提供一条敏感的客户信息,如社会安全号码(SSN)。现已确定,为了确保遵守各种隐私法规,只有董事和高级经理可以查看客户的SSN。每当应用程序必须显示关于当前用户是否可以查看实际数据或某个默认值(例如,“XXX-XX-XXXX”)的SSN时,必须动态地做出决定。这个决定必须考虑用户的职称。应用程序中可以显示客户SSN的十几个部分意味着要应用这种业务逻辑的十几个地方。

现在假设在应用程序投入生产一段时间后,需要更改策略。该公司已经决定,加州的高级经理可能不会考虑SSN。这是一种特殊情况,需要另一条信息作为权利决定的一部分。但是如果我们把这个例子看得更远呢?假设只有某个薪资级别以上的主管才能查看SSNs。现在,权利逻辑已经根据运行时属性分成了多个决策。因此,必须调整业务逻辑。

您可以看到,授权或授权策略的发展与应用程序需求有很大不同。将授权逻辑“硬连接”到业务逻辑中意味着每次策略发生变化时都要更改代码。

http://soa.sys-con.com/node/1923919
然后他继续解释授权服务器如何在RBAC(基于角色的访问控制)和个人程序设计/个人数据处理/个人程序设计模型的框架下工作。 Gateways like the Vordel Gateway通常作为该模型的PEP部分进行部署,并且I've written recently about the benefits of integration between the PEP and the Entitlements Server