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.
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