Подавите диалоговое окно NTLM после несанкционированного запроса

    public static List<T> Randomize<T>(List<T> list)
    {
        List<T> randomizedList = new List<T>();
        Random rnd = new Random();
        while (list.Count > 0)
        {
            int index = rnd.Next(0, list.Count); //pick a random item from the master list
            randomizedList.Add(list[index]); //place it at the end of the randomized list
            list.RemoveAt(index);
        }
        return randomizedList;
    }
7
задан Jonathan Leffler 23 November 2011 в 00:27
поделиться

2 ответа

Комментарий Mark's корректен; подлинная подсказка NTLM инициирована 401 кодом ответа и присутствием NTLM, поскольку первый механизм, предлагаемый в WWW - Аутентифицирует заголовок (Касательно: Протокол аутентификации NTLM).

Я не уверен, понимаю ли я описание вопроса правильно, но я думаю, что Вы пытаетесь перенести аутентификацию NTLM для SharePoint, который означает, что Вы не управляете протоколом аутентификации серверной стороны, корректным? Если Вы не сможете управлять стороной сервера, чтобы не отправлять 401 ответ на неудавшихся учетных данных, то Вы не сможете избежать этой проблемы, потому что это - часть (клиентской) спецификации:

Объект XMLHttpRequest

Если UA поддерживает Аутентификацию HTTP [RFC2617], это ДОЛЖНО рассмотреть запросы, происходящие из этого объекта быть частью пространства защиты, которое включает URIs, к которому получают доступ, и отправьте заголовки Авторизации и обработайте 401 Несанкционированный запрос соответственно. если аутентификация перестала работать, UAS должен предложить пользователям учетные данные.

Таким образом, спецификация на самом деле призывает, чтобы браузер предложил пользователю соответственно, если какой-либо 401 ответ получен в XMLHttpRequest, так же, как если бы пользователь получил доступ к URL непосредственно. Насколько я могу сказать единственному способу действительно избежать, чтобы это было бы, чтобы Вы управляли стороной сервера, и заставьте 401 Несанкционированный ответ избежаться, как Mark упомянул.

Одна последняя мысль - то, что Вы можете обходить это использование прокси, такого отдельного серверного сценария на другом веб-сервере. Тот сценарий затем берет пользователя и параметр передачи и проверяет аутентификацию, так, чтобы браузер пользователя не был тем, что делает исходный Запрос HTTP и поэтому не получает 401 ответ, это вызывает подсказку. Если Вы делаете это этот способ, которым можно найти из сценария "прокси", если это перестало работать, и раз так затем предложите пользователю снова, пока это не успешно выполняется. На событии успешной аутентификации можно просто выбрать Запрос HTTP, как Вы теперь, так как все работает, если учетные данные правильно указаны.

4
ответ дан 7 December 2019 в 07:53
поделиться

IIRC, браузер выталкивает подлинное диалоговое окно, когда следующее возвращается в потоке запроса:

  • Состояние Http 401
  • WWW - аутентифицируйте заголовок

Я предположил бы, что необходимо будет подавить один или оба из тех. Простой способ сделать, который должен иметь метод входа в систему, это возьмет имя пользователя Base64 и пароль (Вы используете HTTPS, правильно?) и возврат 200 с допустимым/недопустимым состоянием. После того как пароль был проверен, можно использовать его с XHR.

3
ответ дан 7 December 2019 в 07:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: