Nano Hash - криптовалюты, майнинг, программирование

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

Я столкнулся с довольно странной проблемой в IE11, когда браузер переопределяет заголовок авторизации в моих запросах, хотя я устанавливаю его через AngularJS.

По сути, у меня есть HTTP-перехватчик, зарегистрированный для всех запросов, который выглядит так:

AuthInterceptorService.request = function (config) {
    config.headers.Authorization = "Bearer " + bearerToken;
}

Это прекрасно работает во всех браузерах (даже в IE при определенных условиях). Мое приложение настроено в IIS как разрешающее анонимную аутентификацию, и у меня отключена базовая/интегрированная аутентификация для этого дочернего сайта, однако в родительской конфигурации включена аутентификация Windows.

Что иногда происходит, так это то, что браузер делает запрос к корневому URL-адресу для статического файла (скажем, /favicon.ico). Этот запрос отклонен 401. Браузер отвечает согласованной аутентификацией и получает значок значка. На данный момент все другие браузеры по-прежнему позволяют моему коду устанавливать заголовок авторизации, но как только эта интегрированная аутентификация происходит в IE, заголовок авторизации, кажется, застревает - независимо от того, что делает мой код, заголовок авторизации всегда использует встроенную аутентификацию. Это приводит к тому, что все запросы к моему API терпят неудачу, поскольку токен Bearer отсутствует.

Мне удалось обойти проблему с иконкой, указав более локальную иконку (где статические файлы могут обслуживаться анонимно), но мне интересно, есть ли менее хакерское решение этой проблемы. Могу ли я каким-то образом убедить IE разрешить мне установить заголовок авторизации, даже если аутентификация Windows выполнялась по предыдущему запросу?

Примечание. Я нашел этот вопрос, который кажется связанным (возможно, тот же самый базовый причина).


Ответы:


1

Если вы посмотрите на пример операции согласования в документе RFC 4559, он включает псевдомеханизм используется IE для согласования выбора безопасности при аутентификации в IIS.

В первый раз, когда клиент запрашивает документ, заголовок Authorization
не отправляется, поэтому сервер отвечает

       S: HTTP/1.1 401 Unauthorized
       S: WWW-Authenticate: Negotiate

Клиент получит учетные данные пользователя, используя тип механизма SPNEGO GSSAPI, чтобы идентифицировать создание сообщения GSSAPI, которое будет отправлено
на сервер с новым запросом, включая следующий заголовок Authorization
:

       C: GET dir/index.html
       C: Authorization: Negotiate a87421000492aa874209af8bc028

Сервер декодирует данные gssapi и передает их механизму SPNEGO
GSSAPI в функции gss_accept_security_context. Если контекст не завершен, сервер ответит кодом состояния 401
с заголовком WWW-Authenticate, содержащим данные gssapi.

       S: HTTP/1.1 401 Unauthorized
       S: WWW-Authenticate: Negotiate 749efa7b23409c20b92356

Клиент декодирует данные gssapi, передает их в
Gss_Init_security_context и возвращает новые данные gssapi на сервер
.

Поэтому я не думаю, что вы можете вмешиваться во время переговоров, так как это внутренний процесс.

10.03.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..