Soenneker.Aws.Signing.V4
4.0.14
Prefix Reserved
dotnet add package Soenneker.Aws.Signing.V4 --version 4.0.14
NuGet\Install-Package Soenneker.Aws.Signing.V4 -Version 4.0.14
<PackageReference Include="Soenneker.Aws.Signing.V4" Version="4.0.14" />
<PackageVersion Include="Soenneker.Aws.Signing.V4" Version="4.0.14" />
<PackageReference Include="Soenneker.Aws.Signing.V4" />
paket add Soenneker.Aws.Signing.V4 --version 4.0.14
#r "nuget: Soenneker.Aws.Signing.V4, 4.0.14"
#:package Soenneker.Aws.Signing.V4@4.0.14
#addin nuget:?package=Soenneker.Aws.Signing.V4&version=4.0.14
#tool nuget:?package=Soenneker.Aws.Signing.V4&version=4.0.14
Soenneker.Aws.Signing.V4
A dependency-free AWS Signature Version 4 implementation for creating presigned HTTP URLs locally.
Installation
dotnet add package Soenneker.Aws.Signing.V4
Usage
using Soenneker.Aws.Signing.V4;
using Soenneker.Aws.Signing.V4.Dtos;
var signer = new AwsSignatureV4Signer();
string url = signer.PresignUrl(new AwsSignatureV4PresignRequest
{
Endpoint = new Uri("https://examplebucket.s3.amazonaws.com"),
Path = "/private/report.pdf",
Method = HttpMethod.Get,
Region = "us-east-1",
Service = "s3",
Credentials = new AwsSignatureV4Credentials
{
AccessKeyId = accessKeyId,
SecretAccessKey = secretAccessKey,
SessionToken = sessionToken
},
Expires = TimeSpan.FromMinutes(15)
});
using HttpResponseMessage response = await httpClient.GetAsync(
url,
cancellationToken);
Signing does not send a request. The caller is responsible for sending the same method, path, query parameters, and signed headers represented by the request.
Dependency injection
using Soenneker.Aws.Signing.V4.Registrars;
builder.Services.AddAwsSignatureV4SignerAsSingleton();
Inject IAwsSignatureV4Signer into the consuming service.
Request details
Expiresmust be between one second and seven days.Pathmust start with/and is treated as an unescaped path. Slash characters remain path separators unlessEncodePathSlashesis enabled.- Existing
QueryParametersare included in the signature.X-Amz-*names are reserved and rejected. Headerscontains additional headers to sign. The caller must send the same normalized values;hostis added automatically andauthorizationis rejected.PayloadHashdefaults toUNSIGNED-PAYLOAD. Confirm that the target AWS service and operation support it.- Set
SigningTimefor deterministic tests or clock-controlled signing.
Presigned URLs are bearer credentials until they expire. Do not log them, expose them in analytics, or return longer expirations than the recipient needs. Credential values remain the caller's responsibility and should come from a secure provider.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
- Soenneker.Hashing.Sha256 (>= 4.0.5)
- Soenneker.Utils.PooledStringBuilders (>= 4.0.32)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Soenneker.Aws.Signing.V4:
| Package | Downloads |
|---|---|
|
Soenneker.Cloudflare.R2
A convenient utility for managing Cloudflare R2 buckets, objects, and configuration. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.0.14 | 50 | 9/15/2026 |
| 4.0.13 | 34 | 9/15/2026 |
| 4.0.12 | 278 | 9/13/2026 |
| 4.0.11 | 187 | 9/12/2026 |
| 4.0.10 | 134 | 9/12/2026 |
| 4.0.9 | 327 | 9/8/2026 |
| 4.0.8 | 88 | 9/8/2026 |
| 4.0.7 | 440 | 9/7/2026 |
| 4.0.6 | 135 | 9/7/2026 |
| 4.0.5 | 642 | 9/4/2026 |
| 4.0.4 | 198 | 9/4/2026 |
| 4.0.3 | 192 | 9/1/2026 |
| 4.0.2 | 189 | 8/29/2026 |
| 4.0.1 | 263 | 8/29/2026 |