在财务或商务应用程序中经常使用角色来强制策略。例如,应用程序可能根
据提出请求的用户是不是指定角色的成员,对要处理的事务大小加以限制。
职员有权处理的事务可能小于指定的阈值,主管拥有的权限可能比职员的高
,而副总裁的权限可能还更高(或根本不受限制)。当应用程序需要多个批
准完成某项操作时,也可以使用基于角色的安全性。例如一个采购系统,在
该系统中,任何雇员均可生成采购请求,但只有采购代理人可以将此请求转
换成可发送给供应商的采购订单。
.NET Framework 基于角色的安全性通过生成可供当前线程使用的主体信息来
支持授权,而主体是用关联的标识构造的。标识(及其帮助定义的主体)可
以基于 Windows 帐户,也可以是同 Windows 帐户无关的自定义标识。.NET
Framework 应用程序可以根据主体的标识或角色成员条件(或者这两者)做
出授权决定。角色是指在安全性方面具有相同特权的一组命名主体(如出纳
或经理)。一个主体可以是一个或多个角色的成员。因此,应用程序可以使
用角色成员条件来确定主体是否有权执行某项请求的操作。
为使代码访问安全性易于使用并提供与它的一致性,.NET Framework 基于角
色的安全性提供了 PrincipalPermission 对象,此对象使公共语言运行库以
类似于代码访问安全检查的方式执行授权。PrincipalPermission 类表示主
体必须匹配的标识或角色,并同声明式和命令式安全检查都兼容。您也可以
直接访问主体的标识信息,并在需要时在代码中执行角色和标识检查。
.NET Framework 提供了灵活且可扩展的基于角色的安全性支持,足以满足广
泛的应用程序的需要。可选择同现有的身份验证结构(如 COM+ 1.0 服务)
相互操作,或创建自定义身份验证系统。基于角色的安全性尤其适用于主要
在服务器处理的 ASP.NET Web 应用程序。不过,.NET Framework 基于角色
的安全性既可用于客户端,也可用于服务器。