Asp.net Windows身份验证提示输入用户名/密码

Asp.net Windows身份验证提示输入用户名/密码,asp.net,windows,security,authentication,Asp.net,Windows,Security,Authentication,我正在尝试使用AD/domain controller在客户端网络中部署应用程序 我的应用程序是一个简单的asp.net c#应用程序,使用windows身份验证 我正在使用win2003 基本上,使用VS2008创建一个新网站,托管在IIS6.0上。 只有两个变化。 1.在应用程序的IIS目录安全性上,启用了“集成安全性”。 注意:还启用了匿名 只生成对骨架代码的一个更改。 将以下内容添加到default.aspx的页面加载方法 using System.Security.Principal;

我正在尝试使用AD/domain controller在客户端网络中部署应用程序

我的应用程序是一个简单的asp.net c#应用程序,使用windows身份验证

我正在使用win2003

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

只生成对骨架代码的一个更改。 将以下内容添加到default.aspx的页面加载方法

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>");
}
使用System.Security.Principal;
...
受保护的无效页面加载(对象发送方、事件参数e)
{
WindowsIdentity id=WindowsIdentity.GetCurrent();
响应。写入(“Windows身份检查
”; 响应。写入(“名称:“+id.Name+”
”; 响应。写入(“
”); Response.Write(“User.Identity:+User.Identity.Name”); 响应。写入(“
”); }
浏览页面的输出: Windows身份检查-名称:NT授权\网络服务 用户。标识:

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

正如本文所讨论的

我补充说:

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

从我的userstand可以看出,当添加这个时,我可以从User.Identity.Name获得当前用户username

但是,一旦我添加了上述内容,浏览器现在会提示我输入用户名和密码。一旦输入,我就可以使用User.Identity.Name来获取用户名。但是,我不希望出现用户名/密码弹出窗口。我希望应用程序根据用户的网络凭据对其进行身份验证


我遗漏了什么吗?

你的网站使用的URL是什么,IE区域是什么?如果您的应用程序在LocalIntranet区域之外运行,则会阻止直通身份验证,并始终提示输入用户/密码。

IE的Internet选项中是否选择了“启用Windows集成身份验证”

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


应用程序的目录是否位于IIS服务器上,或者是否位于Windows共享权限将发挥作用的共享上?

检查internet explorer是否知道该站点是本地intranet区域的一部分。另外,在intranet区域的设置下,检查是否启用了自动登录。

您在IIS中的配置不正确-关闭匿名访问,然后将启动集成身份验证,前提是您也通过在web.config中设置了它

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


我认为您无法从服务器应用程序控制它,传递凭据是浏览器功能,在IE中,您可以建议您的用户在internet选项->高级中选中“启用Windows集成身份验证”

您不想更改we.config文件中的任何配置。在IS服务器管理器中的站点身份验证中,仅启用Windows身份验证并禁用其他身份验证

Windows身份验证需要您的=Windows凭据来验证用户。这就是提示登录的原因。为了避免这种情况,您需要在客户端浏览器中将站点IP或域设置为可信的intranet站点。 为此,

1) 转到浏览器设置->打开代理设置->安全->本地Intranet->站点->高级

2) 然后添加您的站点域或IP地址

现在,在清除浏览器缓存后,查看您的问题是否正常


这是我的工作。:)

您不想更改we.config文件中的任何配置。在IS服务器管理器中的站点身份验证中,仅启用Windows身份验证并禁用其他身份验证

Windows身份验证需要您的=Windows凭据来验证用户。这就是提示登录的原因。为了避免这种情况,您需要在客户端浏览器中将站点IP或域设置为可信的intranet站点。 为此,

1) 转到浏览器设置->打开代理设置->安全->本地Intranet->站点->高级

2) 然后添加您的站点域或IP地址

现在,在清除浏览器缓存后,查看您的问题是否正常

这是我的工作。:)

也检查一下这个

您测试的浏览器是什么?只有IE才能通过Windows用户名/密码身份验证。这不一定是真的-FireFox支持Windows集成身份验证。是的,FireFox对此没有问题。它只是不像IE那样默认将本地主机名视为受信任的/intranet区域-但它确实可以配置为。甚至有一个现有的ADM模板供FF使用,我认为是供懒惰的系统管理员使用的。下面是检查列表顺便说一句:-不确定,但在IIS中启用匿名身份验证也可能是一个问题?我仍在尝试使用在本地访问它。它会提示所有人,比如Firefox和ChromeCan,你可以将相关的IIS日志添加到你的问题中-查找401/200系列日志项。你也可以试试看,如果你得到提示?不要张贴相同的答案多次。