Java - Безопасность включена, но я все еще могу отправить любой запрос - PullRequest
0 голосов
/ 01 июля 2018

У меня странная проблема. Я реализовал безопасность в своем приложении, войдите через учетные записи Google.

Мой класс securityconfig с переопределенным методом:

@Configuration
@EnableOAuth2Sso
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .csrf()
                .disable()
            .antMatcher("/**")
            .authorizeRequests()
            .antMatchers("/index.html")
                .permitAll()
            .anyRequest()
                .authenticated();
}
}

И, например, я хотел проверить эту конечную точку:

    @RequestMapping(path = "/add", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public Book addBook(@RequestBody Book book) {
    bookService.addBook(book);
    return book;
}

Я использую Почтальон, чтобы сделать это, и когда я нажимаю кнопку ОТПРАВИТЬ в первый раз, я получаю эту ошибку:

{
"timestamp": "2018-07-01",
"status": 415,
"error": "Unsupported Media Type",
"message": "Content type '' not supported",
"path": "/book/add"
}

Но со второй попытки (и с каждой следующей) я могу добавить книгу в библиотеку даже без кредиторов. Что я сделал не так?

1 Ответ

0 голосов
/ 01 июля 2018

Вы не применяете Аутентификацию на API, вы можете поставить ее на API следующим образом, у меня это работает

При доступе к аутентификации OAuth2 в параметре метода:

 @RequestMapping(path = "/add", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public Book addBook(OAuth2Authentication auth, @RequestBody Book book) {
    bookService.addBook(book);
    return book;
}

С аннотацией:

@PreAuthorize("hasRole('ROLE_AGENT')")
@RequestMapping(path = "/add", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    public Book addBook(OAuth2Authentication auth, @RequestBody Book book) {
        bookService.addBook(book);
        return book;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...