在表示层,你可基于授权用户的“角色”来自定义用户界面(例如,为管理阶级的用户显示管理菜单,但在普通用户面前隐藏此菜单)。在业务层,可考虑在代码主体中验证授权,这就使黑客或其他非法用户不易在未经正确授权的情况下使用一个代码小节。在数据层,通过在检索或插入数据之前请求授权,可确保只有合法用户才能更改数据。
.NET系统主要运行3种授权类型:Windows授权、代码访问安全性(Code Access Security,CAS)授权或者应用程序专用授权。综合运用这些授权机制,就能创建一个非常安全的系统。下面让我们详细讨论它们。
利用访问控制列表(Access Control Lists,ACL)来设置权限,系统管理员可控制哪些用户有权访问特定的系统资源。通常要由运行应用程序的那个系统的管理员来控制这些设置。由于生产环境和测试/认证环境中的管理员通常是不同的人,所以必须正确文档化特定的授权设置,确保应用程序最终能正确运行。这些设置包括:
Windows授权限制对单个对象的访问。相反,CAS授权允许应用程序根据一系列批准的权限(名为权限集)来执行。这些权限集是基于“凭证”(evidence)而建立的,包括代码的来源、它的出版商及其“强名称”。必须注意到,CAS授权独立于其他任何授权机制运行,这样可有效保护系统资源,无论用户被验证成什么身份。
例如,假定一个权限集禁止来自因特网的代码删除用户机器上的文件,那么这个限制将永远有效,无论用户的身份被验证成“系统管理员”,还是验证成“来宾”。可用Caspol.exe命令行实用程序来配置CAS授权,或使用Microsoft
.NET Framework Configuration控制台来配置(后者通过控制面板的“管理工具”来访问)。