Next.js 2FA SMS OTP: Delil Kaydı Tasarımı ve Uyum Sınırları
SMS OTP gönderdiğinde, sistemin iki ayrı hikayesi vardır: kullanıcı için kısa ömürlü bir challenge, uyum ekibi için ne yapıldığını ve taşıyıcının ne rapor ettiğini gösteren bir kayıt. Bunları karıştırmak kolay çünkü tek bir SMS mesajı ortada duruyor.
Starspiregavren48'in yazısında vurgulanan temel sorun şu: bir mühendis, SMS konsolunu açmadan karar veriş sürecini yeniden yapılandırabilir mi? Cevap uygulamanın kendi olaylarından gelmelidir.
Pratik olarak, login kararı, mesaj gönderimi, taşıyıcı gözlemi ve kullanıcı eylemi ayrı gerçekler olarak tutulmalı. Node.js handler'ında bunu sağlamak için:
1const logOTPEvent = async (userId, phone, action, result, carrierRef) => {2await db.insert('otp_events', {3user_id: userId,4phone_hash: hash(phone),5action, // 'challenge_created', 'sms_submitted', 'delivery_confirmed'6result, // 'success', 'failed', 'pending'7carrier_reference: carrierRef, // SMS sağlayıcısının referansı8timestamp: new Date(),9audit_trail: true10});11};US ve EU numaraları için aynı adapter kullanabilirsin, ama kimlik doğrulama hiçbir zaman polling isteğinin tamamlanmasına bağlı olmamalı. Sağlayıcı referansı kaydı destekleyebilir, ama yerine geçemez. Delil defteri, compliance ekibinin "sistem ne yapmaya çalıştı" sorusunu yanıtlamalı; delivery dashboard sadece operasyonel görünürlük sağlar.
Eğer SMS teslimat başarısız olursa, sistem bunu bilir ve kaydeder. Ama kullanıcı zaten challenge'ı aldıysa (lokal olarak), authentication flow'u durmamalı. Bu ayrım, düzenleyici incelemede seni kurtarır.
0 yorum