Skip to main content
BuildingBlocks.Otp, tek kullanımlık parola (OTP) üretimi ve doğrulaması için altyapı sağlar. Kod plaintext saklanmaz; yalnızca HMAC-SHA256 özeti tutulur ve doğrulama stateless karşılaştırma ile yapılır. Paket aynı zamanda rate-limit politikalarını (throttle, günlük limit, deneme sayısı) konfigürasyon olarak taşır.
OTP’nin User aggregate ile entegrasyonu (UserOtpChallenge, AddOtpChallenge/VerifyOtp) ve SMS gönderimi (OtpSmsService, NetGSM) için bkz. Domain ve SMS servisi. Bu sayfa paket arayüzlerine odaklanır.

IOtpService

Üç yardımcı servisi (generator + hash + formatter) tek fasad altında toplayan orchestrator.

Alt servisler

OtpCode

sealed value object. Kod yalnızca rakamlardan oluşur; loglama güvenlidirToString() her zaman "******" döner, gerçek değere sadece Reveal() ile erişilir.
Kodu asla Reveal() çıktısıyla loglamayın. Hash daima HMAC-SHA256 + salt ile üretilir; karşılaştırma OtpSecurity.FixedTimeEqualsBase64 ile sabit-zamanlı yapılarak timing attack engellenir.

Konfigürasyon — OtpOptions

Services:Otp bölümüne bind edilir.

DI kaydı — AddOtp

Kullanım — stateless üretim ve doğrulama

OTP plaintext olarak tutulmaz. Üretimde sadece hash saklanır; doğrulamada girilen kodun hash’i saklanan hash ile karşılaştırılır.
Domain tarafında bu mantık User.AddOtpChallenge / User.VerifyOtp ile aggregate içine alınır; challenge state’i UserOtpChallenge child entity’sinde tutulur ve UserOtpGeneratedDomainEvent ile SMS/Email handler’larına yayılır.

İlgili

SMS servisi

NetGSM üzerinden OTP SMS gönderimi.

OTP akışı

Uçtan uca giriş + doğrulama senaryosu.

Authenticator (TOTP)

RFC6238 tabanlı authenticator alternatifi.

Domain

UserOtpChallenge ve VerifyOtp metotları.