Я создаю приложение в Spring Boot и JavaFX в качестве клиента. Я использую RestEasy для отправки и получения данных из сервиса REST. Когда я не использую Spring Security, данные обычно отправляются и принимаются. Когда я добавляю Spring Security, у меня нет доступа к данным, и я не знаю, как получить к ним доступ с помощью RestEasy.
Мой тест REST Api:
@RequestMapping(value = "/test", method = RequestMethod.POST)
public ResponseEntity test(@RequestBody Usr usr) {
System.out.println(usr);
return new ResponseEntity("Ok", HttpStatus.OK);
}
@RequestMapping(value = "/test2", method = RequestMethod.GET)
public ResponseEntity test2() {
System.out.println("Test2");
return new ResponseEntity("OkGet", HttpStatus.OK);
}
Мой код, который связан с этим:
Вкл / конечная точка теста:
ClientRequest clientRequest = new ClientRequest(applicationUrl);
clientRequest.body("application/json", usr);
String o = (String)clientRequest.post(Usr.class).getEntity(String.class);
System.out.println("Resp: " + o);
Вкл / конечная точка test2:
ClientRequest clientRequest = new ClientRequest(applicationUrl2);
String o = (String)clientRequest.get().getEntity(String.class);
System.out.println("Resp: " + o);
Этот код работает, когда я не использую Spring Secuirty.
Я пытаюсь что-то вроде этого, но не работает, возвращает пустую строку и на стороне сервера данные в консоли не выводятся:
DefaultHttpClient client = new DefaultHttpClient();
client.getCredentialsProvider().setCredentials(
new AuthScope("localhost", 8090),
new UsernamePasswordCredentials("a", "a")
);
ApacheHttpClient4Executor executor = new ApacheHttpClient4Executor(client);
ClientRequest clientRequest = new ClientRequest(applicationUrl2, executor);
String o = (String)clientRequest.get().getEntity(String.class);
System.out.println("Resp: " + o);
Обновление - добавление конфигурации Spring Security
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/test", "/test2").authenticated()
.and().formLogin();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("a")
.password("{noop}a")
.roles("USER");
}