.net的安全模型在系统的安全模型的上层,并且与一些服务器程序的安全特性结合的很好(当然,目前这些产品还仅限于微软自己的产品,比如sql server和internet information services (iis))。正因为.net与操作系统的层次不同,所以.net程序的安全性就取决于这样几个因素:.net安全性是如何配置的,程序组件是怎样编写的,以及一些由windows,网络设置或者其他程序设定的安全特性。
getanonymous和getcurrent方法都返回一个windowsidentity对象,使用也很简单,我们需要注意的是impersonate方法,该方法有两个版本:实例版本(instance version)和静态版本(static version)。实例版本的方法不带参数,返回一个基于被调用windowsidentity对象的windowsimpersonationcontext对象(windowsimpersonationcontext类表示模拟操作之前的 windows 用户);静态版本则需要一个intptr参数。这种模拟操作对于服务器程序来说是很有用的,它可以降低客户端访问服务器所用用户帐号的权限,从而在一定程度上提高了安全性。下面是上述方法的具体语法:
public static windowsidentity getanonymous(); public static windowsidentity getcurrent(); public virtual windowsimpersonationcontext impersonate(); public static windowsimpersonationcontext impersonate(intptr usertoken);