繁体   English   中英

如何在客户端上配置 FEIGN 以使用 SEEDSTACK 框架对 REST 服务进行身份验证?

[英]How to configure FEIGN on the client to authenticate against a REST service using SEEDSTACK framework?

我想使用 FEIGN 和 SEEDSTACK 从我的客户端应用程序调用 REST Web 服务。 同样使用 SEEDSATCK 开发的 Web 服务配置了以下身份验证方法:“过滤器:[ authcBasic ]”

如何配置或编程客户端以获得正确的身份验证? 如何传递USER和PASSWORD信息?

客户端 FEIGNAPI 类:

@FeignApi
public interface neosdServer {

    @RequestLine("GET /file/getfilesprop")
    List<NeosdFile> getfilesprop();

    @RequestLine("GET /file/getfiles")
    List<String> getfiles();
}

客户端应用程序.YAML

feign:
  endpoints:
    neosdClient.interfaces.rest.neosdServer: 
      baseUrl: http://localhost:8080
      encoder: feign.jackson.JacksonEncoder
      decoder: feign.jackson.JacksonDecoder

服务器应用程序.YAML

  web:
    urls:
      -
        pattern: /file/getfiles
        filters: [ authcBasic, 'roles[read]' ]   

当前的 SeedStack 集成暂时不支持在 feign builder 上配置拦截器。 相反,要进行身份验证,您可以使用@Headers注释在 Feign 界面中指定一个标头(基本身份验证示例):

@FeignApi
@Headers({"Authorization: Basic {credentials}"})
public interface neosdServer {

    @RequestLine("GET /file/getfilesprop")
    List<NeosdFile> getfilesprop(@Param("credentials") String credentials);

    @RequestLine("GET /file/getfiles")
    List<String> getfiles(@Param("credentials") String credentials);
}

请注意, @Headers也可以用于单个方法。

然后,您必须将凭据作为方法参数传递。 一个示例实现,凭据来自您的应用程序配置,可以是:

public class MyClass {
    @Configuration("myApp.credentials.user")
    private String username;
    @Configuration("myApp.credentials.password")
    private String password;
    @Inject
    private NeoSdClient client;

    public void myMethod() {
        List<String> files = client.getFiles(encodeCredentials());
    }

    private String encodeCredentials() {
        return BaseEncoding
                .base64()
                .encode((username + ":" + password)
                        .getBytes(Charsets.UTF_8));
    }
}

我在 Feign 附加存储库上创建了一个问题来跟踪拦截器支持的实现: https : //github.com/seedstack/feign-addon/issues/4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM