SAML2 исключение inresponsetofield ответа не соответствует отправленному сообщению - PullRequest
0 голосов
/ 15 февраля 2019

Мы используем 'spring-security-saml2-core: 1.0.4.RELEASE' для реализации единого входа.Но в одном случае мы получим эту ошибку: «InResponseToField ответа не соответствует отправленному сообщению a3b529hi99h247cj2b0670ja8a5fdcf».В этом случае необходимо выполнить следующие действия:

1.открыть страницу входа в систему на нашем веб-сайте

2.Не делать ничего и подождать 30 минут до истечения этого времени http-сеанса

3.Ввести пользователяимя и пароль, затем нажмите кнопку входа в систему

4. возникает ошибка 'InResponseToField ответа не соответствует отправленному сообщению'

Я обнаружил эту ошибку в коде ядра saml WebSSOProfileConsumerImpl.java

    // Verify response to field if present, set request if correct
    SAMLMessageStorage messageStorage = context.getMessageStorage();
    if (messageStorage != null && response.getInResponseTo() != null) {
        XMLObject xmlObject = messageStorage.retrieveMessage(response.getInResponseTo());
        if (xmlObject == null) {
            throw new SAMLException("InResponseToField of the Response doesn't correspond to sent message " + response.getInResponseTo());
        } else if (xmlObject instanceof AuthnRequest) {
            request = (AuthnRequest) xmlObject;
        } else {
            throw new SAMLException("Sent request was of different type than the expected AuthnRequest " + response.getInResponseTo());
        }
    }

Похоже, что saml проверит ответ с помощью 'messageStorage.retrieveMessage (response.getInResponseTo ())' И я обнаружил, что по умолчанию messageStorage - это HttpSessionStorage, который основан на HttpSession.

Так что я думаю, что по истечении времени сеанса messageStorage.retrieveMessage вернет ноль.

Поэтому я увеличил тайм-аут сеанса с помощью config 'server.servlet.session.timeout = 60m'. Однако он не работает.

По-прежнему возникает ошибка через 30 минут, а не через 60 минут.,Я ожидаю, что это не произойдет ошибка через 60 минут.Кто-нибудь может мне помочь?Большое спасибо!

...