#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 есть некоторые неправильные настройки.