В приложении, где Spring-security-saml2-service-provider был обновлен с 6.3.x до 6.4.1 , у меня изменилось поведение, когда я пытаюсь получить доступ к списку зашифрованных утверждений в классе валидатора.
Я настраиваю валидатор ответа в своей конфигурации, как задумал Spring, :
Код: Выделить всё
var authProvider = new OpenSaml4AuthenticationProvider();
authProvider.setResponseValidator(responseValidator);
< pre class="lang-java Prettyprint-override">
Код: Выделить всё
class SamlResponseValidator implements Converter {
@Override
public Saml2ResponseValidatorResult convert(ResponseToken responseToken) {
// Without any other overrides, the below gives you the Spring-decrypted assertion:
var assertions = responseToken.getResponse().getAssertions();
// In 6.3, the below would _also_ contain the still-encrypted assertions while
// in 6.4, you'll always just get an empty list, it seems:
var encryptedAssertions = responseToken.getResponse().getEncryptedAssertions();
// (...)
}
}
Код: Выделить всё
// ...
int count = 0; //
Раньше response.getEncryptedAssertions().removeAll(encrypteds) не существовало.
Вопросы
[list]
[*]Это намеренное изменение поведения? Выглядит странно.
[*]Каков предполагаемый способ доступа к зашифрованному утверждению в валидаторе?
[/list]
Подробнее< /h3>
Я знаю, что возможное решение — выполнить responseToken.getToken().getSaml2Response() и снова проанализировать его.
Я также теперь просто переопределите используемый дешифратор, но это будет много значить копирования и вставки кода, который я на самом деле не хочу настраивать (и есть место для дополнительных ошибок и необходимости дополнительных тестов).
Подробнее здесь: [url]https://stackoverflow.com/questions/79271274/how-to-access-encrypted-assertions-after-migrating-to-spring-security-saml2-serv[/url]