Asp.net Windows身份验证提示输入用户名/密码
我正在尝试使用AD/domain controller在客户端网络中部署应用程序 我的应用程序是一个简单的asp.net c#应用程序,使用windows身份验证 我正在使用win2003 基本上,使用VS2008创建一个新网站,托管在IIS6.0上。 只有两个变化。 1.在应用程序的IIS目录安全性上,启用了“集成安全性”。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;
注意:还启用了匿名 只生成对骨架代码的一个更改。 将以下内容添加到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系列日志项。你也可以试试看,如果你得到提示?不要张贴相同的答案多次。