我想用假名和SEEDSTACK从我的客户端应用程序调用一个REST web服务。使用SEEDSATCK开发的web服务也使用以下身份验证方法配置:"filters: authcBasic“
如何配置或编程客户端以获得认证权?如何传递用户和密码信息?
client FEIGNAPI类:
@FeignApi
public interface neosdServer {
@RequestLine("GET /file/getfilesprop")
List<NeosdFile> getfilesprop();
@RequestLine("GET /file/getfiles")
List<String> getfiles();
}客户端APPLICATION.YAML
feign:
endpoints:
neosdClient.interfaces.rest.neosdServer:
baseUrl: http://localhost:8080
encoder: feign.jackson.JacksonEncoder
decoder: feign.jackson.JacksonDecoder服务器APPLICATION.YAML
web:
urls:
-
pattern: /file/getfiles
filters: [ authcBasic, 'roles[read]' ] 发布于 2020-01-30 13:03:57
当前的SeedStack集成目前不支持在假装构建器上配置拦截器。相反,要进行身份验证,您可以使用@Headers注释在虚拟接口中指定一个标头(例如,用于基本身份验证):
@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));
}
}为了跟踪拦截器支持的实现,我在假冒伪劣的附加存储库上创建了一个问题:https://github.com/seedstack/feign-addon/issues/4。
https://stackoverflow.com/questions/59984083
复制相似问题