当前位置: 首页 > 知识库问答 >
问题:

从java生成AWS SQS签名

祖翰音
2023-03-14

我需要使用SpringRestTemplate(绑定了一个代理)从AWS SQS获取消息,而不是AWS sdk或SpringCloud AWS消息,因为该公司存在一些代理问题。

我需要生成一个头字符串,其中包括这样的授权签名;

curl --location --request GET 'https://sqs.us-east-2.amazonaws.com/523535599964/MyAmazingQueue?Action=ReceiveMessage' \
--header 'X-Amz-Date: 20210623T133108Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=AKIAXTZJHJFOEKI4UF45/20210623/us-east-2/sqs/aws4_request, SignedHeaders=host;x-amz-date, Signature=2d926124ce07ca41c0f56af3bdddc81df19444df189b727ff02015f620cdfc6c'

我需要用java生成这个signaturewith并绑定到HttpHeaders对象。

HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", <generatedAuthString>);
headers.add("X-Amz-Date", <generatedAnother>);
.
.
HttpEntity<String> entity = new HttpEntity<>(null, headers);

response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);

我更喜欢使用rest模板,因为在添加下面这样的代理时使用aws sdk是行不通的。应用程序启动时出现超时错误。

public AmazonSQSAsync amazonSQSAsync() {
    ClientConfiguration clientConfiguration= new ClientConfiguration();
    clientConfiguration.setProxyHost(proxyurl);
    clientConfiguration.setProxyPort(proxyport);
    return AmazonSQSAsyncClientBuilder.standard().withRegion(region)
            .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(awsAccessKey, awsSecretKey)))
            .build();
}

我尝试了stackoverflow问题中的每一项,但我得到了AccessDeniedException或SignatureDesNotMatch Exception。

如何从Java在AWS中生成签名

如果你能帮忙,那就太好了。非常感谢。

共有1个答案

丌官嘉福
2023-03-14

我终于解决了:)

AmazonSQSClientBuilder builder = AmazonSQSClientBuilder.standard();
AmazonSQS sqs = builder.withClientConfiguration(
        PredefinedClientConfigurations.defaultConfig()
                .withProxyHost("**")
                .withProxyPort(****).withProxyPassword("***").withProxyUsername("****"))
        .withCredentials(new AWSStaticCredentialsProvider(credentials))
        .withRegion(Regions.US_EAST_2)
        .build();

我使用了SpringCloudAWS的aws sdk安装,我使用了ClientConfiguration的预定义ClientConfiguration安装。谢谢大家!

 类似资料:
  • 当我从REST客户端调用APIendpoint时,由于涉及Signature而出错。 请求: 主持人:https://xxx.execute-api.ap-southeast-1.amazonaws.com/latest/api/name 授权: AWS4-HMAC-SHA256凭据=/20160314/ap-东南-1/执行-api/aws4_request, SignedHeaders=host

  • 我正在开发java web应用程序,现在我正在尝试将我的网站与QTIWorks连接起来 我有一个消费者密钥和秘密,我需要生成OAuth签名通过线性时不变系统与QTIWorks连接 我需要在这行生成OAuth签名 我该怎么做?

  • 问题内容: 我需要在运行时生成自签名证书,对其进行签名并导入到Java密钥库中。我可以通过以下方式从命令行使用“ keytool”和“ openssl”来做到这一点: 当然,我可以使用keytool和openssl二进制文件来交付我的应用程序,并从Java执行上述命令,但是我正在寻找一种更干净的方法,该方法允许我使用纯Java来完成上述所有操作。 我可以使用任何库吗? 问题答案: 使用Bouncy

  • 问题内容: 我很好奇是否存在通过使用一些权重计算,出现率或其他工具从给定文本生成关键字/标签的算法/方法。 此外,如果您为此提出了任何基于Python的解决方案/库,我将不胜感激。 谢谢 问题答案: 一种方法是提取文档中出现频率比您偶然期望的单词高的单词。例如,在大量文档中说“马尔科夫”一词几乎从未见过。但是,在同一收藏集中的特定文档中,Markov经常出现。这表明Markov可能是与文档关联的很

  • 问题内容: 我想要一个从JSON生成Java源文件的实用程序。例如我们有 我们将此传递给实用程序,并希望它生成如下内容: 编写起来并不难,但是我敢肯定有人已经做到了。 问题答案: 尝试: http://www.jsonschema2pojo.org Orsol,我确定你在这里还没有等待解决方案,但是为了下一个找到此线程的人,我想我会添加一些更多信息。 自从09年12月问这个问题以来发生了两件事:

  • 我正在尝试构建我的第一个签名APK以供发布,但出现了一些错误。看起来效果很好,但现在我就是无法生成APK。我做了研究,但什么也没找到。 Gradle版本:4.8,Android插件版本3.1.4,这是我的应用程序Gradle屏幕截图:link 这来自assembleDebug: 我曾经有过布局和不赞成使用的功能的其他问题,但我解决了它。其中一个就这样消失了,但我什么也没做:-) 我已经尝试过的事情