powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / SPNEGO не авторизует пользователей с большим числом групп.
49 сообщений из 49, показаны все 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
SPNEGO не авторизует пользователей с большим числом групп.
    #39004553
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yelenaBlazkowicz, CORS тут пока ни при чем. У него тестовый стенд не меняется и в некоторых случаях авторизация проходит удачно.
yelena, если вы не коллега ТС, то оставьте свои остроумные комментарии при себе. В 90% подобных случаев ТС что-то где-то недоглядел и проблема была совсем не там где искали. Вот я и предлагаю варианты.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004556
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yelenaВ общем, уже понятно, что этот человек это приложение не разрабатывал, но пытается им пользоваться. Наверное, админ. Может, вернуть приложение разработчикам, указав на проблему, чтобы они его протестировали сами?
Не все телепаты, похоже, в отпуске. Давайте вы не будете судить о компетенции ТС, так как из комментариев выше видно что его компетенция в SPNEGO поболе вашей.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004561
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, извините, но и вашей компетенции тут тоже не хватает. А мне эта тема интересна, поэтому буду читать и высказываться. Тут люди не крутизной меряются. А если бы автор по-аккуратнее суть проблемы объяснил, то, может, и лишних комментариев не было бы.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004575
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yelenaBlazkowicz, извините, но и вашей компетенции тут тоже не хватает.
Хамло.

yelenaА мне эта тема интересна, поэтому буду читать и высказываться. Тут люди не крутизной меряются.
Да-да. В общем, уже понятно, что вам уже всё понятно:
yelenaВ общем, уже понятно, что этот человек это приложение не разрабатывал, но пытается им пользоваться. Наверное, админ.

yelenaА если бы автор по-аккуратнее суть проблемы объяснил, то, может, и лишних комментариев не было бы.
Автор подробно объяснил что запрос из браузера в сервис каким-то образом блокируется и что это какой-то мистикой связано с группами пользователя. Нужно выяснить кто, на каком этапе и почему заблокировал запрос из браузера на сервер.
Автор четко обрисовал этот проблемный шаг и теперь в него стоит углубиться. Вы же предлагаете смотреть совсем в другую сторону.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004576
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yelena,

Вам, как эксперту, предлагается придумать какие причины блокировки запроса могут быть помимо AdBlock, Proxy и CORS?
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004587
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yelena, я разработчик приложения (но не браузера, и не клиента SPNEGO и не протокола Kerberos) и подробно расписал весь процесс. Я бы сам рад подебажить, но оно не дебажится и все тут. Дебажить я умею, и есть опыт дебага js, java, pl/sql.

Консоль и Network грубо говоря пустые. Дебажил в Chrome и IE. На следующей неделе доберусь до Firefox, просто все это надо настраивать на машине (учетке) тех, у кого не работает авторизация. Под своей же учеткой мне напряжно просить каждый раз админа добавлять/удалять группы, т.к. сам процесс успешной LDAP аутентификации мне нужен, т.к. допиливаю другие части по интеграции.

Описываю алгоритм еще раз и прикладываю логи nginx'a со специальным логированием хедеров:

Вначале успешный случай (малое число групп):
1) Отправляем запрос на /ldapAuthentication, получаем 401 и response header: WWW-Authenticate: Negotiation, что дает клиенту знак, что надо пообщаться с AD взять ключ и прислать хеш.
2) Получив ключ от AD отправляется еще один запрос /ldapAuthentication с request header’ом: Authorization (внутри которого хеш ключа), получаем статус 200.

