UnfilteredDevOps.SecureHttpClient
1.0.122
See the version list below for details.
dotnet add package UnfilteredDevOps.SecureHttpClient --version 1.0.122
NuGet\Install-Package UnfilteredDevOps.SecureHttpClient -Version 1.0.122
<PackageReference Include="UnfilteredDevOps.SecureHttpClient" Version="1.0.122" />
<PackageVersion Include="UnfilteredDevOps.SecureHttpClient" Version="1.0.122" />
<PackageReference Include="UnfilteredDevOps.SecureHttpClient" />
paket add UnfilteredDevOps.SecureHttpClient --version 1.0.122
#r "nuget: UnfilteredDevOps.SecureHttpClient, 1.0.122"
#:package UnfilteredDevOps.SecureHttpClient@1.0.122
#addin nuget:?package=UnfilteredDevOps.SecureHttpClient&version=1.0.122
#tool nuget:?package=UnfilteredDevOps.SecureHttpClient&version=1.0.122
UnfilteredDevOps.SecureHttpClient
A secure HTTP client wrapper for .NET with built-in retry logic, timeout handling, and comprehensive logging capabilities designed for supply chain security scenarios.
Features
- Automatic Retry: Exponential backoff for transient failures (5xx, 408)
- Timeout Handling: Configurable request timeouts
- Structured Logging: Built-in ILogger support
- Custom Headers: Support for default headers
- Resilience: Powered by Polly
Installation
dotnet add package UnfilteredDevOps.SecureHttpClient
Usage
using UnfilteredDevOps.SecureHttpClient;
var options = new HttpClientOptions
{
BaseAddress = "https://api.example.com",
Timeout = TimeSpan.FromSeconds(30),
MaxRetryAttempts = 3,
RetryDelay = TimeSpan.FromMilliseconds(500)
};
using var client = new SecureHttpClient(options);
var response = await client.GetAsync("/endpoint");
Security & Supply Chain
This package is built with supply chain security as a first-class concern:
Package Signature Verification
Every release is cryptographically signed using Cosign with GitLab OIDC tokens (keyless signing).
Verify signature (example for 1.0.29, branch main):
# Download the package (or use dotnet nuget download)
curl -sfL \
https://www.nuget.org/api/v2/package/UnfilteredDevOps.SecureHttpClient/1.0.29 \
-o UnfilteredDevOps.SecureHttpClient.1.0.29.nupkg
# Download the signature bundle from GitLab artifacts
# Replace JOB_ID if you want a different pipeline run
curl -o UnfilteredDevOps.SecureHttpClient.1.0.29.nupkg.cosign.bundle \
https://gitlab.com/unfiltered-devops/gitlab/supply-chain/-/jobs/12810732500/file/packages/UnfilteredDevOps.SecureHttpClient.1.0.29.nupkg.cosign.bundle
# Verify with Cosign (keyless mode with GitLab OIDC)
cosign verify-blob --bundle UnfilteredDevOps.SecureHttpClient.1.0.29.nupkg.cosign.bundle \
--certificate-identity-regexp "https://gitlab.com/unfiltered-devops/gitlab/supply-chain//.gitlab-ci.yml@refs/(heads|tags)/main" \
--certificate-oidc-issuer "https://gitlab.com" \
UnfilteredDevOps.SecureHttpClient.1.0.29.nupkg -d
Expected output:
Verified OK
SLSA Provenance
Build metadata adhering to SLSA v1 framework is included in each release:
- Source: Repository and commit SHA
- Build: Build timestamp, runner information
- Dependencies: Exact versions used during compilation
Access provenance: GitLab Artifacts
Software Bill of Materials (SBOM)
Complete dependency inventory in multiple formats:
- CycloneDX JSON: Standard format for dependency tracking
- SPDX JSON: Linux Foundation format for compliance
- Text Report: Human-readable dependency list
Download SBOM files from GitLab Artifacts
Transparency Log
All signatures are logged to Rekor (sigstore transparency log):
rekor-cli search --artifact UnfilteredDevOps.SecureHttpClient.1.0.1.nupkg
Building & Testing
# Restore dependencies
dotnet restore
# Build
dotnet build -c Release
# Run tests
dotnet test
# Generate package
dotnet pack -c Release
Requirements
- .NET 8.0 or later
- Microsoft.Extensions.Logging.Abstractions 8.0+
- Polly 8.2+
License
MIT License - See LICENSE file for details
Verify This Package
Before using this package, verify its authenticity:
- Check the signature using Cosign (see Security section above)
- Review the SBOM for unexpected dependencies
- Check Rekor transparency log for build metadata
- Verify the SLSA provenance metadata
Built with supply chain security by UnfilteredDevOps
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net8.0
- log4net (>= 2.0.8)
- Microsoft.Extensions.Http.Polly (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Polly (>= 8.2.1)
- Polly.Contrib.WaitAndRetry (>= 1.1.1)
- System.Diagnostics.DiagnosticSource (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.