3、身份认证
ASP.NET提供了四中典型的身份认证:None,Windows,Forms以及Passport。每一种认证都是在应用程序的根文件 web.config中配置的。例如,为了完全禁用ASP.NET身份认证——适合于不需要用户登录的公共网站,那么你需要这样的一个配置文件:
<configuration>
<system.web>
<authentication mode="None"/>
</system.web>
</configuration>
你应该牢记IIS身份认证和ASP.NET身份认证之间的相互作用。两者都将需要被正确地配置,以达到预期的效果。通常情况下,你会在IIS和 ASP.NET两者之中中使用Windows身份认证模式;或者在IIS中以及在ASP.NET中的None,Forms,Passport的某一种使用 匿名模式。
在IIS和ASP.NET两者中使用Windows身份认证的优点是:密码不用通过网络发送,而是客户端应用程序向IIS提供了当前登录用户身份的相关信 息,那使得这些信息转发到你的ASP.NET应用程序上。这种方法的缺点是:它依赖于客户端和服务器端的Windows操作系统。Forms式的身份认证 对于基于互联网的系统是一种更合适的方法,但是在这种情况下,使用SSL/TLS来确保用户提供的凭证是加密的,这非常有必要。
4、假冒
不管Windows身份认证是否已经选择,ASP.NET身份认证没有指明ASP.NET应用程序运行下的用户环境。如果你想要你的应用程序在任意账号,而不仅仅是ASPNET账号的环境中运行,你必须要假冒身份。
假设请求的用户已经被IIS许可为有效的Windows用户,这是由以下web.config中的内容完成的:
<configuration>
<system.web>
<identity impersonate="true"/>
</system.web>
</configuration>
这将导致ASP.NET应用程序假冒发出请求的用户。然而,如果IIS设置为匿名身份认证,那么在IIS中,ASP.NET应用程序假冒任意一个用户账号,这些账号已经被配置为匿名访问。
如果你想要你的ASP.NET应用程序假冒特定的用户,这是很简单的:
<configuration>
<system.web>
<identity impersonate="true" userName="Foobar" password="baz"/>
</system.web>
</configuration>
在此很明显的危险就是:在web.config中用户凭证以明文形式存在。避免该危险是可能的,我们通过在注册表中存储加密的用户凭证,并且从web.config的<identity>元素来引用他们。
|