代码改变世界

Windows 身份验证

2006-05-29 09:41  努力学习的小熊  阅读(2632)  评论(1编辑  收藏  举报

Windows 身份验证与 IIS 以及 Windows 在工作上紧密结合。实际上,ASP.NET只是接收 IIS 传递给它的内容,并将这些内容映射到.NET主体和身份对象上。所有凭证交换和身份验证的事务都在 IIS 端使用Integrated Windows authentication(或者Basic authentication)来处理,而不能使用匿名访问。这对于企业内部互联网和外部网最适合,在这种情况下,用户是您组织中的一员,并且已经具有公司域中的 Windows 账号。

如果使用Integrated Windows authentication,这是最安全的方法,因为每项操作都在 Windows 域中处理。此外,直接使用文件访问权限也可以设置访问页,这在有关页的安全设计中造成的影响最小。用户的经验也将得到提高,因为用户甚至不需要登陆该应用程序——每当用户打开浏览器定位到一个页时,安全令牌将自动被传递给 ASP.NET

在“在登陆AD的机器上测试模拟经过验证的用户”这篇文章中介绍了一种模拟通过验证的账户的方法。Web.config文件具有默认的 Windows 身份验证模式,因此当打开Integrated Windows authentication时,用户可以自动被验证——ASP.NET在后台接收该令牌。当我们打开 Anonymous access 时,ASP.NET不再接收 Windows 用户的安全令牌,因此用户是未验证的。

如果在ASP.NET中选择 Integrated Windows authentication 身份验证模式,并将 IIS 设置成除 Anonymous access 之外的任何方法,那么您就不会看到Windows的登陆窗体,除非在另一台机器上通过Internet来试图访问该应用程序。如果是局域网中的计算机,此时凭据将被自动传递(因为已经登陆到域中),不输入一个字母就已被验证,从而可以访问该应用程序。另一方面,通过Internet试图访问该应用程序则将打开一个Windows登陆窗口,要求输入用户名和密码。