Проблема с авторизацией файлов cookie Spring Security только для HTTPJAVA

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

Сообщение Anonymous »

У меня есть следующая конфигурация безопасности, но она по-прежнему активирует фильтр на путях, не соответствующих требованиям безопасности.

В чем здесь проблема? Правильно ли я выполняю аутентификацию? Я пробовал читать документацию, но текст слишком насыщенный и сосредоточен на внутренней работе, а не на повседневном использовании.
@Configuration
@EnableWebSecurity
public class SecurityConfig {

@Autowired
private HttpCookieAuth httpCookieAuth;

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.securityMatcher("/api/auth/**")
.sessionManagement(session -> session
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
)
.anonymous(AbstractHttpConfigurer::disable)
.csrf(AbstractHttpConfigurer::disable)

.httpBasic(AbstractHttpConfigurer::disable)
.formLogin(AbstractHttpConfigurer::disable)

.logout(l -> l.addLogoutHandler(new ClearCookiesHandler()))

.authorizeHttpRequests(auth ->
auth.anyRequest().authenticated()
)
.addFilterBefore(httpCookieAuth, ExceptionTranslationFilter.class);
return http.build();
}

}

@Component
public class HttpCookieAuth extends OncePerRequestFilter {

@Autowired
private JwtCookieService cookieService;

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
var tokenCookie = Arrays.stream(request.getCookies()).filter(c -> c.getName().equals("accessToken")).findFirst();
if(tokenCookie.isPresent()) {
var context = SecurityContextHolder.getContext();
var auth = context.getAuthentication();
if (auth == null || !auth.isAuthenticated()) {
var cookie = tokenCookie.get();
var claims = cookieService.parseCookie(cookie.getValue());
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
claims.get("sub"), null, null);
authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
context.setAuthentication(authentication);
}
}

filterChain.doFilter(request, response);
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... on-problem
Ответить

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

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

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

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

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