Windows身份validation会提示input用户名/密码

我正尝试在AD /域控制器的客户端networking中部署应用程序。

我的应用程序是一个简单的asp.net c#应用程序,使用Windows身份validation。

我正在使用win2003。

基本上,使用VS2008,创build一个新的网站,托pipe在IIS6.0。 只有2个变化。 1.在应用程序的IIS目录安全性上,启用“集成安全性”。
注意:匿名也被启用。

只有一个更改生成的骨架代码。 将以下添加到default.aspx的page_load方法

using System.Security.Principal; ... protected void Page_Load(object sender, EventArgs e) { WindowsIdentity id = WindowsIdentity.GetCurrent(); Response.Write("<B>Windows Identity Check</B><br>"); Response.Write("Name: " + id.Name + "<br>"); Response.Write("<BR>"); Response.Write("User.Identity: " + User.Identity.Name); Response.Write("<BR>"); } 

浏览到页面的输出: Windows身份检查 – 名称: NT AUTHORITY \ NETWORK SERVICE User.Identity:

User.Identity.Name不会输出当前的用户名。

正如本文中讨论的http://weblogs.asp.net/scottgu/archive/2006/07/12/Recipe_3A00_-Enabling-Windows-Authentication-within-an-Intranet-ASP.NET-Web-application.aspx

我补充说:

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

从我的用户是,当这是添加,我可以从User.Identity.Name中获取当前用户,用户名。

但是,一旦我添加上面,浏览器现在提示我input用户名和密码。 一旦我input它,我可以使用User.Identity.Name来获取用户名。 但是我不希望popup的用户名/密码出现。 我希望应用程序根据networking凭据对用户进行身份validation。

我错过了什么吗?

检查Internet Explorer是否知道该站点是本地Intranet区域的一部分。 此外,在Intranet区域设置下检查是否启用了自动登录。

您在IIS中的配置不正确 – 关闭匿名访问,然后集成身份验证将启动,假设您也已经在您的web.config中设置它

 <configuration> <system.web> <authentication mode="Windows" /> </system.web> </configuration> 

您的网站使用的是什么网址,以及什么是IE区域? 如果您的应用程序在LocalIntranet区域之外运行,则传递身份验证被阻止,并始终提示用户/密码。

在IE的Internet选项中选择“启用Windows集成身份验证”?

您输入的IUSR_和用户名是否具有读取和执行权限到应用程序所在的目录?

应用程序的目录驻留在IIS服务器上,还是位于共享上,Windows共享权限将起作用?

我认为你不能控制它从服务器应用程序,它是浏览器功能通过证书,在IE中,你可能会建议你的用户检查“启用Windows集成身份验证”在Internet选项 – >高级