Добавление аутентификации Shibboleth в Symfony

#php #.htaccess #authentication #symfony #shibboleth

#php #.htaccess #аутентификация #symfony #shibboleth

Вопрос:

Я разрабатываю приложение Symfony (изучаю Symfony с целью замены им существующего PHP-скрипта «старой школы»), и у меня возникла проблема с тем, чтобы поместить его «за» нашу аутентификацию Shibboleth.

Зачем это делать? Для этого приложения мне нужен $ _SERVER[‘REMOTE_USER’] . У приложения нет локальных учетных записей, пользователь не входит в приложение, но, как и многие ресурсы, мы защищаем их с помощью той или иной формы аутентификации.

У меня есть два сайта — виртуальные хосты, работающие на одном физическом сервере. (CentOS 7). Первый сайт имеет следующее в своем файле .htaccess:

 authtype shibboleth
ShibRequestSetting requireSession 1
require valid-user
  

У меня есть «phpinfo.php » файл там тоже есть, и вы можете запустить этот скрипт и, после шага аутентификации Shibboleth, получить выходные данные, которые включают правильное значение REMOTE_USER .

Другой виртуальный хост настроен как приложение Symfony 3.1. Я добавил эти три строки в начало его файла «.htaccess», но после прохождения этапа аутентификации Shibboleth браузер попадает в цикл и не идет дальше. (В Chrome значок «значок» заменяется стрелкой цикла, и он никогда не перестает вращаться.)

Если я нажму, а затем просмотрю источник этой все еще пустой страницы, я увижу следующее сообщение об ошибке:

 Error Message: Error decoding authentication request message
  

Я не уверен, как начать решать эту проблему, и надеялся, что кто-то видел это и знает, как помочь.

Спасибо.

С наилучшими пожеланиями, Стивен

Комментарии:

1. Почти наверняка цикл перенаправления. Я изменил DocumentRoot виртуального хоста — /var/www/vhost/candy — и поместил туда файл .htaccess, специфичный для Shibboleth. Папка Symfony находится в /var/www/vhost/candy/ bar, и если я укажу в своем браузере на «candy/ bar/ web/», я пройду шаг Shibboleth, а затем перейду к приложению Symfony.

Ответ №1:

Если я правильно понимаю, вы пытаетесь сделать поставщика услуг частью Symfony, и у вас уже есть IDP, работающий с Shibboleth.

В моем случае у меня также была аналогичная проблема, и это было связано с тем, что после утверждения apache SP возвращался к корневому URL-адресу. Прочитав много документации, я узнал, что если это значение установлено неправильно, вы можете добавить атрибут в shibbolet2.xml конфигурация под названием homeURL:

  <ApplicationDefaults entityID="https://sso/saml2/idp/metadata.php"

    REMOTE_USER="mail"

    homeURL="https://symfonyApp/redirect/after/login">
  

Попробуйте и перезапустите демон shib: /etc/init.d/shibd restart

Это может быть и другое. Но мне кажется, что на вашей стороне SP есть некоторые неправильные настройки.