Spring Security возвращает 403, несмотря на успешную аутентификацию JWT в пользовательском фильтреJAVA

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

Сообщение Anonymous »

Я использую Spring Security с аутентификацией JWT для своего приложения. Я реализовал собственный фильтр для проверки JWT и установки аутентификации в контексте безопасности. Однако, несмотря на то, что JWT действителен и аутентификация настроена правильно, я продолжаю получать ответ 403 «Запрещено» при доступе к защищенным конечным точкам.
Вот моя настройка:
Конфигурация безопасности:
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig {

private final UserDetailsService userDetailsService;

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

@Bean
public AuthenticationManager authenticationManager(
HttpSecurity http,
PasswordEncoder passwordEncoder
) throws Exception {
AuthenticationManagerBuilder auth = http.getSharedObject(AuthenticationManagerBuilder.class);
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder);
return auth.build();
}

@Bean
public SecurityFilterChain securityFilterChain(
HttpSecurity http,
JwtAuthenticationFilter jwtAuthenticationFilter,
AuthenticationEntryPoint jwtAuthenticationEntryPoint
) throws Exception {
http
.csrf(AbstractHttpConfigurer::disable)
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests(auth -> auth
.requestMatchers("/api/auth/**").permitAll()
.anyRequest().authenticated()
)
.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class)
.exceptionHandling(exception -> exception.authenticationEntryPoint(jwtAuthenticationEntryPoint));

return http.build();
}
}

Фильтр аутентификации Jwt:
@Component
@RequiredArgsConstructor
public class JwtAuthenticationFilter extends OncePerRequestFilter {

private final JwtUtil jwtUtil;
private final UserDetailsService userDetailsService;

@Override
public void doFilterInternal(
HttpServletRequest request,
@NonNull HttpServletResponse response,
@NonNull FilterChain filterChain
) throws ServletException, IOException {
final String authorizationHeader = request.getHeader("Authorization");
if (authorizationHeader != null && jwtUtil.isBearer(authorizationHeader)) {
final String jwtToken = jwtUtil.parseTokenType(authorizationHeader);
final String username = jwtUtil.extractUsername(jwtToken);

if(username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
final UserDetails userDetails = userDetailsService.loadUserByUsername(username);

if(userDetails != null && !jwtUtil.isTokenExpired(jwtToken)) {
userDetails.getAuthorities();
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
userDetails, null, userDetails.getAuthorities()
);
authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
}
}
}
filterChain.doFilter(request, response);
}
}


В этом фильтре выполняется строка SecurityContextHolder.getContext().setAuthentication(authenticationToken); и результатом SecurityContextHolder.getContext().getAuthentication() является
UsernamePasswordAuthenticationToken [Principal=UserEntity(id=fb94c680-6376-4d90-a82d-6120280f5595, username=some_user, password=some_password, roles=[RoleEntity(id=6ccd6fe2-b23c-4179-b738-6516aed4f14d, name=OWNER)]), Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=null], Granted Authorities=[ROLE_OWNER]]
Класс утилиты JWT:
@Component
public class JwtUtil {
@Value("${jwt.secret-key}")
private String SECRET_KEY;

@Value("${jwt.expiration-in-ms}")
private long TOKEN_VALIDITY;

public boolean isBearer(String token) {
return token.startsWith("Bearer ");
}

public String parseTokenType(String token) {
return token.substring("Bearer ".length());
}

public String generateToken(String username) {
Map claims = new HashMap();
return createToken(claims, username);
}

public boolean isTokenExpired(String token) {
return extractAllClaims(token).getExpiration().before(new Date());
}

public String extractUsername(String token) {
return extractAllClaims(token).getSubject();
}

private String createToken(Map claims, String subject) {
return Jwts.builder()
.addClaims(claims)
.setSubject(subject)
.setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(new Date(System.currentTimeMillis() + TOKEN_VALIDITY))
.signWith(getSigningKey(), SignatureAlgorithm.HS256)
.compact();
}

private Claims extractAllClaims(String token) {
return Jwts.parserBuilder()
.setSigningKey(getSigningKey())
.build()
.parseClaimsJws(token)
.getBody();
}

private SecretKey getSigningKey() {
return Keys.hmacShaKeyFor(Decoders.BASE64.decode(SECRET_KEY));
}
}

