gpt4 book ai didi

java - 将 AWS 签名 header 添加到所有放心请求中

转载 作者:行者123 更新时间:2023-12-02 09:23:45 25 4
gpt4 key购买 nike

我正在尝试通过 rest-assured 调用托管在 aws api gateway 中的 get api

我可以签署请求并调用电话。但要签署请求,我需要将完整的 URL 传递给 AWS 以生成授权 header 。

例如。如果我要访问端点https://my-aws-api.com/basepath/v1/request/123

我需要通过 AWSSigner 签署请求,这需要完整的端点才能执行此操作。

我目前的做法

String baseURI="https://my-aws-api.com";

String basePath="basepath/v1";

String requestPath="request/123";

String endpoint=baseURI+"/"+basePath+"/"+requestPath;

Map<String,String> signedHeaders= aws4sign(endpoint,defaultHeaders);

given()
.log().ifValidationFails()
.headers(signedHeaders)
.when()
.get(endpoint)
.then()
.log().ifValidationFails()
.statusCode(200);

如果我这样做,那么我就无法使用 RestAssured 的 baseURIbasePathpath params

我想像这样访问它

RestAssured.baseURI="https://my-aws-api.com";
RestAssured.basePath="basepath/v1";

given()
.log().ifValidationFails()
.pathParam("reqID", "123")
.when()
.get("request/{reqID}")
.then()
.log().ifValidationFails()
.statusCode(200);

AWSSigner

public static Map<String, String> aws4Sign(String endpoint, Map<String, String> headers) throws URISyntaxException {
String serviceName = "execute-api";
AWS4Signer aws4Signer = new AWS4Signer();
aws4Signer.setRegionName(EU_WEST_1.getName());
aws4Signer.setServiceName(serviceName);
DefaultRequest defaultRequest = new DefaultRequest(serviceName);
URI uri = new URI(endpoint);
defaultRequest.setEndpoint(new URI(uri.getScheme(), null, uri.getHost(), uri.getPort(), "", "", ""));
defaultRequest.setHttpMethod(HttpMethodName.GET);
defaultRequest.setResourcePath(uri.getRawPath());
defaultRequest.setHeaders(headers);
aws4Signer.sign(defaultRequest, DefaultAWSCredentialsProviderChain.getInstance().getCredentials());
return defaultRequest.getHeaders();
}

所以我的问题是有什么办法,我可以在 RestAssured 进行调用之前拦截它的请求,以便我可以获得完全生成的端点并将 aws 签名 header 添加到调用中。

最佳答案

我不熟悉这个库,但是通过简要阅读它的文档和 Javadoc,您应该能够使用 RequestFilter 在发送请求之前检查和更改请求。

看看Filter用户指南部分。

关于java - 将 AWS 签名 header 添加到所有放心请求中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58488431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com