Странное поведение Firefox в приложении Asp.Net - PullRequest
1 голос
/ 01 августа 2011

Я занимаюсь разработкой приложения 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 ]

1 голос
/ 01 августа 2011

По умолчанию firefox не будет автоматически отправлять учетные данные NTLM.

Однако это можно переопределить через настройки браузера.

В большинстве случаев изменять параметры пользователей нецелесообразно.

Тем не менее, если вы разрабатываете приложение на основе интрасети, вам может потребоваться перейти на клиентские машины, которые вам необходимы.И я слышал, что вы можете массово изменить настройки, используя групповую политику.

Вот кое-что, с чего можно начать http://support.mozilla.com/en-US/kb/Firefox%20asks%20for%20user%20name%20and%20password%20on%20internal%20sites

Похоже, что страница неподдерживается, поэтому я не могу ручаться за это.

Однако я изменил эти настройки перед собой (подумал, извините, что не могу найти тот учебник, который использовал).

0 голосов
/ 01 августа 2011

Это из-за реализации NTLM в Firefox.

Когда вы подключаетесь к сайту с помощью встроенной аутентификации, сервер сначала отвечает 401 и заголовком аутентификации, определяющим, какие методы аутентификации он поддерживает.Ваш браузер может реагировать на это несколькими способами.С интегрированной аутентификацией, на самом деле есть 2 метода, которые делают одну и ту же вещь немного по-разному.

IE использует Kerberos, потому что, ну, это Microsoft.Этот метод использует только 1 поездку туда и обратно.Ваш браузер отвечает на вызов, который он получил выше, с помощью токена.Этот токен - это все, что нужно серверу, чтобы понять вас и впустить вас.

В Firefox они используют более старый, но лучше документированный NTLM.Firefox запрашивает у сервера вызов, на который он отвечает.Затем Firefox требуется ваше имя пользователя и пароль, чтобы ответить на этот вызов, и единственный способ получить это - спросить пользователя.

Затем он отвечает на вызов, используя зашифрованное значение, основанное на вашем имени пользователя и пароле.Если это соответствует вызову, который ожидал сервер, вы проходите аутентификацию.

Я полагаю, что в Chrome используется метод, аналогичный IE, поэтому вам не нужно запрашивать его.Суть в том, что вы не делаете ничего плохого и это просто так, как это работает.Я бы посоветовал прочитать пароли Challenge / Response, если вы хотите узнать больше.

Simon

...