Spring Security 如何通过虚拟客户端使用受基本身份验证保护的Restful Web服务

lg40wkob  于 2023-02-23  发布在  Spring
关注(0)|答案(2)|浏览(110)

感谢您的宝贵时间。为了简单起见,我创建了一个示例服务,如下所示:

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

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

为了保护这个网址,我配置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

一切都很顺利。
在另一个节点中,我用netflix的faign创建了一个“服务消费者”,它是一个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);
}

但是我不知道如何配置请求头“授权”。
知道吗再次感谢。

sauutmhj

sauutmhj1#

例如,您需要创建一个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)
wixjitnu

wixjitnu2#

截至2020年10月,这一做法奏效了:

public class FeignClientConfiguration {

    @Bean
    public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
        return new BasicAuthRequestInterceptor("asdf", "asdf");
    }
}

@FeignClient(name = "thirdPartyClient", url = "ceva.com",
        configuration = FeignClientConfiguration.class)
public interface ThirdPartyClient {

    @GetMapping
    Response get();
}

注意,我们不使用@Configuration注解配置,以免将其应用于所有请求。

相关问题