Shibboleth SSO и Spring SP: невозможно войти в систему из-за ошибки несоответствия InResponseToField

В моей производственной установке с 2 поставщиками услуг и 2 экземплярами IdP за балансировщиком нагрузки я вижу следующую ошибку в одном из журналов моего SP, и я не уверен, почему:

InResponseToField ответа не соответствует отправленному сообщению

Я использую Shibboleth 3, поставщик услуг Spring Security 3.1.2 RELEASE, Spring Security SAML 1.0.0.

Я не смог последовательно воспроизвести эту ошибку в Production, поскольку это может произойти либо тогда, когда пользователь нажимает на ссылку и требует повторной проверки подлинности, либо когда пользователь находится на экране входа в систему.

До сих пор я смог последовательно воспроизводить, удалив JSESSIONID поставщика услуг (например, перейдя в консоль Chrome и удалив его из списка файлов cookie) непосредственно перед нажатием кнопки submit на экране входа в систему.

Ниже приведен фрагмент журналов для одного из SP, когда эта ошибка возникает в Production - поставщик услуг создает другой JSessionID после аутентификации, аналогично настройке, которую я описал выше:

2018-03-05 06:33:38 DEBUG HttpSessionStorage:93 - Storing message a7a636i3hee345244e5j390hia90fg to session BC1B9DEC1CF797AA99FF3F8B4431D301

   2018-03-05 06:34:42 DEBUG HttpSessionStorage:117 - Message a7a636i3hee345244e5j390hia90fg not found in session FE9D2450284C49549E7AC212F1271045

   org.opensaml.common.SAMLException: InResponseToField of the Response doesn't correspond to sent message a7a636i3hee345244e5j390hia90fg
           at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:139)

Возможное решение с проблемой безопасности

Одним из возможных решений является отключение определенных проверок проверки запросов в поставщике услуг.

Этот пост форума предлагает использовать EmptyStorageFactory стратегия для SAML хранение и использование defaultTargetURL в SavedRequestAwareAuthenticationSuccessHandler боб.

В этом посте упоминается угроза безопасности с помощью этого обходного пути, когда существует возможность повторной атаки. Наши SP и IdP только HTTPS, так что это может быть смягчено - есть ли другие уязвимости, которые могут быть введены?

1 ответ

Это может быть проблема с вашей конфигурацией балансировщика нагрузки. В вашем случае важно настроить липкий сеанс в вашем балансировщике нагрузки. Рассмотрим сценарий, когда запрос на аутентификацию был сделан SP1, и ваш LB перенаправил ответ на SP2, в этом случае SP2 собирается выбросить эту ошибку, которую вы получаете. Если ваш LB перенаправляет ответ на SP1, логин будет работать нормально. Это может быть случайным случаем, и поэтому вы не можете последовательно воспроизвести эту ошибку. Попробуйте настроить липкий сеанс в вашем LB. Дайте мне знать, если это поможет.

Другие вопросы по тегам