静坐常思己过,闲谈莫论人非,能受苦乃为志士,肯吃亏不是痴人,敬君子方显有德,怕小人不算无能,退一步天高地阔,让三分心平气和,欲进步需思退步,若着手先虑放手,如得意不宜重往,凡做事应有余步。持黄金为珍贵,知安乐方值千金,事临头三思为妙,怒上心忍让最高。切勿贪意外之财,知足者人心常乐。若能以此去处事,一生安乐任逍遥。

ASP.NET Windows用户认证

作者:大鹏 发布于:2007-12-20 0:12 Thursday 分类:Asp.Net 2.0

企业内部网站一般采用windwos身分验证机制。主要包括两部分
一、程序代码中读取当前windows用户帐号
二、IIS和ASP.NET的web.config设置


一、这段代码可以取出当前windows用户的帐号,
[code] string strUser; System.Security.Principal.WindowsIdentity objIden = System.Security.Principal.WindowsIdentity.GetCurrent(); strUser = objIden.Name;//Domain and alias[/code]

二、IIS本身可以设置目录的访问控制,ASP.NET的web.config中也可以设置访问控制。如果要达到特定的身份认证目的,需要合理设置,设置不当会造成很多问题。
通常的设置:IIS 采用windwos集成身份验证,web.config中添加<identity impersonate="true"/>。

1 IIS的虚目录的身份设置:
匿名用户:任何用户访问此网站都不需要登录。
Windows集成身份验证:客户端访问此网站,需要提交自己的身份。如果客户端是XP,提交的身份就是当前运行IE的用户帐号,如果客户端是windows 2003,IE会跳出登录窗体让你登录。

2 ASP.NET身份验证,
在web.config文件中,可以通过设置<identity impersonate="true"/>,打开身份模拟。
默认情况下,是没有身份模拟的,此时,如果用程序读取当前的windows用户,取得的是运行当前进程的windows账号。
如果网站运行在Windows XP上,读出的当前用户是ASPNET,如果网站运行在Windows2003上,当前用户是网站对应应用程序池的运行账号,一般是network service。
设置了<identity impersonate="true"/>后,如果用程序读取当前的windows用户,取得的是客户端访问网站所使用的windows账号。

下面的列表,列出了IIS,web.config设置对当前的windows用户的影响

表一:网站运行在Windows XP上

 

IIS设置anonymouse accessanonymouse accessintegrated windows authenticationintegrated windows authentication 
web.config设置此处无论<authentication mode="XXXXX"/>结果都一样<identity impersonate="true"/>此处无论<authentication mode="XXXXX"/>结果都一样<identity impersonate="true"/> 
取得current user的名字ASPNETIUSR_CVIS-TEST1ASPNETv-ricyan(login) 
备注XP,Windows2003都不需要登录XP,Windows2003都不需要登录,此时取得的IUSR_CVIS-TEST1是anonymouse默认运行的账户XP客户端不需要登录,windows2003客户端需要登录XP客户端不需要登录,windows2003客户端需要登录 

 表二:网站运行在Windows2003

IIS设置anonymouse accessanonymouse accessintegrated windows authenticationintegrated windows authentication 
web.config设置此处无论<authentication mode="XXXXX"/>结果都一样<identity impersonate="true"/>此处无论<authentication mode="XXXXX"/>结果都一样<identity impersonate="true"/> 
取得current user的名字SYSTEMIUSR_CVIS-TEST1SYSTEMv-ricyan(login) 
备注XP,Windows2003都不需要登录。这时取得的用户是application pool运行账户,我把运行账户设置为本地系统用户了XP,Windows2003都不需要登录,此时取得的IUSR_CVIS-TEST1是anonymouse默认运行的账户XP,Windows2003都不需要登录。这时取得的用户是application pool运行账户,我把运行账户设置为本地系统用户了XP客户端不需要登录,windows2003客户端需要登录


标签: 服务器 .net c#

et_highlighter
发表评论 »本文目前尚无任何评论

发表评论

干净网络从你做起,切勿黏贴小广告