Делегация Kerberos не работает в Chrome
У меня есть сервер IIS 7 с 2 сайтами - site1, site2.
site1 связывает порт 80, site2 связывает порт 81.
У меня есть веб-страница на сайте site2, которая отправляет запрос http через $.ajax()
на URL в site1.
Я настроил оба сайта для использования Kerberos:
Включена только проверка подлинности Windows, выбрано только согласование:kerberos в провайдерах.
Настроил SPN для пользователя / сервера в AD.
Я использую Fiddler для мониторинга заголовков запросов.
Когда я использую IE8, я вижу, что билет Kerberos делегируется от site2 к site1 через 2 перехода, как Kerberos должен работать.
Когда я использую Chrome, я вижу, что билет keberos не делегирован. Я получаю 401 ошибку.
Я попытался установить:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AuthNegotiateDelegateWhitelist"="*"
... (и конкретно имя сервера), но это не сработало.
Есть идеи?
5 ответов
Мне пришлось добавить то же значение реестра в этот ключ, чтобы все работало:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Chromium
Также интересно отметить, что я использую *.domain.local вместо *.
Просто столкнулся с этим в 2022 году. Chrome изменил ключи реестра, что было в белом списке, то нет в белом списке. Белый список больше не используется
https://support.google.com/chrome/a/answer/7679408#noNonIncl
Учитывая, что у нас есть Edge Chromium. Выполнение приведенного ниже сценария реестра исправит ошибки для обоих браузеров.
Редактор реестра Windows версии 5.00
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Edge]"AuthNegotiateDelegateAllowlist"="*"
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Google \ Chrome]"AuthNegotiateDelegateWhitelist"="*"
Я извлек оба ключа из своего реестра, где у них нет кавычек вокруг * в реестре, однако извлеченные ключи выглядят точно так, как я опубликовал выше
Имеет ли введенное вами значение кавычки?
Попробуйте войти *
без кавычек.
Выключите Chrome полностью (проверьте диспетчер задач, чтобы убедиться), а затем повторите попытку.
Если вы используете "*"
с кавычками это не сработает.
Это сработало только после того, как я добавил ключ AuthServerWhitelist в пару с ключом AuthNegotiateDelegateWhitelist.
Мой скрипт реестра теперь выглядит так:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AuthServerWhitelist"="*"
"AuthNegotiateDelegateWhitelist"="*"