Рейтинг:0

tomcat9 shibboleth+mod_jk аутентификация запрещена

флаг in

У меня есть приложение Spring Boot, работающее в настоящее время под Tomcat 8.5, в которое встроен SSO на основе shibboleth. Shibboleth и tomcat подключаются с помощью apache2 mod_shib и mod_jk с использованием пакетов Debian 9 по умолчанию.

Сейчас я пытаюсь обновить среду приложения до Debian 10 (и, следовательно, tomcat 9), и большинство вещей работает с небольшими изменениями конфигурации, за исключением проверки подлинности на основе Shibboleth.

Если звонить /логин/шибболет (который настроен в apache для аутентификации с использованием shibboleth, а затем входа в приложение с использованием предоставленных общих переменных shibboleth), протокол аутентификации shibboleth SAML2 выполнен правильно (и сеанс shibboleth может быть запрошен после в apache), но метод обработчика за /логин/шибболет не вызывается (я проверил это с помощью удаленной отладки), но сам tomcat отказывается:

Статус HTTP 403 — Запрещено
Тип отчета о состоянии

Описание Сервер понял запрос, но отказывается авторизовать его.

Apache Tomcat/9.0.31 (Debian)

Я попытался изучить эту проблему, и одним из возможных решений, похоже, было использование секрета в коннекторе AJP. Определение одного (в файле server.xml tomcat9), похоже, не меняет поведения (также, mod_jk вроде нет соответствующей опции, поэтому мне интересно, как Любые функция работает, когда секрет настроен).

Есть ли у кого идеи по поводу:

  • Что может вызвать эту проблему.
  • Каковы возможные решения.
Рейтинг:0
флаг th

Соединитель AJP перестал пропускать любой старый атрибут запроса в последних версиях Tomcat. Атрибуты, которые передаются по умолчанию, описаны здесь: https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html#Стандартные_реализации

Вы можете проверить, является ли это причиной вашей ошибки 403, временно разрешив все атрибуты в определении вашего коннектора AJP (вероятно, найденные в server.xml).

<Connector protocol="AJP/1.3" 
           port="8009" 
           secret="your_ajp_secret" 
           allowedRequestAttributesPattern=".*" />

Если это работает, вы можете ограничить разрешенные атрибуты теми, которые вам действительно нужны. Это будет зависеть от реализации, но это сработало для меня: allowRequestAttributesPattern="^(Shib-.*|eppn)$â

Если ваша проблема действительно связана с секретом AJP, обратите внимание, что mod_proxy_ajp Apache до недавнего времени не поддерживал секреты. Однако вы найдете его задокументированным в последних версиях. Видеть https://httpd.apache.org/docs/2.4/mod/mod_proxy_ajp.html.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.