【发布时间】:2010-10-10 22:07:50
【问题描述】:
我正在尝试使用 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.Name 不输出当前用户名。
我补充说:
<authorization>
<deny users="?"/>
</authorization>
从我的用户立场来看,添加后,我可以从 User.Identity.Name 获取当前用户、用户名。
但是,一旦我添加了上述内容,浏览器现在会提示我输入用户名和密码。一旦我输入它,我就可以使用 User.Identity.Name 来获取用户名。但是我不希望弹出用户名/密码。我希望应用程序根据用户的网络凭据对用户进行身份验证。
我错过了什么吗?
【问题讨论】:
-
你用什么浏览器测试过?只有 IE 会通过 Windows 用户名/密码验证。
-
这不一定是真的 - FireFox 支持 Windows 集成身份验证。
-
是的,Firefox 对此没有任何问题,它只是不像 IE 那样默认将本地主机名视为受信任/内联网区域 - 但它确实可以配置为。甚至还有一个现成的 ADM 模板供 FF 使用,我认为懒惰的系统管理员可以使用。
-
这是检查清单顺便说一句:support.microsoft.com/kb/258063/en-us - 不确定,但在 IIS 中启用匿名身份验证也可能是个问题?
标签: asp.net windows security authentication