Когда я делаю запрос к /api/question с действительным JWT:
curl --location --request POST 'http://localhost:8081/api/question' \ --header 'Authorization: Bearer '
  • JwtAuthenticationFilter успешно проверяет токен и устанавливает аутентификацию в SecurityContextHolder.
  • Я вижу объект аутентификации в журналах, и он помечен как аутентифицированный:
UsernamePasswordAuthenticationToken [Authenticated=true, Granted Authorities=[]]
  • Несмотря на это, запрос в конечном итоге возвращает 403 Forbidden с ошибкой:
    org.springframework.security.authentication.InsufficientAuthenticationException: Full authentication is required to access this resource.
Вопросы:
  • Почему Spring Security по-прежнему отклоняет запрос с кодом 403, хотя SecurityContextHolder содержит действительный объект аутентификации?
Я пытался реализовать собственный JwtAuthenticationFilter< /code> для проверки токенов JWT и установки SecurityContext. Я ожидал, что аутентифицированные запросы с действительными токенами будут без проблем получать доступ к защищенным конечным точкам. Однако я получаю ошибку 403 Forbidden с исключением InsufficientAuthenticationException. Кажется, объект аутентификации установлен правильно в фильтре, но он не работает должным образом при доступе к защищенным ресурсам.
UPD:
Добавлено след
2024-11-16T12:38:53.358+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Trying to match request against DefaultSecurityFilterChain [RequestMatcher=any request, Filters=[org.springframework.security.web.session.DisableEncodeUrlFilter@1dfcb546, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2b5b96af, org.springframework.security.web.context.SecurityContextHolderFilter@23b62cc3, org.springframework.security.web.header.HeaderWriterFilter@695f382c, org.springframework.security.web.authentication.logout.LogoutFilter@17c7cc93, com.arutyun.quiz_server.auth.security.filter.JwtAuthenticationFilter@73ba3c4b, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@a589070, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@745c25ed, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@575822e7, org.springframework.security.web.session.SessionManagementFilter@2aec09a3, org.springframework.security.web.access.ExceptionTranslationFilter@1dbe592f, org.springframework.security.web.access.intercept.AuthorizationFilter@18b8518b]] (1/1)
2024-11-16T12:38:53.358+05:00 DEBUG 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Securing POST /api/question
2024-11-16T12:38:53.358+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking DisableEncodeUrlFilter (1/12)
2024-11-16T12:38:53.359+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking WebAsyncManagerIntegrationFilter (2/12)
2024-11-16T12:38:53.359+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderFilter (3/12)
2024-11-16T12:38:53.359+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking HeaderWriterFilter (4/12)
2024-11-16T12:38:53.359+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking LogoutFilter (5/12)
2024-11-16T12:38:53.359+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.s.w.a.logout.LogoutFilter : Did not match request to Or [Ant [pattern='/logout', GET], Ant [pattern='/logout', POST], Ant [pattern='/logout', PUT], Ant [pattern='/logout', DELETE]]
2024-11-16T12:38:53.359+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking JwtAuthenticationFilter (6/12)
2024-11-16T12:38:53.361+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication]
2024-11-16T12:38:53.372+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking RequestCacheAwareFilter (7/12)
2024-11-16T12:38:53.372+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderAwareRequestFilter (8/12)
2024-11-16T12:38:53.373+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking AnonymousAuthenticationFilter (9/12)
2024-11-16T12:38:53.373+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking SessionManagementFilter (10/12)
2024-11-16T12:38:53.373+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.s.w.a.AnonymousAuthenticationFilter : Did not set SecurityContextHolder since already authenticated UsernamePasswordAuthenticationToken [Principal=UserEntity(id=21ad81c1-5820-4fa0-ba65-1880c6e9042c, username=some_user, password=some_password, roles=[]), Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=null], Granted Authorities=[]]
2024-11-16T12:38:53.373+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] s.CompositeSessionAuthenticationStrategy : Preparing session with ChangeSessionIdAuthenticationStrategy (1/1)
2024-11-16T12:38:53.373+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking ExceptionTranslationFilter (11/12)
2024-11-16T12:38:53.373+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking AuthorizationFilter (12/12)
2024-11-16T12:38:53.373+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] estMatcherDelegatingAuthorizationManager : Authorizing POST /api/question
2024-11-16T12:38:53.373+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] estMatcherDelegatingAuthorizationManager : Checking authorization on POST /api/question using org.springframework.security.authorization.AuthenticatedAuthorizationManager@30e47d5a
2024-11-16T12:38:53.374+05:00 DEBUG 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Secured POST /api/question
2024-11-16T12:38:53.377+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.s.w.header.writers.HstsHeaderWriter : Not injecting HSTS header since it did not match request to [Is Secure]
2024-11-16T12:38:53.379+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Trying to match request against DefaultSecurityFilterChain [RequestMatcher=any request, Filters=[org.springframework.security.web.session.DisableEncodeUrlFilter@1dfcb546, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2b5b96af, org.springframework.security.web.context.SecurityContextHolderFilter@23b62cc3, org.springframework.security.web.header.HeaderWriterFilter@695f382c, org.springframework.security.web.authentication.logout.LogoutFilter@17c7cc93, com.arutyun.quiz_server.auth.security.filter.JwtAuthenticationFilter@73ba3c4b, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@a589070, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@745c25ed, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@575822e7, org.springframework.security.web.session.SessionManagementFilter@2aec09a3, org.springframework.security.web.access.ExceptionTranslationFilter@1dbe592f, org.springframework.security.web.access.intercept.AuthorizationFilter@18b8518b]] (1/1)
2024-11-16T12:38:53.380+05:00 DEBUG 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Securing POST /error
2024-11-16T12:38:53.380+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking DisableEncodeUrlFilter (1/12)
2024-11-16T12:38:53.380+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking WebAsyncManagerIntegrationFilter (2/12)
2024-11-16T12:38:53.380+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderFilter (3/12)
2024-11-16T12:38:53.381+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking HeaderWriterFilter (4/12)
2024-11-16T12:38:53.381+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking LogoutFilter (5/12)
2024-11-16T12:38:53.381+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.s.w.a.logout.LogoutFilter : Did not match request to Or [Ant [pattern='/logout', GET], Ant [pattern='/logout', POST], Ant [pattern='/logout', PUT], Ant [pattern='/logout', DELETE]]
2024-11-16T12:38:53.382+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking JwtAuthenticationFilter (6/12)
2024-11-16T12:38:53.382+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking RequestCacheAwareFilter (7/12)
2024-11-16T12:38:53.382+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderAwareRequestFilter (8/12)
2024-11-16T12:38:53.382+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking AnonymousAuthenticationFilter (9/12)
2024-11-16T12:38:53.382+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking SessionManagementFilter (10/12)
2024-11-16T12:38:53.382+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking ExceptionTranslationFilter (11/12)
2024-11-16T12:38:53.382+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.security.web.FilterChainProxy : Invoking AuthorizationFilter (12/12)
2024-11-16T12:38:53.382+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] estMatcherDelegatingAuthorizationManager : Authorizing POST /error
2024-11-16T12:38:53.383+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] estMatcherDelegatingAuthorizationManager : Checking authorization on POST /error using org.springframework.security.authorization.AuthenticatedAuthorizationManager@30e47d5a
2024-11-16T12:38:53.383+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication]
2024-11-16T12:38:53.383+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=null], Granted Authorities=[ROLE_ANONYMOUS]]
2024-11-16T12:38:53.383+05:00 TRACE 79872 --- [quiz-server] [nio-8081-exec-6] o.s.s.w.a.ExceptionTranslationFilter : Sending AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=null], Granted Authorities=[ROLE_ANONYMOUS]] to authentication entry point since access is denied

org.springframework.security.access.AccessDeniedException: Access Denied
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:98) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:91) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-6.1.14.jar:6.1.14]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-6.1.14.jar:6.1.14]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) ~[spring-security-web-6.3.4.jar:6.3.4]
at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) ~[spring-security-web-6.3.4.jar:6.3.4]


Подробнее здесь: https://stackoverflow.com/questions/791 ... ustom-filt
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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