Spring-Security: конечные точки в белом списке не работают [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring-Security: конечные точки в белом списке не работают [закрыто]

Сообщение Anonymous »

Я пытаюсь сделать конечную точку доступной без входа в систему с помощью Spring-Security. Но когда я пытаюсь открыть URL-адрес, меня всегда перенаправляют на страницу входа Spring.
Мой класс конфигурации:
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig
{
@Bean
@Order(SecurityProperties.BASIC_AUTH_ORDER)
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception
{
log.debug("securityFilterChain() bean called");

http.authorizeHttpRequests(auth -> {
// auth.requestMatchers("/register").permitAll();
auth.requestMatchers("/register").anonymous();
// auth.requestMatchers("/register").authenticated();
auth.anyRequest().authenticated();
});
http.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.ALWAYS));

http.formLogin(Customizer.withDefaults());
http.httpBasic(Customizer.withDefaults());

http.csrf(AbstractHttpConfigurer::disable);
http.headers(headers -> headers.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable));

return http.build();
}
}

Контроллер:
@Controller
@AllArgsConstructor
@SessionAttributes({"registerError", "redirect"})
public class UserController
{
private AuthenticationService authenticationService;

// @PreAuthorize("permitAll()")
@Transactional
@GetMapping("/register")
public String createUser(ModelMap model, HttpServletRequest request)
{
log.info("createUser() called");

model.put("userDto", new UserDto());
request.getSession().setAttribute("redirect", "redirect:register");

return "signup";
}

// @PreAuthorize("permitAll()")
@Transactional
@PostMapping("/register")
public String registerUser(ModelMap model, HttpServletRequest request, @Valid UserDto userDto)
{
log.info("registerUser() called with userDto={}", userDto);

try {
authenticationService.registerUser(userDto);
} catch (DuplicateKeyException e)
{
model.put("userDto", userDto);
model.put("registerError", "A user with this name already exists.");
return "redirect:register";
}

model.remove("registerError");
request.getSession().removeAttribute("redirect");

return "redirect:/";
}
}

Я настроил свои свойства application.properties следующим образом:
server.port=2345
spring.mvc.servlet.path=/
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

Когда я вхожу в систему и пытаюсь получить доступ к конечной точке /register, я получаю ошибку 403, как и ожидалось, но при выходе из системы я не могу получить доступ к /register. Кто-нибудь знает, что я делаю не так?
Я также пробовал некоторые комбинации с закомментированным кодом, но ничего не активировало конечную точку /register для пользователей, не вошедших в систему. p>
Изменить 1:
Вот журнал отладки, когда я пытаюсь получить доступ/зарегистрироваться без входа в систему:
2024-05-25T22:15:49.800+02:00 DEBUG 10988 --- [nio-2345-exec-3] o.s.security.web.FilterChainProxy : Securing GET /register
2024-05-25T22:15:49.801+02:00 DEBUG 10988 --- [nio-2345-exec-3] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2024-05-25T22:15:49.801+02:00 DEBUG 10988 --- [nio-2345-exec-3] o.s.security.web.FilterChainProxy : Secured GET /register
2024-05-25T22:15:49.801+02:00 INFO 10988 --- [nio-2345-exec-3] i.f.l.rest.UserController : createUser() called
2024-05-25T22:15:49.803+02:00 DEBUG 10988 --- [nio-2345-exec-3] o.s.security.web.FilterChainProxy : Securing GET /WEB-INF/jsp/signup.jsp
2024-05-25T22:15:49.804+02:00 DEBUG 10988 --- [nio-2345-exec-3] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:2345/WEB-INF/jsp/signup.jsp?continue to session
2024-05-25T22:15:49.804+02:00 DEBUG 10988 --- [nio-2345-exec-3] s.w.a.DelegatingAuthenticationEntryPoint : Trying to match using And [Not [RequestHeaderRequestMatcher [expectedHeaderName=X-Requested-With, expectedHeaderValue=XMLHttpRequest]], MediaTypeRequestMatcher [contentNegotiationStrategy=org.springframework.web.accept.ContentNegotiationManager@1c96bf1e, matchingMediaTypes=[application/xhtml+xml, image/*, text/html, text/plain], useEquals=false, ignoredMediaTypes=[*/*]]]
2024-05-25T22:15:49.805+02:00 DEBUG 10988 --- [nio-2345-exec-3] s.w.a.DelegatingAuthenticationEntryPoint : Match found! Executing org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint@30b075b9
2024-05-25T22:15:49.805+02:00 DEBUG 10988 --- [nio-2345-exec-3] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:2345/login
2024-05-25T22:15:49.818+02:00 DEBUG 10988 --- [nio-2345-exec-4] o.s.security.web.FilterChainProxy : Securing GET /login

