Ilovada avtorizatsiya: SMS-kod, Apple va Google orqali kirish
Amaliyot3 daqInnovialabs tahririyati
Qisqacha
O‘zbekiston va MDHdagi ilova uchun oqilona asosiy to‘plam — telefon raqami va SMS-kod orqali kirish hamda Google va Apple; tokenlar Keychain/Keystore’da saqlanadi, sessiya refresh token orqali uzaytiriladi.
Qisqa javob
Universal usul yo‘q, lekin O‘zbekiston va MDHdagi ko‘pchilik ilovalar uchun ishlaydigan standart to‘plam quyidagicha:
- Telefon raqami + bir martalik kod — asosiy kirish, chunki telefon hammada bor va u biznesga ko‘pincha baribir kerak (yetkazib berish, kuryer qo‘ng‘irog‘i).
- Sign in with Google va Sign in with Apple — kod kiritishni istamaganlar uchun bir teginishda kirish.
- Qisqa muddatli access token va uzoq muddatli refresh token, tizimning himoyalangan xotirasida saqlanadi.
Qolgani — ko‘pincha xato qilinadigan tafsilotlar.
Kirish usullarini solishtirish
| Usul | Afzalliklari | Kamchiliklari |
|---|---|---|
| SMS-kod | Odatiy, telefon darhol tasdiqlanadi | Pullik SMS, yetkazishdagi kechikishlar, firibgarlik |
| Android’da bir teginish, parolsiz | Har bir iOS foydalanuvchisida Google akkaunti yo‘q | |
| Apple | iOS’da bir teginish, email’ni yashirish mumkin | Telefon raqami yo‘q, email proksi bo‘lishi mumkin |
| Email + parol | Tashqi bog‘liqliklarsiz | Unutilgan parollar, ko‘proq noqulaylik |
| Email orqali magic link | Parolsiz | Pochta va ilova o‘rtasida almashish noqulay |
Apple’ning Sign in with Apple qoidasi
Agar iOS ilovada uchinchi tomon xizmatlari (Google, Facebook va h.k.) orqali kirish bo‘lsa, App Store Review Guidelines maxfiylikka yo‘naltirilgan teng qiymatli variantni ham taklif qilishni talab qiladi: u faqat ism va email’ni yig‘adi, email’ni yashirish imkonini beradi va reklama trekingi uchun ishlatilmaydi. Sign in with Apple bu talablarga mos keladi, shuning uchun amalda uni Google yoniga qo‘shishadi.
Qoida faqat kompaniyaning o‘z akkauntlari orqali kiriladigan ilovalarga (masalan, telefon + SMS), shuningdek ayrim korporativ va ta’limiy ssenariylarga tegishli emas. Aniq ifodalar o‘zgarib turadi — Apple qo‘llanmasining 4.8-bo‘limining joriy versiyasini tekshiring.
Unutiladigan yana ikki talab:
- Ilovada akkauntni o‘chirish imkoniyati bo‘lishi kerak.
- Apple orqali kirishda foydalanuvchi ismi faqat birinchi avtorizatsiyada keladi — uni darhol serverda saqlang.
SMS-kod: narx va firibgarlik
Har bir SMS pul turadi, narx esa mamlakat, operator va agregatorga bog‘liq. Asosiy xavf — SMS pumping: botlar egalari trafikdan ulush oladigan raqamlarga ommaviy ravishda kod so‘raydi. Hisobni siz to‘laysiz.
Qanday himoyalanish mumkin:
- Raqam, qurilma va IP bo‘yicha limitlar: ma’lum oraliqda bir necha so‘rovdan ko‘p emas, takrorlar orasidagi pauza o‘sib boradi.
- Mamlakatlar oq ro‘yxati. Agar faqat O‘zbekistonda ishlasangiz, boshqa kodlarga SMS yubormang.
- Qurilma yaxlitligini tekshirish — Android’da Play Integrity va iOS’da App Attest — so‘rovlar haqiqiy ilovadan kelishi uchun.
- Monitoring: yuborishlar keskin o‘sganda yoki tasdiqlangan kodlar ulushi past bo‘lganda ogohlantirish.
- Muqobil kanallar: kodni messenjer yoki flash call orqali yetkazish arzonroq bo‘lishi mumkin, lekin SMS’ni zaxira yo‘l sifatida qoldiring.
Kodning o‘zi: 4-6 raqam, amal qilish muddati bir necha daqiqa, kiritish urinishlari soni cheklangan, serverda faqat xesh ko‘rinishida saqlanadi. SMS’dan kodni avtomatik qo‘yishni yoqing (Android’da SMS Retriever, iOS’da oneTimeCode).
Tokenlarni saqlash va sessiyani yangilash
- Access token — qisqa muddatli, har bir so‘rov bilan yuboriladi.
- Refresh token — uzoq muddatli, faqat yangi juftlik olish uchun ishlatiladi. Har bir yangilashda yangi refresh token bering va eskisini bekor qiling (rotation).
- Tokenlarni iOS’da Keychain’da va Android Keystore kaliti bilan shifrlangan xotirada saqlang. Flutter’da buning uchun
flutter_secure_storage, React Native’dareact-native-keychainyokiexpo-secure-storebor. Ochiq holdagiSharedPreferences,UserDefaultsyokiAsyncStorage’dan foydalanmang. - Tokenni bitta so‘rov bilan yangilang: bir nechta chaqiruv bir vaqtda 401 olsa, qolganlari birinchi yangilash natijasini kutadi.
- Serverda qurilmalar bo‘yicha sessiyalar ro‘yxatini saqlang — foydalanuvchi barcha qurilmalardan chiqa olsin, siz esa o‘g‘irlangan tokenni bekor qila oling.
Ko‘p uchraydigan xatolar
- SMS’ni limitlarsiz va mamlakat tekshiruvisiz yuborish.
- Tokenlarni himoyalanmagan xotirada saqlash.
- Akkauntlarni bog‘lamaslik: odam Google orqali, keyin telefon orqali kirib, ikkita profilga ega bo‘ladi.
- Foydalanuvchi ilova foydasini ko‘rmasidan oldin kirishni talab qilish.