Windows通过Intranet web-app从用户计算机登录而不提示用户/通过

时间:2009-10-19 18:52:39

标签: asp.net .net-2.0 windows-authentication

我正在IE商店中创建一个Intranet Web应用程序,我正在寻找用户的登录计算机用户名而不提示用户名/密码组合。这很容易,直到将应用程序放在Web服务器上。似乎我在这里尝试的每个组合都会导致空字符串或提示输入登录信息。

我定义了:

    <authentication mode="Windows"/>
    <identity impersonate="true"/>

我正在尝试这些选项:

Response.Write("HttpContext: " & HttpContext.Current.User.Identity.Name & " \n")
Response.Write("Windows Identity: " & WindowsIdentity.GetCurrent.Name & " \n")
Response.Write("Thread: " & Thread.CurrentPrincipal.Identity.Name & " \n")
Response.Write(Request.ServerVariables("LOGON_USER"))
Response.Write(User.Identity.Name)

这些与IIS设置的任何组合中的任何一个似乎都不适合我。我采取了错误的做法吗?这可能吗?我该如何解决这个问题?

每当我将IIS切换为使用Windows集成身份验证时,它都会提示我输入用户名/密码。为什么是这样?我怎么能阻止它?

我想要的一个例子(如果不清楚)是

  

DOMAINNAME / USERNAME   要么   HOME / CHARLIE

5 个答案:

答案 0 :(得分:3)

确保托管您的应用程序的服务器位于IE安全设置下的Intranet区域中;默认情况下,IE不会自动将Windows身份验证凭据发送到其他区域中的站点。您可能还需要将站点的主机名添加到“受信任的站点”区域。

如果您的网站类似于intranet.mydomain.com,并且您的用户正在针对mydomain.com的Active Directory服务器进行身份验证,则会自动执行此操作;否则,您需要修改IE的设置,或者在您的Active Directory域成员的服务器上托管您的应用程序。

答案 1 :(得分:2)

我认为您可能希望设置网站以使用Integrated Windows Authentication

答案 2 :(得分:2)

模仿和授权是一个棘手的野兽。在您的情况下,您至少需要为您的网站使用集成身份验证。

有关详细信息,请参阅此article on MSDN about impersonation and delegation

答案 3 :(得分:0)

还要确保在IE中启用了“启用集成Windows身份验证”设置。

答案 4 :(得分:0)

基本上确保您域中的用户IE浏览器会在不提示用户的情况下对用户进行身份验证。这是客户端浏览器设置问题。