BuildingBlocks.Jwt, Keycloak token’larının dışında uygulamanın kendi ürettiği iki ayrı JWT şemasını yönetir: uzun ömürlü Backoffice oturum token’ı ve kısa ömürlü OTPChallenge token’ı. Tek AddJwt(...) çağrısı iki JwtBearer şeması kurar; JwtTokenValidator token doğrulama/claim okuma sağlar.
Token sarmalayıcılar
| Tip | Üyeler | Amaç |
|---|---|---|
JwtAccessToken | string AccessToken, DateTime ExpiresAt, long ExpiresInSeconds (computed) | Access token + son kullanma |
JwtRefreshToken | benzer yapı | Refresh token taşıyıcısı |
JwtTokenValidator
Simetrik (SymmetricSecurityKey, HMAC) veya OIDC (OpenIdConnectConfiguration) anahtarla token doğrular.
| Metot | İmza | Amaç |
|---|---|---|
| ctor | JwtTokenValidator(string secretKey, bool validateLifetime = true, string? issuer = null, string? audience = null, OpenIdConnectConfiguration? openIdConfig = null) | Doğrulayıcıyı yapılandırır |
ValidateToken | bool ValidateToken(string jwt) | İmza + ömür doğrular |
GetClaim | string? GetClaim(string jwt, string claimType) | Tek claim okur |
GetClaims | IEnumerable<Claim> GetClaims(string jwt) | Tüm claim’leri okur |
GetPayload | JwtPayload? GetPayload(string jwt) | Payload’ı parse eder |
GetPayloadAs<T> | T? GetPayloadAs<T>(string jwt) where T : class | Payload’ı tipe deserialize eder |
issuer/audience parametreleri ; ile ayrılmış çoklu değer alabilir — bu durumda ValidIssuers/ValidAudiences listesi olarak değerlendirilir. ClockSkew 60 saniyedir.Yapılandırma — JwtOptions
Jwt bölümüne bind edilir. İki alt bölüm, ikisi de JwtBase’den türeyen tiplerde:
JwtBase
| Üye | Tip | Açıklama |
|---|---|---|
Secret | string | HMAC imzalama anahtarı |
ValidAudience | string | Beklenen audience |
ValidIssuer | string | Beklenen issuer |
Expires | double | Token ömrü (dakika) |
ClockSkew | int | Ek tolerans (saniye) |
AuthenticationSchemeTypes
| Sabit | Değer | Kullanım |
|---|---|---|
BackofficeAuthenticationScheme | "Bearer" | Uzun ömürlü backoffice oturumu |
OTPChallengeAuthenticationScheme | "OTPChallenge" | OTP doğrulama state’i taşıyan kısa ömürlü token |
DI kaydı — AddJwt
Secret’lar
.env üzerinden gelir: JWT_BACKOFFICE_SECRET (min 32 karakter), JWT_OTP_SECRET (min 64 karakter). OTPChallenge token’ları kasten kısa ömürlüdür (Expires: 5) — yalnızca OTP doğrulama akışı süresince geçerlidir.Kullanım
İlgili
OTP
OTPChallenge akışını besleyen kod üretimi/doğrulaması.
Keycloak
SSO realm token’ları (custom JWT’den ayrı şemalar).
Authentication
Şema seçimi ve oturum yönetimi genel bakışı.
Staff login
Backoffice + OTP login akışı baştan sona.