BuildingBlocks.DeviceDetector, gelen HTTP isteğinden IP, cihaz ve güven kararı bilgisini üretir. Login gibi hassas akışlarda risk skoru hesaplamak, oturum kaydına cihaz parmak izi yazmak ve şüpheli istekleri ek doğrulamaya yönlendirmek için kullanılır. Tek giriş noktası IClientSecurityContext fasadıdır.
Arayüzler
| Arayüz | İmza | İmplementasyon |
|---|---|---|
IClientSecurityContext | IpDto GetIp() · DeviceDto GetDevice() · TrustDecisionDto EvaluateTrust() | HttpClientSecurityContext (fasad) |
IClientIpResolver | gerçek IP’yi çözer (X-Forwarded-For, CF-Connecting-IP) | ClientIpResolver |
IDeviceDetector | User-Agent’tan cihaz/tarayıcı/OS çıkarır | DefaultDeviceDetector |
ITrustEvaluator | TrustDecisionDto Evaluate(IpDto ip, DeviceDto device) | TrustEvaluator |
Value object’ler
IClientSecurityContext üç immutable DTO döndürür; bunlar domain tarafında User.StartSession gibi metotlara taşınarak UserSession kaydına yazılır.
| DTO | Üyeler |
|---|---|
IpDto | IpAddress, IsPrivateNetwork, IsProxy, IsVpnSuspected, IsTorExitNode, Source (Direct/X-Forwarded-For/CF-Connecting-IP) |
DeviceDto | ClientType (Mobile/Desktop/Bot/Unknown), Browser, BrowserVersion, Os, OsVersion, Name, Brand, Model, IsBot |
TrustDecisionDto | Level (Trusted/Challenge/Untrusted), RiskScore (int), Reason |
Güven değerlendirmesi — risk skoru
TrustEvaluator, IP ve cihaz sinyallerini toplayarak bir risk puanı çıkarır ve eşiklere göre karar verir:
| Sinyal | Puan |
|---|---|
device.IsBot | +80 |
ClientType == "Bot" | +60 |
ClientType == "Unknown" | +20 |
ip.IsTorExitNode | +70 |
ip.IsVpnSuspected | +40 |
ip.IsProxy | +30 |
ip.IsPrivateNetwork | +15 |
ip.Source != "Direct" | +10 |
| Toplam risk | Karar |
|---|---|
< 30 | Trusted |
30 – 69 | Challenge (ek doğrulama iste) |
>= 70 | Untrusted (reddet) |
DI kaydı — AddDeviceDetector
Tüm servisler scoped’tur (HttpContext’e bağlı).
AddDeviceDetector HttpContext’e erişir; IHttpContextAccessor’ın pipeline’da kayıtlı olması gerekir (AddJwt/AddKeycloak zaten ekler).Kullanım — login risk skoru
İlgili
Kimlik doğrulama
Oturum başlatma ve token üretimi.
Bot koruması
Challenge kararında reCAPTCHA v3 ile ek doğrulama.
OTP
Yüksek riskte ikinci faktör.
Domain
UserSession ve StartSession metodu.