我正尝试在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选项 – >高级