Я пытаюсь написать тесты для моей загрузки Spring с приложением безопасности Spring, в котором API-ключ используется для аутентификации (через AbstractPreAuthenticatedProcessingFilter).Я использую следующие образцы, представленные на https://docs.spring.io/spring-security/site/docs/current/reference/html/test.html#securitymockmvcresultmatchers:
mvc.perform(
get("/profile")
.header(XApiAuthenticationFilter.X_API_KEY, apiKey)
.header(XApiAuthenticationFilter.X_API_SECRET, secret)
.andExpect(authenticated());
, но тест неожиданно завершается неудачей:
Аутентификация не должна быть нулевой
Проблема заключается в том, что до тех пор, пока я настраиваю свою безопасность .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
SecurityContextRepository SecurityContextPersistenceFilter является экземпляром NullSecurityContextRepository, и проверка не выполняется.Если я опускаю sessionCreationPolicy, HttpSessionSecurityContextRepository используется по умолчанию, и тест имеет зеленый цвет ...
Можно ли каким-либо образом использовать authenticated () без создания сеанса с помощью SecurityContextPersistenceFilter?