Shibboleth/Nginx работает на нестандартном порту
Наша команда запускает все наши установки Nginx на 8443 вместо 443 по очевидной причине, что вам не нужно быть пользователем root для прослушивания порта, и поэтому процесс может быть запущен и остановлен с более низкими привилегиями. (Затем мы выставляем приложение на порту 443 с помощью правил таблиц IP или балансировщиков нагрузки.) Мы находимся в процессе интеграции Shibboleth для SSO для нашей аутентификации.
Я сталкивался с этой ошибкой:
OpenSAML.MessageDecoder.SAML2POST [2]: POST targeted at (https://myserver.com/Shibboleth.sso/SAML2/POST), but delivered to (https://myserver.com:8443/Shibboleth.sso/SAML2/POST)
Похоже, это связано с тем, что Nginx слушает на 8443, но публично выставляется на 443. В любом случае стоит сказать Шибболет, чтобы он прекратил добавлять 8443
на URL?
Я попытался прочитать вики Shibboleth и не увидел ничего, что объясняло бы этот сценарий. В Интернете я обнаружил один случай, когда кто-то делал нечто подобное, но единственный ответ, приведенный в цепочке, заключался в изменении какой-либо конфигурации Apache (я не смог найти эту конфигурацию Apache или ее эквивалент в Nginx).
1 ответ
В Apache вы можете обмануть модуль Shibboleth, думая, что он загружен на другой порт, указав порт в ServerName
директива, например ServerName example.com:443
даже когда он слушает :8443
,
Совсем недавно в ПО SP была добавлена ShibURLScheme, которая, "контролируя схему URL, которую Apache будет сообщать модулям, должна отражать логическую ценность, которую видят клиенты за пределами вашей сети".
Один из них должен работать. Вам просто нужно обмануть nginx, чтобы сообщить модулям Shibboleth, что запросы поступают из другого порта или заголовка узла.