Tinstallah profil, it-tunnel jitla’, u kollox jidher lest. Imbagħad it-telefon jerġa’ jibda, on-demand iqajjem il-konnessjoni mingħajr app fil-quddiem, u t-tunnel jirrifjuta jibda. Il-profil għadu hemm u l-password għadha tajba, u għalhekk dan il-falliment jibgħat lin-nies ifittxu fil-post żbaljat. Network Extension ma tistax taqra s-sigriet tiegħek mill-profil: teħtieġ referenza tal-keychain li tista’ ssolviha waħedha.

Il-mixja hawn taħt issegwi attentat wieħed ta’ konnessjoni minn dik il-konsenja, mit-tistaqsija li tibni r-referenza sar-restart li jittestjaha.

Il-profil jaħżen manku, mhux is-sigriet

NEVPNProtocol tesponi passwordReference u sharedSecretReference għal raġuni. Meta d-daemon jibda tunnel, jista’ ma jkunx qed jaħdem fil-proċess tiegħek, għalhekk ma jistax isejjaħ il-kodiċi tiegħek u jitlob password. Huwa jaqra referenza persistenti tal-keychain, isolviha fil-kuntest tiegħu stess, u jiġbor l-oġġett hu stess.

Tibni dik ir-referenza billi titlobha mill-keychain, li hija talba differenti mit-talba għad-data:

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
]

Għaddi l-oġġett li jintbagħat lura lill-protokoll, mhux id-data tal-oġġett. Fil-prattika il-profil jirreġistra fejn tgħix is-sigriet, u għalhekk backup tal-konfigurazzjoni ma jidduplikax il-password bil-kwiet f’plist.

Għaliex l-API twieġeb -50

errSecParam tfisser li t-talba jew il-valur kienu fformati ħażin għall-operazzjoni, u dan huwa l-iżball li jidher l-aktar spiss meta t-talbiet tar-referenza u tad-data jitħalltu. Li titlob data waqt li l-kodiċi li jirċievi jistenna referenza, li tassenja bytes mhux ipproċessati lil passwordReference, jew li tistaqsi b’grupp ta’ aċċess li l-app ma tistax tuża, kollha jiġġenerawh.

Il-libreriji tal-ippakkeġġar jistiednu għal dan. Helper li jirritorna bytes mhuwiex skambjabbli ma’ wieħed li jirritorna referenza, għalhekk it-tiswija hija normalment mistoqsija oħra u mhux password oħra.

L-istess nuqqas ta’ qbil jispjega profil li jiġi salvat mingħajr ilment u mbagħad ma jikkonnettjax: dak li nħażen huwa blob, mhux manku, u d-daemon m’għandu xejn x’jissolvi.

Jiġi salvat sew, ifalli waqt il-konnessjoni

Is-salvar jeżerċita l-kuntest tal-app tiegħek. Il-konnessjoni teżerċita dak tad-daemon, u t-tnejn m’għandhomx l-istess aċċess. Għalhekk profil jista’ jgħaddi minn kull test fis-simulatur u jfalli fl-ewwel bidu on-demand.

Dak huwa wkoll il-forma tas-sintomu tar-restart: jaħdem waqt li l-app hija miftuħa u jmut meta s-sistema tibda t-tunnel waħedha.

Ittestja l-mogħdija tal-isfond apposta qabel ma toħroġ. Qajjem konnessjoni on-demand bl-app magħluqa, imbagħad aqra l-console tal-apparat u mhux il-log tal-app, għax il-falliment jiġi rreġistrat mill-proċess li pprova jissolvi r-referenza. Jekk il-console turi d-daemon jirrifjuta l-oġġett, ir-referenza hija tajba u l-problema hija l-aċċessibbiltà tal-oġġett.

L-aċċessibbiltà tiddeċiedi jekk restart jaħdimx

L-oġġett irid ikun jinqara minn kwalunkwe proċess tas-sistema li jniedi t-tunnel, u dak huwa udjenza usa’ mill-app tiegħek waqt li tkun fil-quddiem. Dak ir-restrizzjoni tagħżel l-attribut tal-aċċessibbiltà għalik. Oġġett protett sal-ewwel żblokk huwa disponibbli għal bidu fl-isfond wara li l-apparat ikun ġie żblukkat darba; oġġett li jitlob li l-apparat ikun żblukkat bħalissa mhuwiex.

L-għażla tal-klassi l-aktar stretta hija tentattiva u hija eżattament dak li jkisser profil on-demand fuq telefon imsakkar.

Wara li tbiddel il-klassi, erġa’ oħloq l-oġġett minflok teditja attributi fuq dak eżistenti, imbagħad erġa’ salva l-protokoll b’referenza friska. Il-bidliet fl-attributi fuq oġġett eżistenti mhux dejjem jipproduċu l-imġiba li timplika d-dokumentazzjoni, u oġġett mibni mill-ġdid ineħħi d-dubju.

Ir-rotazzjoni hija fejn il-profili salvati jitħassru

Il-bidla tal-password fil-keychain ma tbiddilx awtomatikament dak li lejh jindika l-profil salvat. Li tħassar l-oġġett huwa agħar: il-profil iżomm referenza għal xi ħaġa li m’għadhiex teżisti, u l-falliment jidher bħal rifjut ta’ awtentikazzjoni.

Irrotaw b’ordni wieħed. Aġġorna l-oġġett, staqsi referenza persistenti ġdida, erġa’ salva l-protokoll, imbagħad ikkonnettja bl-app magħluqa biex tipprova li d-daemon għadu jista’ jissolviha. Żomm il-password tal-utent u s-sigriet maqsum f’oġġetti separati sabiex kull wieħed jirrotaw skont l-iskeda tiegħu, u qatt ma tilloggja d-dizzjunarju tat-talba jew ir-referenza stess. Il-manku mhuwiex sigriet, iżda huwa mappa lejh.

Artikli relatati