是否有可以使用 AWS V4 签名签署请求的 .NET 库?

Is there a .NET library that can sign a request with AWS V4 Signature?

我有一个 API 网关,我在其中设置身份验证以使用 AWS_IAM。这要求我使用 AWS V4 签名对每个请求进行签名,并在 header 中附加 HMAC。我发现库可以在 nodejs 中使用 V4 签名签署请求。但是我找不到可以为我签名的图书馆。即使是 .NET 的 aws-sdk 也针对他们自己的特定用例进行了抽象。那里有图书馆吗(我快速 google 搜索但没有找到任何结果)?或者我需要自己写出 hmac 吗?

您可以阅读签名是如何完成的并且您可以(如果需要)。 我建议引入适用于 .NET 的 AWS SDK 并使用 SDK 中的功能来实际执行签名。

这是 SDK 的签名者:

https://github.com/aws/aws-sdk-net/blob/6c3be79bdafd5bfff1ab0bf5fec17abc66c7b516/sdk/src/Core/Amazon.Runtime/Internal/Auth/AWS4Signer.cs

您可能需要对其进行调整(即它默认了解 AWS 服务和端点)

虽然这是一个老问题,但由于 AWS 没有 "prioritized accordingly" 关于 .NET AWS SDK,如他们上面的评论所述,这在今天仍然是一个相关问题,我找到了一个很好的库将为您处理 AWS V4 请求签名。

Here is the Nuget package.

Here is the GitHub source and implementation documentation.

此外,我发现对于我的 API 网关 AWS_IAM 使用临时安全凭证的授权,您还需要包括 "x-amz-security-token" header使用当前的 session 令牌作为它在您的请求中的价值。

Aws4RequestSigner is AwsSignatureVersion4 的替代方法。我认为它 API 更容易使用,但我有偏见,因为我是后者的作者。