SimpleClientCredentialsHttpClient 1.0.10
See the version list below for details.
dotnet add package SimpleClientCredentialsHttpClient --version 1.0.10
NuGet\Install-Package SimpleClientCredentialsHttpClient -Version 1.0.10
<PackageReference Include="SimpleClientCredentialsHttpClient" Version="1.0.10" />
<PackageVersion Include="SimpleClientCredentialsHttpClient" Version="1.0.10" />
<PackageReference Include="SimpleClientCredentialsHttpClient" />
paket add SimpleClientCredentialsHttpClient --version 1.0.10
#r "nuget: SimpleClientCredentialsHttpClient, 1.0.10"
#:package SimpleClientCredentialsHttpClient@1.0.10
#addin nuget:?package=SimpleClientCredentialsHttpClient&version=1.0.10
#tool nuget:?package=SimpleClientCredentialsHttpClient&version=1.0.10
SimpleClientCredentialsHttpClient
SimpleClientCredentialsHttpClient is a C# library designed for very easily using HttpClient with OAuth2 client credentials authentication.
Dependencies
SimpleClientCredentialsHttpClient is designed for work with .NET Core apps, and make use of the following packages that are probably already a part of your application:
Microsoft.Extensions.DependencyInjection.AbstractionsMicrosoft.Extensions.HttpSystem.Text.Json
Usage
IServiceCollection
The simplest setup is done using IServiceCollection.
// IServiceProvider services = ...; // Should be available somewhere in your Startup.cs or Program.cs
services
.AddSimpleClientCredentialsHttpClient(nameof(MyApiClient), new SimpleOptions() { // This will apply an Authorization header to requests from HttpClient with name 'MyApiClient'
TokenUrl = "https://login.my-company.com/connect/token", // TODO Fetch settings from config
ClientId = "my-client-id",
ClientSecret = "my-client-secret",
Scope = "my-api-scope",
})
.ConfigureHttpClient(http => // Optionally apply further configuration to the HttpClient
{
http.BaseAddress = new Uri("https://api.my-company.com);
});
// IHttpClientFactory httpClientFactory = ...; // Should be injected where you need to use the API Client
var apiClient = httpClientFactory.CreateClient(nameof(MyApiClient));
var apiResponse = await apiClient.GetAsync("/sensitive-stuff");
Token handling
The acquired access token is cached in-memory and only renewed 1 minute before its expiration.
If any error occurs during access token retrieval an exception will be thrown. This exception is cached for 5 seconds, after which the next request will retry fetching an access token.
Retrieving access token outside of HttpClient
If for any reason you want to get an access token used by a named HttpClient you can inject the class SimpleTokenAccessor into your code. It is automatically registered when using any of the IServiceCollection extension methods. If you are only using IHttpClientBuilder extensions you may register SimpleTokenAccessor yourself.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
-
net7.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Http (>= 7.0.0)
- System.Text.Json (>= 7.0.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.