Вот как выглядит nginx лог для пользователя с малым числом групп.
10.6*.**.*** - - [10/Jul/2015:09:34:40 +0500] "GET /ldapAuthentication HTTP/1.1" 401 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36" "-" "-" "Negotiate"
10.61.35.212 - - [10/Jul/2015:09:34:40 +0500] "GET /ldapAuthentication HTTP/1.1" 200 59 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36" "-" "Negotiate YIIJWQYGKwYBBQUCoIIJTTCCCUmgMDAuBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKwYBBAGCNwICHgYKKwYBBAGCNwICCqKCCRMEggkPYIIJCwYJKoZIhvcSAQICAQBuggj6MIII9qADAgEFoQMCAQ6iBwMFACAAAACjggd/YYIHezCCB3egAwIBBaEKGwhVUi5SVC5SVaIkMCKgAwIBAqEbMBkbBEhUVFAbEWRldi1ib2Vpc3NkLnJ0LnJ1o4IHPDCCBzigAwIBF6EDAgEDooIHKgSCByYrszBq0JBaM3n9f1PNw9NupMHKYpDfGCJzNYltK5nYi7c9K5FzuW3/Srk/j5OQ2/Udau5/jmy0Rhr4e464iRmakNqw3O9A7qG5o6tiHXk9njyEf4ND9pYq/molZSsJpFe7Y13+G/+6M2wc3RUIty5cOMNJKGvFj3VtjgdG0r75ecBTWNNZBSjzkZFpo5/QNqS9Zsbe2RrtXSR9pssY9f5Ass5LKiH0YoTI+FJvcLoLpIGTJP65URSPnNqkqDNNWxE2Y5XGSHJS0nGUWBova0+d58iM8TuQq1AHEejF6NXsbKeI0xVIn5VNjRkj3GY4cz/gblhpnUt7X300dQHvKBj3g2z35Y34lV5f1g+12xnBFVxcwgJguhbc68CBjGHb1eGV5/KQZcFp2aYXEG24oB180d4NfnkXm3ZZp+kUAmmOBsl/sTkxBylk3kcFvLok9kuVtuNNJBwHGl5R5va5hTWDKqj4ObCwSAq/uJZNy6iCaabe+pxO0e7HQUwxE/EDSykyDdITDo/vLcEiaMArf/9JlQbalCnZQLxnwWw7CiDQYe4wuVhgO8US7NzolE0+zW2iPWL/6m8Fq7TS3pGVMQQBkdZ3gSPOeNaolgi0IY7nrV9R2Zcp15RXzK7MOB7dlyEyfrge7PJnZZPP+HaG2f13P3l3osjAsgU9gvX/LTJ7AygB2RA13bbH24jehnqdPWVVB+zjXXb1FJ94Xa36uFl/k8qBwSa8GqdDwAEYH9i4A0bKDoTbtHnKqwZNROAiSeCdg3cbM+3PCyKT8VIF91xFk/aAf2w2bBbz8M8Taa+VGRMChXDr27az8ouSJlAtwitJmWAJIsxIlHhQsycAbJBMUnI3IdDW9x1TLn2Ws3x+JJVRq+U8PL5aQ18s71q2xkY1aDjdJL8yPCZ8DE2AX4cnxVoSbAFTx7nV5aOoUFZfqIx4B8RrYNrS0y+HYC2Qlvcz7WUE/EztzCpwfjfCMi3jks7jTu+3vh9sfQvKE6IeF4fslLz8UM3pa9mUIE05h65wFmw18f9C2/go5bUdmkggFcMIIBWKADAgEXooIBTwSCAUvgvr7/hrKIRoJzNHj51WdLQU9nrPJ19oct2a+JKtIzr21ki35jXF+H5YEArhBCBDNSlOb5s5f7TGOzIq78OAB9O4GsL5z9XGrneZZjhK0/R5S+ULjcxcOYyYSLOnnBQhYK19ObGqJNVIwRUJ3sjuf9Le5ad6sA6HEeCTtGKrqgm3+/2f7PlDBW4PFX7obPwIA8LDxUPrSkXb5e7VuiMql+xnzDYgcW/HHOvDlO+V/qSzzWx1IimUuldiiEngfTbSbF1LYB6fM3pjzCPui/0581id5aUkE/WeMxQDWrw9Lr0v9MU2IV3r7hvzrhHJz3r5jD87zJ8n4HVdrUSA7SBuDKU8dFrznneDvVOMvtyjcQf1GrbDB4z+PzYekXjkXW+vC0zbA0HbhcLQticJZZG9BFXF3o03gMqqukR5p/SSxqa22rDzWm+GoOLmSt" "Negotiate oYHrMIHooAMKAQChCwYJKoZIhvcSAQIComkEZ2BlBgkqhkiG9WMFSgAwIBBaEDAgEPokgwRqADAgEXoj8EPfBByib2vY9GjX/r4+r5ovCHSYONPN6gV9XpS+9s0PHFlknbFDf+QhLZfAb1YwVKADAgEFoQMCAQ+iSDBGoAMCAReiPwQ98EHKJva9j0aNf+vj6vmi8IdJg4083qBX1elL72zQ8cWWSdsUN/5CEtl+ko3GN7+xepfdVGDXpGjrv8lIdg=="

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

