web-dev-qa-db-ja.com

偽のクライアントを介して基本認証で保護されたRestful Webサービスを利用する方法

お時間をいただきありがとうございます。簡単にするために、以下のようなサンプルサービスを作成しました。

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

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

このURLを保護するために、私は次のようにspring-securityを構成します。

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

このサービスを起動して次のようにアクセスすると:

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

Everythisは順調です。

他のノードでは、netflix feignによって "service-comsumer"を作成しました。 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);
}

しかし、リクエストヘッダー「Authorization」の設定方法がわかりません。

何か案が?再度、感謝します。

12
Zhuo YING

たとえば、FeignClient構成クラスを作成する必要があります。

import feign.auth.BasicAuthRequestInterceptor;

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

次に、@ FeignClientアノテーションでこの構成ファイルを使用します

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

それを試してみて、それが役立つことを願って

Ryan Baxter の訂正に感謝

23
Juan Pablo G