HaveIBeenPwned.Client
9.0.0
dotnet add package HaveIBeenPwned.Client --version 9.0.0
NuGet\Install-Package HaveIBeenPwned.Client -Version 9.0.0
<PackageReference Include="HaveIBeenPwned.Client" Version="9.0.0" />
paket add HaveIBeenPwned.Client --version 9.0.0
#r "nuget: HaveIBeenPwned.Client, 9.0.0"
// Install HaveIBeenPwned.Client as a Cake Addin #addin nuget:?package=HaveIBeenPwned.Client&version=9.0.0 // Install HaveIBeenPwned.Client as a Cake Tool #tool nuget:?package=HaveIBeenPwned.Client&version=9.0.0
HaveIBeenPwned.Client
is a .NET HTTP client for the "have i been pwned" API service from Troy Hunt. This library is comprised of three NuGet packages:
Consumers of the API can use the abstractions for the models returned from the API, while server APIs can consume and wrap the client.
Getting started
Install from the .NET CLI:
dotnet add package HaveIBeenPwned.Client
Alternatively add manually to your consuming .csproj:
<PackageReference Include="HaveIBeenPwned.Client" Version="{VersionNumber}" />
Or, install using the NuGet Package Manager:
Install-Package HaveIBeenPwned.Client
Dependency injection
To add all of the services to the dependency injection container, call one of the AddPwnedServices
overloads. From Minimal APIs for example, with using a named configuration section:
builder.Services.AddPwnedServices(
builder.Configuration.GetSection(nameof(HibpOptions)));
From a ConfigureServices
method, with an IConfiguration
instance:
services.AddPwnedServices(options =>
{
options.ApiKey = _configuration["HibpOptions:ApiKey"];
options.UserAgent = _configuration["HibpOptions:UserAgent"];
});
Then you can require any of the available DI-ready types:
IPwnedBreachesClient
: Breaches API.IPwnedPastesClient
: Pastes API.IPwnedPasswordsClient
: Pwned Passwords API.IPwnedClient
: Marker interface, for conveniently injecting all of the above clients into a single client.
Without dependency injection
If you're not using the DI approach, simply instantiate PwnedClient
with your API key and use it as you see fit.
IPwnedClient client = new PwnedClient("<API Key>");
// TODO: Use client...
Example Minimal APIs
Configuration
To configure the HaveIBeenPwned.Client
, the following table identifies the well-known configuration object:
Well-known keys
Depending on the .NET configuration provider your app is using, there are several well-known keys that map to the HibpOptions
that configure your usage of the HTTP client. When using environment variables, such as those in Azure App Service configuration or Azure Key Vault secrets, the following keys map to the HibpOption
instance:
Key | Data type | Default value |
---|---|---|
HibpOptions__ApiKey |
string |
null |
HibpOptions__UserAgent |
string |
".NET HIBP Client/{AssemblyFileVersion}" |
The ApiKey
is required, to get one — sign up here: https://haveibeenpwned.com/api/key
Example appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"HibpOptions": {
"ApiKey": "<YourApiKey>",
"UserAgent": "<YourUserAgent>"
}
}
For more information, see JSON configuration provider.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. |
-
net9.0
- HaveIBeenPwned.Client.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Http (>= 9.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.0)
- System.Net.Http.Json (>= 9.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on HaveIBeenPwned.Client:
Package | Downloads |
---|---|
HaveIBeenPwned.Client.PollyExtensions
This is an unofficial .NET HTTP client library exposing various "Have I Been Pwned" APIs, including Breaches, Pastes, and of course Pwned Passwords. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on HaveIBeenPwned.Client:
Repository | Stars |
---|---|
IEvangelist/learning-blazor
The application for the "Learning Blazor: Build Single Page Apps with WebAssembly and C#" O'Reilly Media book by David Pine.
|
Version | Downloads | Last updated |
---|---|---|
9.0.0 | 219 | 11/14/2024 |
8.0.3 | 2,230 | 8/16/2024 |
8.0.2 | 140 | 5/2/2024 |
8.0.1 | 211 | 2/8/2024 |
8.0.0 | 325 | 11/16/2023 |
7.0.0 | 3,356 | 1/19/2023 |
2.0.2 | 5,649 | 3/11/2022 |
2.0.1 | 738 | 3/5/2022 |
2.0.0 | 3,830 | 11/25/2021 |
1.0.4 | 2,678 | 9/1/2021 |
1.0.4-preview2 | 227 | 9/1/2021 |
1.0.4-preview1 | 220 | 9/1/2021 |
1.0.4-preview | 225 | 9/1/2021 |
1.0.3 | 302 | 9/1/2021 |
1.0.2 | 313 | 9/1/2021 |
0.0.7 | 330 | 8/31/2021 |