69 lines
2.8 KiB
Markdown
69 lines
2.8 KiB
Markdown
# Lightweight library allowing to manage access token its lifetime with caching capability for services accounts with the oauth2 protocol
|
|
|
|
# Installing Nuget
|
|
|
|
> Install nuget package to your awesome project.
|
|
|
|
| Package Name | NuGet | NuGet Install |
|
|
|-----------------------------------------| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |----------------------------------------------------------------------------:|
|
|
| OpenHarbor.JwtTokenManager | [![NuGet](https://img.shields.io/nuget/v/OpenHarbor.JwtTokenManager.svg?style=flat-square&label=nuget)](https://www.nuget.org/packages/OpenHarbor.JwtTokenManager/) | ```PM> Install-Package OpenHarbor.JwtTokenManager``` |
|
|
| OpenHarbor.JwtTokenManager.Abstractions | [![NuGet](https://img.shields.io/nuget/v/OpenHarbor.JwtTokenManager.Abstractions.svg?style=flat-square&label=nuget)](https://www.nuget.org/packages/OpenHarbor.JwtTokenManager.Abstractions/) | ```PM> Install-Package OpenHarbor.JwtTokenManager.Abstractions``` |
|
|
|
|
# How to use
|
|
|
|
> appsettings.json
|
|
|
|
```json
|
|
{
|
|
"JwtTokenManager": {
|
|
"TokenEndpoint": "",
|
|
"ClientId": "",
|
|
"ClientSecret": "",
|
|
"Scopes": []
|
|
}
|
|
}
|
|
```
|
|
|
|
> Program.cs
|
|
|
|
```csharp
|
|
builder.Services.AddHttpClient();
|
|
builder.Services.AddMemoryCache(); // use the IMemoryCache provider you want
|
|
|
|
builder.Services.AddJwtTokenManager(builder.Configuration, "JwtTokenManager");
|
|
```
|
|
|
|
> Program.cs with deeper configurations
|
|
|
|
```csharp
|
|
builder.Services.AddHttpClient();
|
|
|
|
builder.Services.AddJwtTokenManager(builder.Configuration, "JwtTokenManager", options =>
|
|
{
|
|
options.Cache(cacheOptions =>
|
|
{
|
|
cacheOptions.ExpirationOffset = 30; // 15 by default
|
|
},
|
|
// optional to configure your own IMemoryCache provider for the token management
|
|
provider => provider.GetRequiredService<IMemoryCache>());
|
|
|
|
options.Configuration(overrideConfiguration =>
|
|
{
|
|
overrideConfiguration.Scopes = ["offline_access"];
|
|
});
|
|
});
|
|
```
|
|
|
|
> Use the JwtTokenManager
|
|
|
|
```csharp
|
|
public class MyService(HttpClient httpClient, IJwtTokenManagerService jwtTokenManagerService)
|
|
{
|
|
public async Task DoActionAsync(CancellationToken cancellationToken) {
|
|
|
|
var tokenResult = await jwtTokenManagerService.GetTokenAsync(cancellationToken);
|
|
httpClient.SetJwtAccessToken(tokenResult);
|
|
...
|
|
}
|
|
}
|
|
``` |