James
James

Reputation: 1456

Spring cloudFeignClient send header programmatically in RequestInterceptor

i'm working on a spring boot project where i should call a rest api using Feign via Spring Cloud, i can call the rest api using feignClient without any problem, now the rest api that i call needs a JWT to let me consume it, to send a JWT from my code i used RequestInterceptor and this my code :

class AuthInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate template) {
        template.header("Authorization", "Bearer eyJraWQiOiJOcTVZWmUwNF8tazZfR3RySDZkenBWbHhkY1uV_1wSxWPGZui-t1Zf2BkbqZ_h44RkjVtQquIe0Yz9efWS6QZQ");

    }

}

i put manually the JWT in the code and this work fine ...

my issue is : the JWT expire after 30 min and i should call manually another rest api that generate a JWT then i hardcode it in my code...

my question is : there any solution to call programmatically the api that generate JWT then inject this JWT in the Interceptor?

Thanks in advance.

Best Regards.

Upvotes: 0

Views: 1177

Answers (1)

GnanaJeyam
GnanaJeyam

Reputation: 3170

Get the Token from the current HttpServletRequest header.

public void apply(RequestTemplate template) {
    HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
            .getRequest();
    String jwtToken = request.getHeader(HttpHeaders.AUTHORIZATION);
    if (jwtToken != null) {
        template.header(HttpHeaders.AUTHORIZATION, jwtToken);
    }
}

Upvotes: 1

Related Questions