Да, это возможно.
Одна из опций использует ROLES, поэтому вы можете выбрать, какой пользователь будет обращаться к каждой конечной точке с помощью аннотации @Secured.
Другая опция заключается в реализации собственного фильтра.запускать перед запросами.Это простой пример с использованием фильтра токенов JWT и проверки:
public class JWTConfigurer extends SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {
@Override
public void configure(HttpSecurity http) {
JWTFilter customFilter = new JWTFilter();
http.addFilterBefore(customFilter, UsernamePasswordAuthenticationFilter.class);
}
}
public class JWTFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
// Here go your implementation
String jwt = resolveToken(httpServletRequest);
if (isTokenValid(jwt)) {
Authentication authentication = getAuthenticationFromToken(jwt);
SecurityContextHolder.getContext().setAuthentication(authentication);
}
filterChain.doFilter(servletRequest, servletResponse);
}
private String resolveToken(HttpServletRequest request) {
String bearerToken = request.getHeader("YOUR-AUTHORIZATION-HEADER");
if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer ")) {
return bearerToken.substring(7, bearerToken.length());
}
return null;
}