В моем проекте есть ряд интеграционных тестов, в которых используются TestRestTemplate
и MockMvc
.Они проходили успешно.
Я добавил в свой проект зависимости Spring Boot Starter Security
и Spring Security OAuth2 Autoconfigure
.Я добавил пользовательский класс, который расширяет WebSecurityConfigurerAdapter
, чтобы разрешить открытый доступ (на данный момент) к моей заявке.Вот класс
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity
.authorizeRequests()
.anyRequest()
.permitAll();
}
@Override
public void configure(WebSecurity webSecurity) {
webSecurity
.ignoring()
.antMatchers(HttpMethod.OPTIONS, "/**");
}
}
Приложение также должно действовать как OAuth2 Resource Server
, поэтому я также пометил свой основной класс с помощью @EnableResourceServer
.Я предоставляю путь к хранилищу доверенных ключей в качестве параметров запуска при запуске приложения.-Djavax.net.ssl.trustStore=<where the cert is stored locally> -Djavax.net.ssl.trustStorePassword=<the password>
Приложение работает нормально, но теперь все интеграционные тесты не пройдены.Вот пример ошибки, общей для всех тестов, использующих TestRestTemplate
Could not fetch user details: class org.springframework.web.client.ResourceAccessException, I/O error on GET request for <the path to my userinfo URL>:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Кажется, что TestRestTemplate
, который я использую для своих тестов, должен быть проинструктирован использовать то же хранилище ключей, что иприложение делает.Можно ли сделать это?Как это будет работать для MockMvc
?