HttpContext,WindowsIdentity,匿名IIS上的线程

时间:2011-08-03 14:38:56

标签: asp.net iis authentication

我在这方面做了很多工作,但似乎无法找到一个好的解决方案。

我有一个带有IIS的ASP.NET应用程序(.Net 3.5),用于从帐户中提取用户计算机名称和用户名。这适用于我的本地计算机,但使用IIS上传时,它会提供null或IIS APPPOOL / appname。在IIS上,我在“我的Web.config文件”中设置了“集成Windows身份验证”和“匿名”

<authentication mode="Windows"/>
<identity impersonate="true"/>

我试图以多种不同的方式访问用户信息,其中一些是:

HttpContext.Current.User.Identity.Name
System.Threading.Thread.CurrentPrincipal.Identity.Name
System.Security.Principal.WindowsIdentity.GetCurrent().Name
Environment.UserName

每个都可以在我的本地计算机上运行,​​但是当上传到IIS服务器时,所有内容都会提供无效信息。该应用程序是内部的,但我仍然需要它来获取用户名而不提供登录屏幕。想法?

更新:我已将IIS更改为禁用匿名身份验证并启用了Windows身份验证。我的web.config文件我尝试了以下

<authentication mode="Windows"/>
<!-- <identity impersonate="true"/> -->

<authorization>
  <deny users="?"/>
  <allow users="*"/>
</authorization>

对此更新感到抱歉,但有任何想法吗?

对于任何关注此问题且需要答案的人,问题出在IIS中。在IIS中的身份验证区域中,仅启用了ASP.NET模拟和Windows身份验证,其他应禁用。在Windows身份验证中,转到“高级设置”并取消选中“启用内核模式”身份验证。授权规则区域应允许所有用户(请注意这是在IIS中完成的,而不是在配置文件中完成)并且配置中的以下代码是必需的。

<system.web><authentication mode="Windows"/><identity impersonate="true"/></system.web>

希望这有助于某人,这里有一些帮助我的链接。祝你好运!

http://msdn.microsoft.com/en-us/library/aa302377.aspx

http://www.eggheadcafe.com/tutorials/aspnet/1f12cd61-6bb3-4ffd-bac1-124d40837006/aspnet-request-identity--an-analysis.aspx

0 个答案:

没有答案