惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
The GitHub Blog
The GitHub Blog
小众软件
小众软件
美团技术团队
博客园 - 司徒正美
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
大猫的无限游戏
大猫的无限游戏
罗磊的独立博客
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Docker
J
Java Code Geeks
Last Week in AI
Last Week in AI
V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
V
V2EX
C
Check Point Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog

博客园 - 杨发达

Tracking User Activity export to csv + excel 打开乱码的问题 iis asp.net window 认证中的问题。 - 杨发达 sqlserver+job+ 超时 - 杨发达 - 博客园 在XML文件中有些字符是被禁止使用的 在ASP.NET应用程序中使用身份模拟(Impersonation) - 杨发达 - 博客园 Snap 链接预览的应用 sql2005 fulltext search : 根据menu的配置项,执行定义的event How to generate an RSS feed for your web site using ASP.NET - 杨发达 .net Application Localization的db 实现 如何制作Mht 文件 + dotnet Composite UI Application Block Study (前) 开源的SSO方案--SourceID.NET OLAP 资源 使用CAB 建立Like Dnn 的桌面应用系统框架- window form application framework olap 常用的前台 Control Javascript: 设置textbox 为readonly . install window service
在ASP.NET应用程序中使用身份模拟+2.0
杨发达 · 2008-11-24 · via 博客园 - 杨发达

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


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

二、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 access anonymouse access integrated windows authentication integrated windows authentication  
web.config设置 此处无论<authentication mode="XXXXX"/>结果都一样 <identity impersonate="true"/> 此处无论<authentication mode="XXXXX"/>结果都一样 <identity impersonate="true"/>  
取得current user的名字 ASPNET IUSR_CVIS-TEST1 ASPNET v-ricyan(login)  
备注 XP,Windows2003都不需要登录 XP,Windows2003都不需要登录,此时取得的IUSR_CVIS-TEST1是anonymouse默认运行的账户 XP客户端不需要登录,windows2003客户端需要登录 XP客户端不需要登录,windows2003客户端需要登录  

 表二:网站运行在Windows2003

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