10.6*.**.*** - - [10/Jul/2015:09:37:17 +0500] "GET /ldapAuthentication HTTP/1.1" 401 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36" "-" "-" "Negotiate"
10.6*.**.*** - - [10/Jul/2015:09:37:17 +0500] "GET /ldapAuthentication HTTP/1.1" 401 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36" "-" "-" "Negotiate"

Видно, что сервер вначале отправляет получать ключ от AD, но потом браузер присылает запрос без хеша ключа, и отказ. Почему браузер во втором запросе не отправляет ключ - загадка, т.к. этот ключ уже есть в списке полученных ключей klist.
Код моего приложения тут не при чем, т.к. все по сути работает "из коробки". Весь вопрос сводится к тому, что может где-то что то подкрутить в конфиге spnego/krb5.conf/login.conf, и главное, может что-то надо изменить в AD.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004591
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да не кипятитесь вы.
Обе стороны интересны для решения.
Как "конфигуразм" библиотек и эксплореров, так и трейс\логи\отладка хидеров по маршруту или кода.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004596
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeyKh24, давайте я с вами буду общаться.

Я вот, например, не пойму, почему вы говорите, что затык происходит на 7-м шаге схемы.

На приведенных скриншотах (начнем с удачного) я вижу, что браузер делает запрос ldapAuthentication и получает ответ сервера с заголовком WWW-Authenticate:

Тогда по схеме браузер должен обратиться к Kerberos, а потом повторить запрос, указав authentication credentials. Это уже 7-й шаг.

Получается, что в плохом случае, у него с самого начала (с шага 1) цепочка не работает.

И еще в случае скриншота с удачным реквестом на 1-м шаге реквеста на скиншоте мы как раз и не видим, чтобы что-то сравнивать.


Я хочу поискать, чем можно подебажить обращение к Kerberos.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004599
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yelenaЯ хочу поискать, чем можно подебажить обращение к Kerberos. Хотя, наверное, он нормально и честно отрабатывает.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004602
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyKh24,

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

yelenaЯ вот, например, не пойму, почему вы говорите, что затык происходит на 7-м шаге схемы.
На приведенных скриншотах (начнем с удачного) я вижу, что браузер делает запрос ldapAuthentication и получает ответ сервера с заголовком WWW-Authenticate:
Тогда по схеме браузер должен обратиться к Kerberos, а потом повторить запрос, указав authentication credentials. Это уже 7-й шаг.
Получается, что в плохом случае, у него с самого начала (с шага 1) цепочка не работает.

Отвечает ТС:
AlexeyKh24Почему браузер во втором запросе не отправляет ключ - загадка, т.к. этот ключ уже есть в списке полученных ключей klist.

yelenaЯ хочу поискать, чем можно подебажить обращение к Kerberos.
Взять простейшего HTTP клиента на Java и включить там логировние теми же ключами что ТС привел в начале.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004608
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в spnego протоколе группы точно не принимают участие. Это только аутентификация.
Другое дело, если группы у таких пользователей сильно ограниченные, например, для этих групп не настроены доверенные сервера (или, по крайней мере, сервер приложений не является доверенным). А браузер передает токен только доверенным серверам. В этом случае результат будет именно таким, как на 1-й картинке
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004609
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123AlexeyKh24,
Сервлет вызывается по AJAX или как? В какой момент?

В данном конкретном случае при тестировании вызывается GET запросом, просто захожу по конкретному url в браузере. В приложении используется как GET запрос по AJAX, тоже нормально работает (для пользователей с небольшим количеством групп).

ivanraAlexeyKh24,

так может, у этих пользователей сервер приложений просто не включён в список доверенных узлов?

Включено, подробно настраивал браузеры IE, Firefox. Причем если залогиниться под моей учеткой с их компьютера - работает, т.к. у меня мало групп.

