【问题标题】:c# client.GetPreSignedURL in .net aws sdks using HMACSHA256 instead of AWS4-HMAC-SHA256c# client.GetPreSignedURL in .net aws sdks 使用 HMACSHA256 而不是 AWS4-HMAC-SHA256
【发布时间】:2023-01-25 23:13:32
【问题描述】:

与来自 aws 控制台的预签名 url 相比,从该方法生成的 url 是不同的

来自 C# 方法 https://bucket.s3.amazonaws.com/key?AWSAccessKeyId=xxxxxx&Expires=1642609317&Signature=xxxxx

c#链接不工作

从 AWS 控制台:

https://bucket.s3.ap-south-1.amazonaws.com/key?response-content-disposition=inline&X-Amz-Security-Token=xxx&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220119T154450Z&X-Amz-SignedHeaders=host&X-Amz-Expires=60&X-Amz-Credential=xxxxxx&X-Amz-Signature=xxxxxxxxx

包版本使用

<PackageReference Include="AWSSDK.Core" Version="3.7.6" />
<PackageReference Include="AWSSDK.S3" Version="3.7.7.14" />

在包中可用的算法

namespace Amazon.Runtime
{
    //
    // Summary:
    //     The valid hashing algorithm supported by the sdk for request signing.
    public enum SigningAlgorithm
    {
        HmacSHA1 = 0,
        HmacSHA256 = 1
    }
}

【问题讨论】:

  • 你有问题吗? C# SDK 使用的是 AWS4-HMAC-SHA256,这是个问题吗?
  • @AnonCoward,我正在尝试从 C# 代码生成一个预签名的 url,当访问它时,显示使用此 AWS4-HMAC-SHA256 进行签名的错误。使用最新的 AWS sdk 我找不到那个算法。然后我尝试从控制台生成,生成的链接与 SDK 不同。我想从有效的 AWS SDK 创建预签名链接
  • 那么你想使用“HmacSHA256”。
  • @Vman 你弄明白了吗?我有一个类似的问题 - C# 客户端、2 个环境、相同的代码。一个生成 AWS4-HMAC-SHA256 并运行,另一个不运行并失败

标签: c# amazon-web-services amazon-s3 .net-core aws-sdk-net


【解决方案1】:

4 年前,一位同事仅在另一个项目的 us-east-1 中看到了这个问题,并在下面进行了修复。我也打算这样做。

Amazon.AWS.ConfigS3.UserSignatureVersion4 = true;

【讨论】:

    猜你喜欢
    • 2017-06-27
    • 2018-02-04
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    相关资源
    最近更新 更多