powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / SPNEGO не авторизует пользователей с большим числом групп.
25 сообщений из 49, страница 1 из 2
SPNEGO не авторизует пользователей с большим числом групп.
    #39003671
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На работе поставили задачу - сделать в уже имеющемся java веб-приложении сквозную авторизацию с Windows учеткой (Active Directory).
Сейчас работает следующая связка tomcat 7.0.56+spnego_r7 (+nginx proxy) на linux (RHEL), jdk 8_20. Все неплохо работает, логин Windows получает servlet - request.getUserPrincipal(). Но все работает только для пользователей (AD) с несколькими группами (2-3 memberOf).

Для пользователей с большим количеством групп (memberOf) в браузерах (IE, Chrome, Firefox) вылазит ошибка “ERR::UNEXPECTED”: provisional headers are shown. Логи пусты, хоть я и выставил следующие параметры:

-Dsun.security.krb5.debug=true -Dsun.security.spnego.debug=all

И

<init-param>
<param-name>spnego.logger.level</param-name>
<param-value>1</param-value>
</init-param>

Но в логах все равно показываются только успешные попытки аутентификации. Ошибок нет.

Я повышал buffers, header в nginx и tomcat до 64k (так же ради эксперимента повышал до 1 мб, но потом вернул назад). Выставил MaxTokenSize в Windows реестре на необходимый максимум.
Пробовал так же различные связки версий JDK и tomcat. И все равно не работает, пробовал различные вариации

Может кто подскажет, что поправить, чтобы успешно аутентифицировались пользователи и с большим количеством привязанных групп?
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39003742
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А сам сервер на kdc ходит напрямую или через прокси? Возможно, в параметры запуска надо добавить -Dhttp.nonProxyHosts
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39003823
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нечто подобное было с самим Active Directory

он по умолчанию возвращает не всех пользователей ,а какое-то количество (не более 1000).. возможно нужно смотреть в эту сторону ...

так например , не работало получение списка всех почтовых адресов (возвращались только 200 шт) в thunderbird /

так же в коде c# (System.DirectoryServices.dll Свойство DirectorySearcher.PageSize) итд ...
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39003827
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://docs.spring.io/spring-ldap/docs/2.0.4.CI-SNAPSHOT/reference/ как пример работы ... попробуйте написать маленький тест и посмотрите работает ли он?
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004096
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все стопорится на 7 пункте, а именно при импортировании полученного токена в браузер. В klist при заходе на сайт ключ появляется.


Но потом в браузере красуется следующее «Provisional headers are shown» - обычно такое сообщение выходит, когда какое-то расширение браузера блокирует запросы/контент.
Но данный скриншот сделан в режиме инкогнито, где все расширения заблокированы, тем более это происходит во всех браузерах.
https://drive.google.com/file/d/0Bxqnx1qVPbX6dGtoS0M0RjltUHM/view

При логировании nginx так же видно, что пользователь отправляет пустые хедеры (в случае если пользователь состоит в большом количестве групп). Т.е. нужный header Authorization даже не доходит до nginx, tomcat.

При успешной аутентификации получается так:
https://drive.google.com/file/d/0Bxqnx1qVPbX6c0xnZmxWcHlWeGM/view

Есть у кого какие мысли, почему браузер не может получить ключ, хотя он уже получет от AD?
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004131
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeyKh24,
если в сети есть прокси, и локальные адреса не добавлены в исключения, то передаваемые заголовки могут резаться на прокси. По какому критерию - может знать только админ. Например, если они слишком большие.
Проверьте ваши настройки, в том числе и на сервере приложений (-Dhttp.nonProxyHosts)
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004320
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanra, выставил -Dhttp.nonProxyHosts="*.rt.ru" - не помогло.
Вообще сервер приложений, nginx и kdc находятся во внутренней сети, так что они изначально без прокси общаются.

Мне непонятно, почему браузер не помещает в request header ключ, хотя пользователь его получает при заходе на сайт (видно в klist). Может на сервере AD есть какие-то волшебные настройки? Админы же говорят, что ничего не знают.

Меня если честно напрягает данная задача, т.к. затуп в ней не в программистской, а в админской части. Но надо как-то решать...
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004371
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeyKh24,
а у клиентов настроен обход прокси при обращении к локальным адресам? А то вполне может быть, что браузер как раз заголовок посылает, а до сервера он не доходит, так как обрезается на прокси. Или в консоли браузера видно, что заголовок не отправляется?
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004391
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да все описание проблемы мутное какое-то.
Вот понятно, что браузер, т.е. клиентская часть какого-то веб-приложения, должна отправить определенный заголовок куда-то, но не отправляет.
При этом эта самая клиентская часть должна до того этот заголовок откуда-то получить.
Все эти операции выполняются по протоколу http.
И все ответы и запросы видны в консоли браузера.
И на джава скрипт, который сначала что-то от кого-то принимает, а потом отдает в другое место тоже можно посмотреть.

Сначала надо посмотреть на то, что было принято. Прежде чем шуметь о том, что оно почему-то не пересылается дальше.
Чем оно отличается от того, что нормально принимается и пересылается (по содержимому).
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004402
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yelena,
+1
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004450
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanra, да, обход прокси настроен.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004464
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что в консоли браузера?
На 7 шагу он должен отправлять запрос с заголовком
Код: powershell
1.
Authorization:	Negotiate ...и дальше идет токен


и получать от сервера ответ с заголовком
Код: powershell
1.
WWW-Authenticate:	Negotiate ...