Blazkowicz У вас один домен используется как при аутентификации, так и в сервисах? CORS не настроен?

Домен один

BlazkowiczAlexeyKh24,

Не пробовали удалять группы по одной из групп пользователя? Может всё же дело в настройках одной какой-то группы, а не в количестве?

Если честно, то до такого экзотичного тестирования еще не доходили, но возможно скоро от безысходности придется попробовать. Вообще в SPNEGO у нас не настроена какая либо политика по группам, т.е. вход доступен всем, лишь бы ты был в домене.
А так были следующие тест-кейсы:
Мне добавили 40 доп тестовых групп - аутентификация перестала работать.
Создали учетку, копию блокируемой - не работает. Сократили количество до двух групп - работает.
Создали пустую учетку без групп - работает.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004618
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyKh24Мне добавили 40 доп тестовых групп - аутентификация перестала работать.

Тут пишут что нужно 120 групп.
https://support.microsoft.com/en-us/kb/327825
А ещё пишут что MaxTokenSize надо править на всех компьютерах, вовлеченных в процесс. То есть контроллер домена тоже.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004624
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczAlexeyKh24Мне добавили 40 доп тестовых групп - аутентификация перестала работать.

Тут пишут что нужно 120 групп.
https://support.microsoft.com/en-us/kb/327825
А ещё пишут что MaxTokenSize надо править на всех компьютерах, вовлеченных в процесс. То есть контроллер домена тоже.

MaxTokenSize настроен.
И да, странно, предупреждение не выдает про Header too long.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004627
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanraв spnego протоколе группы точно не принимают участие. Это только аутентификация.
Другое дело, если группы у таких пользователей сильно ограниченные, например, для этих групп не настроены доверенные сервера (или, по крайней мере, сервер приложений не является доверенным). А браузер передает токен только доверенным серверам. В этом случае результат будет именно таким, как на 1-й картинке

Это уже поинтереснее предположение. Не очень разбираюсь в настройке групп в AD, в понедельник видимо будем мучать админа.
Но если им нет явного доступа к этому ресурсу, или он недоверенный - то почему в klist появляется ключ для конкретного пользователя и конкретного сайта?
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004633
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С другой стороны, группы опять же влияют на размер хеша.
TokenSize = 1200 + 40d + 8s
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004720
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeyKh24MaxTokenSize настроен.
И да, странно, предупреждение не выдает про Header too long.

Выскажусь. Версия про MaxTokenSize же очень быстро проверяется. Если klist показывает выданный токен, то измерить его длину несложно.

А Header too long - это ж ругань от сервера, если он такой длинный токен получает. Браузер так ругаться не может.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004763
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeyKh24И я не знаю, как браузер получает хеш из kerberos ключа, все это инкапсулировано.

А это не просто base64? Вы не проверяли?
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004801
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мысль по дебагу. Может, через chrome://net-internals или Wireshark посмотреть, как браузер с Kerberos общается? Можно будет тогда узнать, что токен не повредился, нормально дошел.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004852
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yelenaAlexeyKh24И я не знаю, как браузер получает хеш из kerberos ключа, все это инкапсулировано.

А это не просто base64? Вы не проверяли?

Я права насчет base64. Нашла вот такой текст:

авторConfigure the MaxFieldLength and the MaxRequestBytes registry keys on the IIS server with a value of 4/3 * T, where T is the user's token size, in bytes. HTTP encodes the Kerberos token using base64 encoding and therefore replaces every 3 bytes in the token with 4 base64 encoded bytes.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004864
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
How to enable Kerberos event logging https://support.microsoft.com/en-us/kb/262177
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39004890
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yelena, да, спасибо за направление.

Попробую на след неделе chrome://net-internals/#events, Wireshark/TCPMon, ну и параметр реестра LogLevel.
...
Рейтинг: 0 / 0
SPNEGO не авторизует пользователей с большим числом групп.
    #39023723
AlexeyKh24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем все волшебным образом заработало, когда сменили kdc ur.rt.ru на ks.rt.ru. Так что возможно проблема была именно в самом kdc Уральском. Так что моя совесть чиста :-)
...
Рейтинг: 0 / 0
49 сообщений из 49, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / SPNEGO не авторизует пользователей с большим числом групп.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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