Вызовы API терпят неудачу во время аутентификации по умолчанию безопасности SpringJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Вызовы API терпят неудачу во время аутентификации по умолчанию безопасности Spring

Сообщение Гость »


Я пытаюсь внедрить хеширование паролей с помощью Bcrypt, что потребовало от меня добавления Spring безопасности в мой проект. Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь вызвать какой-либо из своих API, я получаю аутентификацию следующим образом:
Изображение
и даже когда я ввожу правильное имя пользователя и пароль, в журналах происходит сбой:

2023-09-20T18:50:37.045+05:30 DEBUG 18632 --- [nio-8080-exec-4] o.s.security.web.FilterChainProxy: защита GET /login 2023-09-20T18:50:37.139+05:30 ПРЕДУПРЕЖДЕНИЕ 18632 --- [nio-8080-exec-4] o.s.s.c.bcrypt.BCryptPasswordEncoder: закодированный пароль не похож на BCrypt 2023-09-20T18:50:37.139+05:30 DEBUG 18632 --- [nio-8080-exec-4] o.s.s.a.dao.DaoAuthenticationProvider: не удалось выполнить аутентификацию, поскольку пароль не соответствует сохраненному значению 2023-09-20T18:50:37.144+05:30 DEBUG 18632 --- [nio-8080-exec-4] o.s.s.w.a.www.BasicAuthenticationFilter: не удалось обработать запрос аутентификации org.springframework.security.authentication.BadCredentialsException: Неверные учетные данные в org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks(DaoAuthenticationProvider.java:89) ~[spring-security-core-6.1.1.jar:6.1.1] в org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:147) ~[spring-security-core-6.1.1.jar:6.1.1] в org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:182) ~[spring-security-core-6.1.1.jar:6.1.1] в org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:201) ~[spring-security-core-6.1.1.jar:6.1.1] в org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:174) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] в org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] в org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] в org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] в org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] в org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191) ~[spring-security-web-6.1.1.jar:6.1.1] в org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:352) ~[spring-web-6.0.10.jar:6.0.10] в org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:268) ~[spring-web-6.0.10.jar:6.0.10] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[весна-web-6.0.10.jar:6.0.10] в org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.10.jar:6.0.10] в org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.10.jar:6.0.10] в org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.10.jar:10.1.10] в java.base/java.lang.Thread.run(Thread.java:833) ~[na:na] 2023-09-20T18:50:37.158+05:30 DEBUG 18632 --- [nio-8080-exec-4] s.w.a.DelegatingAuthenticationEntryPoint: попытка сопоставления с использованием RequestHeaderRequestMatcher [expectedHeaderName=X-Requested-With, ожидаемыйHeaderValue=XMLHttpRequest ] 2023-09-20T18:50:37.159+05:30 DEBUG 18632 --- [nio-8080-exec-4] s.w.a.DelegatingAuthenticationEntryPoint: совпадение не найдено. Использование точки входа по умолчанию org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint@30505025 2023-09-20T18:50:37.171+05:30 DEBUG 18632 --- [nio-8080-exec-4] o.s.security.web.FilterChainProxy: защита GET/error 2023-09-20T18:50:37.174+05:30 DEBUG 18632 --- [nio-8080-exec-4] o.s.s.w.a.AnonymousAuthenticationFilter: установите для SecurityContextHolder анонимный SecurityContext 2023-09-20T18:50:37.243+05:30 DEBUG 18632 --- [nio-8080-exec-4] o.s.s.w.s.HttpSessionRequestCache: сохраненный запрос http://localhost:8080/error?продолжить сеанс 2023-09-20T18:50:37.244+05:30 DEBUG 18632 --- [nio-8080-exec-4] s.w.a.DelegatingAuthenticationEntryPoint: попытка сопоставления с использованием RequestHeaderRequestMatcher [expectedHeaderName=X-Requested-With, ожидаемыйHeaderValue=XMLHttpRequest ] 2023-09-20T18:50:37.244+05:30 DEBUG 18632 --- [nio-8080-exec-4] s.w.a.DelegatingAuthenticationEntryPoint: совпадение не найдено. Использование точки входа по умолчанию org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint@30505025 Мой файл конфигурации безопасности выглядит следующим образом:

import org.springframework.boot.autoconfigure.security.reactive.PathRequest; импортировать org.springframework.context.annotation.Bean; импортировать org.springframework.context.annotation.Configuration; импортировать org.springframework.security.config.annotation.web.builders.HttpSecurity; импортировать org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; импортировать org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; импортировать org.springframework.security.crypto.password.PasswordEncoder; импортировать org.springframework.security.web.SecurityFilterChain; импортировать статический org.springframework.security.config.Customizer.withDefaults; @Конфигурация общественный класс SecurityConfiguration { @Бин public SecurityFilterChain filterChain(HttpSecurity http) выдает исключение { http .authorizeHttpRequests((authz) -> authz .anyRequest().аутентифицированный() ) .httpBasic(withDefaults()); вернуть http.build(); } @Бин общественный WebSecurityCustomizer webSecurityCustomizer () { return (web) -> web.ignoring().requestMatchers(String.valueOf(PathRequest.toStaticResources().atCommonLocations())); } @Бин общественный PasswordEncoder парольEncoder () { вернуть новый BCryptPasswordEncoder(); } } и контроллер выглядит следующим образом:

import com.neighborly.origin.entity.UserRegister; импортировать com.neighborly.origin.model.UserLogin; импортировать com.neighborly.origin.model.UserRegistrationRequest; импортировать com.neighborly.origin.repository.UserRepository; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.http.HttpStatus; импортировать org.springframework.http.ResponseEntity; импортировать org.springframework.security.crypto.password.PasswordEncoder; импортировать org.springframework.web.bind.annotation.*; @RestController публичный класс UserController { частный конечный UserRepository userRepository; частный окончательный парольEncoderпарольEncoder; @Autowired общественный UserController (UserRepository userRepository, PasswordEncoder парольEncoder) { this.userRepository = userRepository; this.passwordEncoder = парольEncoder; } @RequestMapping("/регистр") public ResponseEntity RegisterUser(@RequestBody UserRegistrationRequest запрос) { Строковое имя пользователя = request.getUsername(); Строковый пароль = request.getPassword(); Строка электронной почты = request.getEmail(); Идентификатор строки = request.getId(); Строка hashedPassword = парольEncoder.encode(пароль); // TODO: Сохранить пользователя в базе данных или выполнить другие необходимые операции UserRegister userRegister = новый UserRegister (); userRegister.setId(id); userRegister.setUsername(имя пользователя); userRegister.setPassword(пароль); userRegister.setEmail(электронная почта); пытаться { userRepository.save(userRegister); } поймать (Исключение е) { вернуть новый ResponseEntity(e.toString(), HttpStatus.INTERNAL_SERVER_ERROR); } вернуть новый ResponseEntity(String.format("Пользователь %s успешно зарегистрирован", имя пользователя), HttpStatus.OK); } } Я тоже пробовал использовать имя пользователя и пароль по умолчанию, но безрезультатно. Я использую Java 17 и Spring 3.1.1
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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