А это журнал отладки для вошедшего в систему пользователя, обращающегося к /register. Выдает ошибку 403:
2024-05-25T22:19:08.569+02:00 DEBUG 10988 --- [nio-2345-exec-2] o.s.security.web.FilterChainProxy : Securing GET /register
2024-05-25T22:19:08.569+02:00 DEBUG 10988 --- [nio-2345-exec-2] w.c.HttpSessionSecurityContextRepository : Retrieved SecurityContextImpl [Authentication=UsernamePasswordAuthenticationToken [Principal=org.springframework.security.core.userdetails.User [Username=fi0x, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN, ROLE_USER]], Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=158EB00290A0B4AF205677B2E9C8BD54], Granted Authorities=[ROLE_ADMIN, ROLE_USER]]]
2024-05-25T22:19:08.569+02:00 DEBUG 10988 --- [nio-2345-exec-2] o.s.s.w.access.AccessDeniedHandlerImpl : Responding with 403 status code
2024-05-25T22:19:08.570+02:00 DEBUG 10988 --- [nio-2345-exec-2] o.s.security.web.FilterChainProxy : Securing GET /error
2024-05-25T22:19:08.571+02:00 DEBUG 10988 --- [nio-2345-exec-2] w.c.HttpSessionSecurityContextRepository : Retrieved SecurityContextImpl [Authentication=UsernamePasswordAuthenticationToken [Principal=org.springframework.security.core.userdetails.User [Username=fi0x, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN, ROLE_USER]], Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=158EB00290A0B4AF205677B2E9C8BD54], Granted Authorities=[ROLE_ADMIN, ROLE_USER]]]
2024-05-25T22:19:08.571+02:00 DEBUG 10988 --- [nio-2345-exec-2] o.s.security.web.FilterChainProxy : Secured GET /error
2024-05-25T22:19:10.418+02:00 DEBUG 10988 --- [nio-2345-exec-3] o.s.security.web.FilterChainProxy : Securing GET /register
2024-05-25T22:19:10.419+02:00 DEBUG 10988 --- [nio-2345-exec-3] w.c.HttpSessionSecurityContextRepository : Retrieved SecurityContextImpl [Authentication=UsernamePasswordAuthenticationToken [Principal=org.springframework.security.core.userdetails.User [Username=fi0x, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN, ROLE_USER]], Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=158EB00290A0B4AF205677B2E9C8BD54], Granted Authorities=[ROLE_ADMIN, ROLE_USER]]]
2024-05-25T22:19:10.419+02:00 DEBUG 10988 --- [nio-2345-exec-3] o.s.s.w.access.AccessDeniedHandlerImpl : Responding with 403 status code
2024-05-25T22:19:10.419+02:00 DEBUG 10988 --- [nio-2345-exec-3] o.s.security.web.FilterChainProxy : Securing GET /error
2024-05-25T22:19:10.419+02:00 DEBUG 10988 --- [nio-2345-exec-3] w.c.HttpSessionSecurityContextRepository : Retrieved SecurityContextImpl [Authentication=UsernamePasswordAuthenticationToken [Principal=org.springframework.security.core.userdetails.User [Username=fi0x, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN, ROLE_USER]], Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=158EB00290A0B4AF205677B2E9C8BD54], Granted Authorities=[ROLE_ADMIN, ROLE_USER]]]
2024-05-25T22:19:10.419+02:00 DEBUG 10988 --- [nio-2345-exec-3] o.s.security.web.FilterChainProxy : Secured GET /error


Подробнее здесь: https://stackoverflow.com/questions/785 ... ot-working
Ответить

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

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

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

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

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