При создании Request interceptor SecurityContextHolder.getContext().getAuthentication() возвращает null

Есть цепочка микросервисов взаимодействующая через eureka и gateway-api.
Внутри нее передается токен для аутентификации. Но внутри микросервиса №1 я с помощью Feign вызываю
микросервис №2. Для того чтобы передать в №2 токен, я создаю бин RequestInterceptor.

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class OrderServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderServiceApplication.class, args);
    }

    @Bean
    public RequestInterceptor requestTokenBearerInterceptor() {
        return new RequestInterceptor() {
            @Override
            public void apply(RequestTemplate requestTemplate) {

                System.out.println("In the request interceptor");

                System.out.println(SecurityContextHolder.getContext());
                System.out.println(SecurityContextHolder.getContext().getAuthentication());

                JwtAuthenticationToken token = (JwtAuthenticationToken) SecurityContextHolder
                        .getContext().getAuthentication();

                requestTemplate.header("Authorization", "Bearer" + token.getToken().getTokenValue());
            }
        };
    }

}

Но почему то при посылке запроса через постман в бине перехватчика значение SecurityContextHolder.getContext().getAuthentication() возвращает null.

При проверке в контроллере видно что токен доходит

@RestController
@RequestMapping("/api/order")
@Slf4j
@RequiredArgsConstructor
public class OrderController {

    private final OrderRepository orderRepository;
    private final InventoryClient inventoryClient;

    @PostMapping
    public String placeOrder(@RequestBody OrderDto orderDto, @RequestHeader("Authorization") String authHeader) {

        System.out.println("In the order controller");

        System.out.println("Authorization:"  + authHeader);

        boolean isAllProductsInStock = orderDto.getOrderLineItems().stream()
                .allMatch(orderLineItem -> inventoryClient.checkStock(orderLineItem.getScuCode()));

        if (isAllProductsInStock) {
            Order order = new Order();
            order.setOrderLineItems(orderDto.getOrderLineItems());
            order.setOrderNumber(UUID.randomUUID().toString());

            orderRepository.save(order);

            return "Order place successfully";
        }

        return "Please try again";
    }
}

Вывод токена в консоль : Authorization:Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ5cXNCUnktOVFBZ0pJZmFxa2VybVNVMEQ0UGVCalFpRTNtNF9RRnVjMlowIn0.eyJleHAiOjE2NjA4OTgwOTUsImlhdCI6MTY2MDg5Nzc5NSwiYXV0aF90aW1lIjoxNjYwODk1MjMyLCJqdGkiOiI1Zjk3MTk3NC05YTA1LTRlMDAtOGNmYy1lOTdiYTRiNmZhN2IiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgxODAvYXV0aC9yZWFsbXMvbWljcm9zZXJ2aWNlLXByb2plY3QtcmVhbG0iLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiOTRhYjkwMWMtMWUzMS00MDVlLTkyNWUtNDUxYzIxZTgwMDhjIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoic3ByaW5nLWNsb3VkLWdhdGV3YXktY2xpZW50Iiwic2Vzc2lvbl9zdGF0ZSI6IjMxMDM5YTI4LWFmZjktNGZmYy05MGVjLTIzNmQxYTk1NzI5OSIsImFjciI6IjAiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiIsImRlZmF1bHQtcm9sZXMtbWljcm9zZXJ2aWNlLXByb2plY3QtcmVhbG0iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiIzMTAzOWEyOC1hZmY5LTRmZmMtOTBlYy0yMzZkMWE5NTcyOTkiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsIm5hbWUiOiJ0ZXN0IHVzZXIiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0dXNlciIsImdpdmVuX25hbWUiOiJ0ZXN0IiwiZmFtaWx5X25hbWUiOiJ1c2VyIiwiZW1haWwiOiJ0ZXN0dXNlckBnbWFpbC5jb20ifQ.YIzc-z1ojQp6ohZfE1KD8O8Z_CQfLTtK7C9tQA8XUxQQ56RZOOuO_6X2k_yTLCis7a9ecTV7bpza9_Nm3M2dPy9h1MMV6d__kWG_kCXmEPbfCl0O2XDWnw0RTqyAGm4ZvupMgAGZCA6wmr7yqDQMadgMkRLD7P25ops6du48OeTnY6aMest0xhZnjCwWqmKRtrUAlrJ2jo-eQ8ujxq8UWOA8EOpELLZZllV9h6JKEXF5Rv6G8LtBJR4MPYEPoVqSI37AyFomLJeWsDqFE6BFHmdOteivTx0j8dLveaXR58rMdh0JC5TGf3aq57EiLsX-nkniiKGcs3DkrkMeUkMxNA

Почему не проходит аутентификация в контекст. В туториале который я смотрел , она проходила автоматически


Ответы (1 шт):

Автор решения: alex_us

Все дело было в неправильной версии зависимостей. Выглядеть должно так

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-oauth2-jose</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-oauth2-resource-server</artifactId>
        </dependency>
→ Ссылка