web-dev-qa-db-fra.com

Comment consommer le service Web Restful protégé par l'authentification de base via un client feint

Merci pour votre temps. Pour faire simple, j'ai créé un exemple de service comme ci-dessous:

@RestController
@RequestMapping("/")
public class ComputeController {

    @GetMapping("/add")
    public int add(@RequestParam("left") int left, @RequestParam("right") int right) {
        return left + right;
    }
}

Pour protéger cette URL, je configure la sécurité du printemps comme ceci:

management.security.enabled=true
security.user.name=admin
security.user.password=admin

Lorsque je démarre ce service et que j'accède comme ceci:

GET /add?left=100&right=11 HTTP/1.1
Authorization: ***** Hidden credentials *****
Host: localhost:7777
Connection: close

Tout va bien.

Dans un autre nœud, j'ai créé un "service-comsumer" par netflix feign. C'est une interface Java.

@FeignClient(name = "API-GATEWAY", path = "/compute-service", fallback = ComputeServiceCircuitBreaker.class)
public interface ComputeServiceClient {

    @RequestMapping(path = "/add", method = RequestMethod.GET)
    public Integer add(@RequestParam("left") Integer left, @RequestParam("right") Integer right);
}

Mais je ne sais pas comment configurer l'en-tête de demande "Autorisation".

Une idée? Merci encore.

12
Zhuo YING

vous devez créer une classe de configuration FeignClient, par exemple

import feign.auth.BasicAuthRequestInterceptor;

@Configuration
public class FeignClientConfiguration {
    @Bean
    public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
         return new BasicAuthRequestInterceptor("admin", "admin");
    }
}

puis dans votre annotation @FeignClient utilisez ce fichier de configuration

@FeignClient(name="service",configuration = FeignClientConfiguration.class)

allez-y et essayez, j'espère que ça aide

Merci à Ryan Baxter pour sa correction

23
Juan Pablo G