Asp.Net应用程序中奇怪的Firefox行为

时间:2011-08-01 11:20:11

标签: asp.net authentication active-directory

我正在开发一个Asp.Net应用程序,它尝试连接到活动目录以进行登录。我知道我没有使用“最佳实践”来执行此操作,因此我将源代码附加到“Default.vb”中:

  

Dim User As System.Security.Principal.IPrincipal

     

Dim username As String

     

User = System.Web.HttpContext.Current.User

     

username = User.Identity.Name

     

如果User.Identity.IsAuthenticated那么
    '好吧做点什么

     

否则    '做某些人

     

结束如果

当我使用Chrome和Internet Explorer都没问题时:用户自动被签名为“已登录”。但是,如果我打开Firefox,它会用他的“内部”输入框询问用户名和密码...我不知道如何解释... firefox要求用户和密码:如果我输入我的活动目录用户名和密码(用于例如,我输入用户:MYCOMPANYDOMAIN \ stighy),然后我输入...

所以..我做错了什么?

2 个答案:

答案 0 :(得分:1)

默认情况下,firefox不会自动发送NTLM凭据。

但是可以通过浏览器设置覆盖它。

在大多数情况下,更改人员设置是不切实际的。

但是,如果您正在开发基于Intranet的应用程序,则可能需要在需要的客户端计算机上进行更改。我听说您可以使用组策略一起更改设置。

以下是让您入门http://support.mozilla.com/en-US/kb/Firefox%20asks%20for%20user%20name%20and%20password%20on%20internal%20sites

的内容

看来页面没有维护,所以我无法保证。

但是我在自己之前更改了这些设置(很抱歉我找不到我使用的确切教程)。

答案 1 :(得分:0)

这是因为在Firefox中实现了NTLM。

当您使用集成身份验证连接到站点时,服务器首先响应401和身份验证标头,以识别它支持的auth方法。您的浏览器可以通过多种方式对此做出反应。使用集成的auth,实际上有两种方法以略微不同的方式执行相同的操作。

IE使用Kerberos,因为它是微软。这种方法仅使用1次往返。您的浏览器会使用令牌响应上面遇到的挑战。这个令牌是服务器需要解决的所有问题,让你进入。

在Firefox中,他们使用较旧但更好记录的NTLM。 Firefox要求服务器提出服务器响应的挑战。 Firefox然后需要您的用户名和&密码来确认这个callenge,唯一的方法就是询问用户。

然后,它会根据您的用户名和密码使用加密值来应对挑战。密码。如果这符合服务器所期望的挑战,那么您将获得身份验证。

我猜Chrome使用类似于IE的方法,因此无需提示您。最重要的是,你没有做错任何事情。这只是它的工作方式。如果你想了解更多信息,我建议你阅读挑战/回复密码。

西蒙