Siz profil o‘rnatasiz, tunnel ko‘tariladi va hamma narsa tugagandek ko‘rinadi. Keyin telefon qayta yuklanadi, on-demand oldingi planda ilova bo‘lmasa ham ulanishni uyg‘otadi va tunnel ishga tushishdan bosh tortadi. Profil hali ham joyida va parol hali ham to‘g‘ri, shuning uchun bu nosozlik odamlarni noto‘g‘ri joydan qidirishga yuboradi. Network Extension siringizni profildan o‘qiy olmaydi: unga o‘zi hal qila oladigan kalitlar zanjiridagi havola kerak.

Quyidagi qo‘llanma havolani quradigan so‘rovdan uni sinovdan o‘tkazadigan qayta yuklashgacha, o‘sha topshirish orqali bitta ulanish urinishini kuzatadi.

Profil sirni emas, tutqichni saqlaydi

NEVPNProtocol passwordReference va sharedSecretReference maydonlarini bejiz ochmaydi. Demon tunnelni ishga tushirganda u sizning jarayoningiz ichida ishlamasligi mumkin, shuning uchun kodingizni chaqirib parol so‘ray olmaydi. U kalitlar zanjiridagi doimiy havolani o‘qiydi, uni o‘z kontekstida hal qiladi va elementni o‘zi olib keladi.

Bu havolani kalitlar zanjiridan so‘rab qurasiz, bu ma’lumot so‘rashdan boshqa so‘rov:

let query: [String: Any] = [
  kSecClass as String: kSecClassGenericPassword,
  kSecAttrService as String: "vpn-credentials",
  kSecAttrAccount as String: "user",
  kSecReturnPersistentRef as String: true,
  kSecMatchLimit as String: kSecMatchLimitOne
]

Qaytarilgan obyektni protokolga bering, elementning ma’lumotini emas. Amalda profil sir qayerda yashashini yozib qo‘yadi, shuning uchun konfiguratsiya zaxirasi parolni jimgina plist ichiga nusxalamaydi.

API nima uchun -50 deb javob beradi

errSecParam so‘rov yoki qiymat bu amal uchun noto‘g‘ri shakllanganligini bildiradi va havola hamda ma’lumot so‘rovlari aralashib ketsa, eng ko‘p ko‘rinadigan xato shu. Qabul qiluvchi kod havolani kutayotganda ma’lumot so‘rash, passwordReference maydoniga xom baytlarni biriktirish yoki ilova foydalana olmaydigan kirish guruhi bilan so‘rov yuborish, bularning barchasi uni keltirib chiqaradi.

O‘rovchi kutubxonalar bunga chorlaydi. Bayt qaytaradigan yordamchi havola qaytaradigan bilan almashtirilmaydi, shuning uchun tuzatish odatda boshqa parol emas, boshqa so‘rov.

Xuddi shu nomuvofiqlik shikoyatsiz saqlanib, keyin ulanmaydigan profilni tushuntiradi: saqlangan narsa blob, tutqich emas, va demonning hal qiladigan hech narsasi yo‘q.

Yaxshi saqlanadi, ulanish paytida muvaffaqiyatsiz

Saqlash ilovangiz kontekstini ishlatadi. Ulanish demonning kontekstini, ikkalasining kirish huquqi bir xil emas. Shuning uchun profil simulyatordagi barcha sinovlardan o‘tib, birinchi on-demand ishga tushishda muvaffaqiyatsiz bo‘lishi mumkin.

Qayta yuklash alomatining shakli ham shunday: ilova ochiq turganda ishlaydi va tizim tunnelni o‘zi boshlaganda o‘ladi.

Yetkazishdan oldin fon yo‘lini ataylab sinab ko‘ring. Ilova yopiq holda on-demand ulanishni qo‘zg‘ating, keyin ilova jurnalini emas, qurilma konsolini o‘qing, chunki nosozlikni havolani hal qilishga urinagan jarayon yozib oladi. Konsol demon elementni rad etayotganini ko‘rsatsa, havola joyida va muammo elementning foydalanish imkoniyatida.

Qayta yuklash ishlashini foydalanish imkoniyati hal qiladi

Element tunnelni boshlaydigan har qanday tizim jarayoni uchun o‘qiladigan bo‘lishi kerak va bu ilovangiz oldingi planda bo‘lganidan kengroq auditoriya. Shu cheklov siz uchun foydalanish imkoniyati atributini tanlaydi. Birinchi ochilishgacha himoyalangan element qurilma bir marta ochilgandan keyin fon ishga tushishi uchun mavjud; qurilma hozir ochiq bo‘lishini talab qiladigan element esa yo‘q.

Qattiqroq sinfni tanlash jozibali va qulflangan telefonda on-demand profilni buzadigan narsa aynan shu.

Sinfni o‘zgartirgandan keyin mavjud elementning atributlarini tahrirlash o‘rniga elementni qaytadan yarating, so‘ng protokolni yangi havola bilan qayta saqlang. Mavjud elementdagi atribut o‘zgarishlari har doim hujjatlar shama qilgan xatti-harakatni bermaydi, qayta qurilgan element esa shubhani yo‘q qiladi.

Aylanish — saqlangan profillar chirishi joyi

Kalitlar zanjiridagi parolni o‘zgartirish saqlangan profil nimaga ishora qilishini avtomatik o‘zgartirmaydi. Elementni o‘chirish undan yomon: profil endi mavjud bo‘lmagan narsaga havola tutib turadi va nosozlik autentifikatsiyani rad etishga o‘xshaydi.

Bitta tartibda aylantiring. Elementni yangilang, yangi doimiy havolani so‘rang, protokolni qayta saqlang, so‘ng ilova yopiq holda ulanib demon hali ham uni hal qila olishini isbotlang. Foydalanuvchi paroli va umumiy sirni alohida elementlarda saqlang, har biri o‘z jadvali bo‘yicha aylansin, va so‘rov lug‘ati yoki havolaning o‘zini hech qachon jurnalga yozmang. Tutqich sir emas, lekin unga eltuvchi xaritadir.

O'xshash maqolalar