У меня есть веб-приложение Spring-boot, которое использует проверку подлинности SAML, предоставленную https://samltest.id/.
Оно отлично работает на localhost, но сейчас я пытаюсь поставить его на сервер Nginx Ngnix настроен так, что любой http-запрос перенаправляется на https, а https://myserver.company.com/myApp/ отправляется на http://local_ip: local_port / .
. Этот cfg работает нормально, если приложение не имеет безопасности, но с SAML результат: когда я захожу на домашнюю страницу приложения, я перенаправляюсь на страницу входа (правильно), и после успешного входа я перенаправляюсь на https://myserver.company.com/saml/SSO/ из https://myserver.company.com/myApp/saml/SSO, поэтому Nginx дает 404.
Метаданные. xml содержит:
<md:AssertionConsumerService Location="http://myserver.company.com:80/saml/SSO"
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" isDefault="true" index="0"/>
<md:AssertionConsumerService Location="http://myserver.company.com:80/saml/SSO"
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" index="1"/>
Обратите внимание, что URL являются http * На основе 1026 *.
После большого поиска в Google я попробовал следующее: Я изменил конфигурацию SAMLProcessingFilter
, чтобы свойство filterProcessesUrl
было "/myApp/saml/SSO"
вместо значения по умолчанию "/saml/SSO"
.
Теперь метаданные. xml содержат:
<md:AssertionConsumerService Location="http://myserver.company.com:80/myApp/saml/SSO"
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" isDefault="true" index="0"/>
<md:AssertionConsumerService Location="http://myserver.company.com:80/myApp/saml/SSO"
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" index="1"/>
и после входа в систему меня перенаправляют на https://myserver.company.com/myApp/saml/SSO, но на этот раз я получаю 404 из веб-приложения вместо Nginx (страница ошибки другая).
Чего мне не хватает?
ОБНОВЛЕНИЕ: 3-я попытка
* 10 46 * Восстановлено
SAMLProcessingFilter
cfg по умолчанию, изменило контекст root моего приложения, чтобы оно было
http://local_ip: local_port / myApp , изменено Nginx cfg, чтобы
https://myserver.company.com/myApp/ отображалось на
http://local_ip: local_port / myApp (тот же контекст root), установлено
entityBaseURL
свойство от
MetadataGenerator
до
https://myserver.company.com/myApp, загрузило новые метаданные. xml в
https://samltest.id/ (теперь оно содержит URL-адреса https).
Теперь, после успешного входа в систему, я перенаправлен на https://myserver.company.com/myApp/saml/SSO, как и ожидалось, но я получаю 401 из приложения с сообщением «Ошибка аутентификации: входящее сообщение SAML недействительно» и в журнале приложения есть «org.opensaml.common.SAMLException: неподдерживаемый запрос».