Возможна ли эта настройка Kerberos/AD?

У нас есть немного сложная установка IDAM:

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

Между двумя AD существует двустороннее доверие. Браузер в родительской сети имеет локальный домен на доверенных сайтах.

Настройка сервера Jetty выглядит следующим образом:

  • он использует файл keytab, сгенерированный против принципала в локальной AD
  • он работает как служба Windows под пользователем, определенным в локальной AD
  • область, отображение области-домена и kdc определяются для домена локальной AD
  • он использует spnego - isInitiator имеет значение false; doNotPrompt верно; storeKey это правда

Проблема в:

  • в качестве теста работает доступ к серверу из браузера внутри локальной сети (т. е. связан с локальной AD) - в журналах появляется информация об отладке Kerberos, я вижу правильное согласование Kerberos в HTTP-трафике, и пользователь автоматически входит в систему, Brilliant.
  • однако доступ к серверу из браузера внутри родительской сети (именно так будут поступать наши пользователи) не работает! Браузер возвращает 401 unauth, но затем запрашивает учетные данные, которые при вводе дают пустой экран. Затем, нажав в адресной строке и нажав Enter, можно выполнить одно из двух действий, в зависимости от того, используются ли учетные данные для удаленной или локальной AD:

    • Локальные учетные данные AD, затем войдите в систему, с Kerberos с нуля в журналах (GET запрос, 401 unauth ответ, запрос заголовков Kerberos и т. д.)
    • учетные данные удаленной AD не входят в систему (запрос GET, неверный ответ 401, что выглядит как заголовок NTLM: Authorization: Negotiate <60 or so random chars>)

В любом случае, тот факт, что это подсказывает, неверен!

Есть ли объяснение этим симптомам? Может ли у нас установка сделать то, что мы хотим?

Что касается приведенного выше описания, это может быть неверно: любая конфигурация, которую я упомянул относительно сервера Jetty, должна быть точной, как я это сделал. Я рад предоставить больше деталей. Любая конфигурация, касающаяся либо AD, либо родительского сетевого браузера, потенциально подозрительна, потому что она не находится под моим контролем, и мне сообщили о конфигурации, а не увидели ее для себя.

2 ответа

Решение

Не видя захвата пакета, я бы предположил, что имя участника- службы HTTP/www.website.com необходимо зарегистрировать в учетной записи, на которой запущено приложение. У службы каталогов Microsoft есть отличное сообщение, посвященное этой теме, по следующему адресу.

https://blogs.technet.microsoft.com/askds/2008/05/29/kerberos-authentication-problems-service-principal-name-spn-issues-part-1/

Запустите захват пакетов (netmon, wireshark) от клиента в каждой среде, чтобы определить, какое имя SPN ищется. Как только это будет определено, используйте команду setspn, чтобы зарегистрировать ее в учетной записи, на которой запущено приложение.

FWIW, Kerberos работает только в локальной сети. Если кому-то нужен доступ там, где контроллеры домена недоступны, вам следует рассмотреть возможность использования единого входа, такого как Shibboleth или ADFS.

РЕДАКТИРОВАТЬ: как упоминалось @ alex-h, браузеры должны быть настроены для автоматической аутентификации через Kerberos.

  • Internet Explorer - хотя статья TechNet не предназначена специально для вашего приложения, шаги аналогичны.
  • Firefox - то же самое, что ссылка IE, не точное совпадение, но шаги такие же.

Наконец, это распространенная проблема при развертывании Microsoft Sharepoint. Они хотят, чтобы единый вход через Kerberos происходил тихо после того, как пользователи прошли аутентификацию в домене. Таким образом, если приведенные выше ответы не решают вашу проблему, попробуйте проверить их форумы, такие как следующие:

Kerberos на Chrome, Safari или FireFox

Пожалуйста, попробуйте первый из браузера, в котором не включен NTLM (Chrome/Firefox). Кажется, проблема в том, что у вас включена предварительная аутентификация, и возможно, что двустороннее доверие может отсутствовать.

Для предварительной аутентификации посмотрите здесь https://support.microsoft.com/en-us/kb/2749007 и здесь https://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html,

Другие вопросы по тегам