Проблемы аутентификации и ошибка CSRF в Spring Security с пользовательской конфигурациейJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Проблемы аутентификации и ошибка CSRF в Spring Security с пользовательской конфигурацией

Сообщение Anonymous »

У меня есть приложение Spring Boot, в котором я использую Spring Security, и столкнулся с некоторыми проблемами с настройкой безопасности. Я реализовал класс SecurityConfig для аутентификации и авторизации, но продолжаю получать ошибку 401 Unauthorized при попытке доступа к определенным ресурсам.
Вот моя конфигурация безопасности:

Код: Выделить всё

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;

@EnableWebSecurity
@Configuration
public class SecurityConfig {

@Bean
public UserDetailsService inMemoryUserDetailsManager() {
UserDetails user = User.builder()
.username("user")
.password(passwordEncoder().encode("password"))
.roles("USER")
.build();
UserDetails admin = User.builder()
.username("admin")
.password(passwordEncoder().encode("password"))
.roles("USER", "ADMIN")
.build();
return new InMemoryUserDetailsManager(user, admin);
}

@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(auth -> auth.anyRequest().hasAnyRole("USER", "ADMIN"))
.csrf(AbstractHttpConfigurer::disable)
.httpBasic(Customizer.withDefaults());

return http.build();
}

}

Кроме того, я также настроил следующие свойства в моем application.properties:

Код: Выделить всё

spring.security.user.name=customUser
spring.security.user.password={noop}customPassword

Однако работает единственная проверка подлинности, определенная в файле application.properties с помощью customUser и customPassword. Конфигурация диспетчера сведений о пользователях в памяти, похоже, не имеет никакого эффекта.
Наконец, я продолжаю получать ошибку, связанную с CSRF, а именно: «Невозможно найти ожидаемый токен CSRF. " Несмотря на то, что я отключил CSRF в конфигурации безопасности, проблема, похоже, сохраняется.
Вопросы:
Почему я получаю сообщение об ошибке 401 Unauthorized, хотя пользователь настроены правильно?
Что я могу сделать, чтобы обеспечить правильную работу конфигурации UserDetailsService в памяти?
Как устранить ошибку CSRF, которая продолжает появляться, несмотря на то, что она отключена в конфигурации?
< /p>
Буду очень благодарен за любую помощь!
Я реализовал специальную конфигурацию безопасности с помощью Spring Security для аутентификации пользователей. Я ожидал, что хранящийся в памяти диспетчер сведений о пользователях позволит мне аутентифицировать пользователей, определенных в классе SecurityConfig. Однако я продолжаю получать ошибку 401 Unauthorized при попытке доступа к защищенным ресурсам. Кроме того, даже несмотря на то, что я отключил защиту CSRF, я все равно сталкиваюсь с ошибкой «Невозможно найти ожидаемый токен CSRF».

Подробнее здесь: https://stackoverflow.com/questions/790 ... nfiguratio
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»