在编写一个Web应用程序时,身份认证往往是一个繁琐的工作,特别对一个Intranet的站点,我们只需要他是一个内部用户,就能给他授权的时候,自己编写身份认证实在是没有必要。
ASP.NET能与IIS协同工作来实现对基于Windows2000或windows2003用户的身份认证。ASP.NET执行引擎也能被配置,使之能模拟这一认证。
下面通过一个例子来看看怎样在ASP.NET中使用集成Windows身份认证
一,首先新建一个Web工程:Sample1,确认web.config文件中authentication mode="Windows"
二,在WebForm1下新建一个Label,并命名为LabelUserName
在后台Page_Load事件中编写如下代码
this.LabelUserName.Text = "Your Login Name:" + this.User.Identity.Name;
运行后,得到的结果是:Your Login Name:,却没有显示名字,原因是IIS并没有配置集成Windows身份认证
三,为了让IIS支持Windows身份认证,需要配置你的站点的目录安全属性,如图:
- 取消匿名访问
- 设置Windows集成身份认证。
再次运行后,得到结果:Your Login Name: Domain1/User1,这时候,只要是同一个域里面的帐户,都有权限访问该页面。但有时候,只需要对某一个或几个组的用户赋予权限,这时候应该怎么设置呢?
四,配置allow与deny
<configuration>
<system.web>
<authorization>
<allow roles="domainname/Managers" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
<system.web>
<authorization>
<allow roles="domainname/Managers" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
这样就只允许域里面的某些组可以访问了,这种方式的身份验证,对于Intranet的Web程序,是很实用的
http://blog.csdn.net/changezhong/archive/2006/08/16/1074440.aspx