https://github.com/yagudinaleksandr/dt.jwtgenerator
Библиотека для генерации JWT токенов
https://github.com/yagudinaleksandr/dt.jwtgenerator
generator jwt jwt-tokens
Last synced: 6 months ago
JSON representation
Библиотека для генерации JWT токенов
- Host: GitHub
- URL: https://github.com/yagudinaleksandr/dt.jwtgenerator
- Owner: YagudinAleksandr
- License: mit
- Created: 2025-09-23T21:34:48.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2025-09-25T20:26:51.000Z (9 months ago)
- Last Synced: 2025-09-25T22:37:21.263Z (9 months ago)
- Topics: generator, jwt, jwt-tokens
- Language: C#
- Homepage:
- Size: 313 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# DigitTwin.JwtGenerator
[](https://www.nuget.org/packages/DT.JwtGenerator)
[](https://www.nuget.org/packages/DT.JwtGenerator)
[](https://dotnet.microsoft.com/)
[](LICENSE)
## Описание
Fluent JWT Builder для .NET с поддержкой DDD и DI.
```bash
dotnet add package DigitTwin.JwtGenerator
```
### Настройка
Добавить в `appsettings.json`
```json
{
"Jwt": {
"SecretKey": "your_32_chars_min_secret_key_here_!",
"Issuer": "https://yourapi.com",
"Audience": "https://yourclient.com",
"AccessTokenLifetime": "00:15:00",
"RefreshTokenLifetime": "7.00:00:00"
}
}
```
Зарегистрируйте в `Program.cs`
```csharp
using DigitTwin.JwtGenerator;
builder.Services.AddJwtServices(builder.Configuration);
```
### Использование
Генерация токена
```csharp
var token = _jwtTokenBuilder
.AddClaim("sub", "123")
.AddClaim("email", "user@example.com")
.WithExpiration(TimeSpan.FromHours(1))
.Build();
```
Вадидация токена
```cshsrp
if (_jwtTokenValidator.TryValidateToken(jwt, out var principal))
{
var userId = principal.GetUserId();
var email = principal.GetEmail();
}
```
Refresh-токены
```csharp
var refreshToken = await _refreshTokenService.GenerateRefreshTokenAsync("123");
var isValid = await _refreshTokenService.ValidateRefreshTokenAsync(refreshToken);
await _refreshTokenService.RevokeRefreshTokenAsync(refreshToken);
```
### Дополнительно
Реализуйте `IRefreshTokenStore` в инфраструктуре:
```csharp
public class EfCoreRefreshTokenStore : IRefreshTokenStore
{
// Реализуйте методы: GetByTokenAsync, AddAsync, RevokeAsync, RemoveExpiredAsync
}
```
И зарегистрируйте:
```csharp
builder.Services.AddScoped();
```