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

时间:2009-03-03 00:58:16

标签: asp.net windows security authentication

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

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

我正在使用win2003。

基本上,使用VS2008,创建一个在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获取当前用户的用户名。

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

我错过了什么吗?

7 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

您在IIS中的配置不正确 - 关闭匿名访问,然后集成身份验证将启动,假设您也已通过

在web.config中设置它
<configuration>
    <system.web>
        <authentication mode="Windows" />
    </system.web>
</configuration>

答案 2 :(得分:1)

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

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

1)转到浏览器设置 - &gt;打开代理设置 - &gt;安全 - &gt;本地内联网 - &gt;网站 - &gt;高级

2)然后添加您的站点域或IP地址 enter image description here

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

这项工作对我而言。 :)

也检查一下 Receiving login prompt using integrated windows authentication

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

您输入的IUSR_和用户名是否都具有对托管应用程序的目录的“读取”和“执行”权限?

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

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

1)转到浏览器设置 - &gt;打开代理设置 - &gt;安全 - &gt;本地内联网 - &gt;网站 - &gt;高级

2)然后添加您的站点域或IP地址 enter image description here

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

这项工作对我而言。 :)