- если такой запрос не отправлятся, то к админам
- если отправляется, но не доходит до сервера - смотрим кто крадет этот заголовок (например, прокси)
- если доходит до сервера, то тут, скорее всего, дело не в аутентификации, а в авторизации (spnego протокол ни при чем). Надо смотреть ту часть логин-модуля, которая занимается ролями пользователя
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004467
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanra, да, из фото же видно, что сам браузер почему-то не отправляет хедер в случае, если пользователю прикреплено много групп (от 10). И я не знаю, как браузер получает хеш из kerberos ключа, все это инкапсулировано. В итоге на сервере поэтому и нет ошибочных логов, т.к. он попросту не видит, что ему что-то приходит.

yelena, все что вы описали - инкапсулировано от моих глаз, и почти никак не зависит от моих действий. js в явном виде (именно на этой странице) нет. Код страницы - обычный сервлет, внутри которого вызывается getUserPrincipalName (метод тоже "из коробки"). Остальное все делается с помощью spnego и самого AD, ну и встроенных в Windows клиента процессов по синхронизации работы браузеров и kerberos/AD. Если рассматривать случай, когда аутентификация не проходит, то (как видно по фото) никаких особо полезных логов в Networke браузера нет, пробовал в различных браузерах.

Настройка spnego: krb5.conf, login.conf, web.xml - стандартная. И как я уже упоминал, с количеством групп не более 3 - пускает.

Большие хедеры к nginx/tomcat проходят, проверял вручную.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004470
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanra, вот именно, что он ничего не отправляет, пишет только "provisional headers are shown". Показывал я это уже админам. Молчат, не хотят разбираться. Точнее говорят, что это я "чего то наколбасил" такого, что не работает. Но сервлет по этому url'у очень прост.
Видимо ждут, когда сроки начнут гореть, а начальство из Москвы начнет негодовать :-)

Я понимаю, если бы совсем ничего не работало. Но работает же прекрасно с некоторыми пользователями.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004471
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyKh24,

Не пробовали удалять группы по одной из групп пользователя? Может всё же дело в настройках одной какой-то группы, а не в количестве?
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004475
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyKh24,

А какой текст ошибки в FireFox, особенно интересно в FireBug посмотреть.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004481
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё, как вариант, вместо браузера взять для теста простейший Java клиент. В нём уже посмотреть детальный лог.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004490
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyKh24,

У вас один домен используется как при аутентификации, так и в сервисах? CORS не настроен?
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004491
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeyKh24ivanra, да, из фото же видно, что сам браузер почему-то не отправляет хедер в случае, если пользователю прикреплено много групп (от 10). И я не знаю, как браузер получает хеш из kerberos ключа, все это инкапсулировано. В итоге на сервере поэтому и нет ошибочных логов, т.к. он попросту не видит, что ему что-то приходит.

yelena, все что вы описали - инкапсулировано от моих глаз, и почти никак не зависит от моих действий. js в явном виде (именно на этой странице) нет. Код страницы - обычный сервлет, внутри которого вызывается getUserPrincipalName (метод тоже "из коробки"). Остальное все делается с помощью spnego и самого AD, ну и встроенных в Windows клиента процессов по синхронизации работы браузеров и kerberos/AD. Если рассматривать случай, когда аутентификация не проходит, то (как видно по фото) никаких особо полезных логов в Networke браузера нет, пробовал в различных браузерах.

Настройка spnego: krb5.conf, login.conf, web.xml - стандартная. И как я уже упоминал, с количеством групп не более 3 - пускает.

Большие хедеры к nginx/tomcat проходят, проверял вручную.

Ну что значит "инкапсулировано от моих глаз"? Вы говорите, что есть какой-то "сервлет, внутри которого вызывается getUserPrincipalName". Я, извините, не понимаю, на каком этапе цепочки он принимает запрос и извлекает оттуда UserPrincipalName.

Но я четко понимаю, что в браузере видны сгенерированные веб-страницы. И если запрос со страницы куда-то уходит и ответ откуда-то приходит, то можно в консоли браузера посмотреть на полученный откуда-то там ключ, когда он получен в браузере.
Это 100%. Я понимаю, что этот "хороший" ключ отличается от "плохого" ключа.

Если вы дебажить свое приложение не будете, то вы с места не сдвинетесь.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004496
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, CORS тут пока ни при чем. У него тестовый стенд не меняется и в некоторых случаях авторизация проходит удачно.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004503
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сервлет, внутри которого вызывается getUserPrincipalName
- Сама страничка JSP или какая?
- Сервлет вызывается по AJAX или как? В какой момент?
Нажмите F12 и отладчик вам всё покажет.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004506
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeyKh24,
так может, у этих пользователей сервер приложений просто не включён в список доверенных узлов?
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004517
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, уже понятно, что этот человек это приложение не разрабатывал, но пытается им пользоваться. Наверное, админ. Может, вернуть приложение разработчикам, указав на проблему, чтобы они его протестировали сами?
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004534
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yelena,
придется обращаться к разработчикам браузера ))

AlexeyKh24,
в firefox набрать about:config, а там искать network.negotiate-auth.trusted-uris
в хроме и эксплорере просить админа добавить для пользователя сервер приложений в список доверенных узлов (ну или настроить политику для всех пользователей)
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004543
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanrayelena,
придется обращаться к разработчикам браузера ))

Может быть, а может быть и нет. Сижу читаю, как это все настраивается. Только если бы в приведенном автором тему случае это вообще не работало, то не у него бы одного.
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / SPNEGO не авторизует пользователей с большим числом групп.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]