2016-12-07 3 views
1

У меня есть структура, где моя служба отдыха (SP) построена с использованием Spring Boot + Spring SAML для аутентификации и пользовательского интерфейса с использованием Nginx в качестве обратного прокси. Если вы звоните в службу по возврату/переписыванию с прямым URL-адресом, все работает нормально: вызов IDP становится аутентифицированным и возвращает ответ. Но если я вызываю ту же услугу, используя прокси-пароль, она терпит неудачу с InResponseToField Response не соответствует отправленному сообщениюSpring boot + Spring SAML не работает для NGINX proxy_pass

У меня есть структура, где пользовательский интерфейс использует NGINX в качестве веб-сервера и через SPIN NGX. SP, имеющий несколько экземпляров под LB. Используется SAMLContextProviderLB как поставщик контекста.

Как это сделать, используя Nginx.

ответ

1

Я подозреваю, что ваш Nginx не настроен на использование липких сессий. Это приводит к тому, что ответ IDP может приземляться на сервере, который не знает о запросе, который был первоначально отправлен с другого сервера, и, следовательно, не удалось его проверить. Руководство Spring SAML говорит:

Убедитесь, что обратный прокси или балансировка нагрузки настроена на использования липких сеансы.

Есть несколько возможных решений:

  • позволяет липкие сессии на Nginx, поэтому реакция идет на тот же сервер, который послал его
  • отключить валидации полого InResponseTo (см manual для более подробной информации)
  • включить репликацию сеанса HTTP, поэтому HttpSession, которая содержит отправленный запрос, распространяется на все серверы - для этого см. Например, spring-session
+0

Thanks Vladi. Ваш ответ всегда помогает. Я отправил свой следующий вопрос в отношении вашего предложения. Пожалуйста, предложите для них. – Mahesh

Смежные вопросы