Spring Security всегда получает 401 на все запросы, кроме get - PullRequest
0 голосов
/ 25 марта 2020

Я очень плохо знаком с безопасностью Spring, мой класс WebSecurityConfiguration.kt выглядит следующим образом:

@Configuration
@EnableWebSecurity
class WebSecurityConfiguration: WebSecurityConfigurerAdapter() {

@Autowired
lateinit var authenticationEntryPoint: WebSecurityEntryPoint

@Autowired
@Throws(Exception::class)
fun configureGlobal(auth: AuthenticationManagerBuilder) {
    auth.inMemoryAuthentication()
            .withUser("user").password(passwordEncoder().encode("du"))
            .authorities(Role.ADMIN.poziom)
}

@Throws(Exception::class)
override fun configure(http: HttpSecurity) {
    http.authorizeRequests()
            .antMatchers("/securityNone").permitAll()
            .antMatchers("/marka/insert").authenticated() // but I beted this would help
            .anyRequest().authenticated() // I know this should cover all requests
            .and()
            .httpBasic()
            .authenticationEntryPoint(authenticationEntryPoint)
            .and()
            .formLogin()



}

@Bean
fun passwordEncoder(): PasswordEncoder {
    return BCryptPasswordEncoder()
}




}

И моя проблема в том, что когда я делаю какие-либо запросы, я всегда получаю ошибку 401 или 403 (иногда 401 и иногда 403 в тех же случаях) код ошибки, но кроме выполнения запросов GET, которые возвращают код 200 и, кажется, работают. Также вход через форму входа в браузере работает. Я использую почтальон, чтобы сделать запрос, я использую basi c Auth и да, я нажимаю кнопку предварительного просмотра, прежде чем сделать запрос

enter image description here

enter image description here

enter image description here

Что я делаю не так? Пожалуйста, помогите друзьям. Без решения этой проблемы я не могу работать над чем-то еще в этом проекте.

[ПРАВИТЬ 30 III 2020]

Я вроде решил проблему частично:

Запросы работают, если они выполняются с помощью команды front-end или curl с использованием опции -u user: du, поэтому полная команда для JSON выглядит следующим образом:

{
"id" : -1,
 "nazwa" : "Mercedes",
 "models" : [ ]
}

полная команда curl будет:

curl -u user:du -X PUT -d @mercedes.json http://localhost:8091/marka/insert -H "Content-Type: application/json"

если mercedes. json находится в каталоге, из которого была вызвана команда.

НО

Запрос на отправку через почтальона по-прежнему не работает.

Есть идеи, друзья?

...