Wasifu wa VPN kwenye iOS: passwordReference, si neno la siri
Rejea ya keychain ni kishikilio, si siri yenyewe. Kupitisha baiti kunaeleza hitilafu -50, kushindwa kwa kuwasha upya na mtego wa mzunguko katika wasifu wa VPN zilizohifadhiwa.
Unasakinisha wasifu, handaki inapanda, na kila kitu kinaonekana kukamilika. Kisha simu inawasha upya, on-demand inaamsha muunganisho bila programu yoyote mbele, na handaki inakataa kuanza. Wasifu ungali pale na neno la siri ni sahihi, ndiyo sababu hitilafu hii inawapeleka watu kutafuta mahali pasipo. Network Extension haiwezi kusoma siri yako kutoka wasifu: inahitaji rejea ya keychain ambayo inaweza kuitatua yenyewe.
Mwongozo hapa chini unafuata jaribio moja la muunganisho kupitia uhamishaji huo, kutoka swali linalojenga rejea hadi kuwasha upya kunakoijaribu.
Wasifu huhifadhi kishikilio, si siri
NEVPNProtocol inaonyesha passwordReference na sharedSecretReference kwa sababu. Daemon inapoanzisha handaki, huenda haifanyi kazi ndani ya mchakato wako, kwa hiyo haiwezi kuita msimbo wako na kuomba neno la siri. Inasoma rejea ya kudumu ya keychain, inaitatua katika muktadha wake yenyewe, na inaleta kipengee yenyewe.
Unajenga rejea hiyo kwa kuiomba keychain, ambayo ni ombi tofauti na ombi la 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
]Mpe itifaki kipengee kilichorudishwa, si data ya kipengee. Kiutendaji wasifu hurekodi siri inakoishi, ndiyo sababu nakala rudufu ya usanidi haidurufu neno la siri kimyakimya ndani ya plist.
Kwa nini API inajibu -50
errSecParam inamaanisha ombi au thamani ilikuwa na umbo baya kwa operesheni hiyo, na ndiyo hitilafu inayoonekana zaidi maombi ya rejea na data yanapochanganyika. Kuomba data wakati msimbo unaopokea unatarajia rejea, kuweka baiti ghafi kwenye passwordReference, au kuuliza kwa kundi la ufikiaji ambalo programu haiwezi kutumia, yote yanaitokeza.
Maktaba za kufunga zinakaribisha hili. Kisaidizi kinachorudisha baiti hakiwezi kubadilishwa na kile kinachorudisha rejea, kwa hiyo marekebisho ni swali lingine badala ya neno lingine la siri.
Kutokulingana huku kunaeleza wasifu unaohifadhiwa bila malalamiko kisha unashindwa kuunganisha: kilichohifadhiwa ni blob, si kishikilio, na daemon haina cha kutatua.
Huhifadhi vizuri, hushindwa wakati wa kuunganisha
Kuhifadhi hufanya mazoezi ya muktadha wa programu yako. Kuunganisha hufanya mazoezi ya ule wa daemon, na wote wawili hawana ufikiaji sawa. Kwa hiyo wasifu unaweza kupita majaribio yote kwenye kiiga na kushindwa kwenye mwanzo wa kwanza wa on-demand.
Umbo la dalili ya kuwasha upya ni hilo hilo: hufanya kazi wakati programu imefunguliwa na hufa wakati mfumo unaanzisha handaki yenyewe.
Jaribu njia ya chinichini kwa makusudi kabla ya kupeleka. Anzisha muunganisho wa on-demand wakati programu imefungwa, kisha soma konsoli ya kifaa si kumbukumbu ya programu, kwa sababu hitilafu hurekodiwa na mchakato uliojaribu kutatua rejea. Ikiwa konsoli inaonyesha daemon inakataa kipengee, rejea iko sawa na tatizo ni upatikanaji wa kipengee.
Upatikanaji huamua kama kuwasha upya kutafanya kazi
Kipengee lazima kisomeke na mchakato wowote wa mfumo unaoanzisha handaki, na hiyo ni hadhira pana kuliko programu yako ikiwa mbele. Kizuizi hicho huchagua sifa ya upatikanaji kwa ajili yako. Kipengee kilicholindwa hadi kufunguliwa kwa mara ya kwanza kinapatikana kwa mwanzo wa chinichini baada ya kifaa kufunguliwa mara moja; kipengee kinachodai kifaa kifunguliwe sasa hakipatikani.
Kuchagua darasa gumu zaidi kunavutia na ndiyo hasa kunavunja wasifu wa on-demand kwenye simu iliyofungwa.
Baada ya kubadilisha darasa, tengeneza kipengee upya badala ya kuhariri sifa kwenye kilichopo, kisha hifadhi itifaki tena kwa rejea mpya. Mabadiliko ya sifa kwenye kipengee kilichopo si kila wakati huzalisha tabia ambayo nyaraka zinaiashiria, na kipengee kilichojengwa upya huondoa shaka.
Mzunguko ni mahali ambapo wasifu zilizohifadhiwa huozoza
Kubadilisha neno la siri kwenye keychain hakubadilishi kiotomatiki kile wasifu uliohifadhiwa unaoelekeza. Kufuta kipengee ni mbaya zaidi: wasifu unashikilia rejea ya kitu kisichokuwepo tena, na kushindwa kunaonekana kama kukataliwa kwa uthibitishaji.
Zungusha kwa mpangilio mmoja. Sasisha kipengee, uliza rejea mpya ya kudumu, hifadhi itifaki tena, kisha unganisha wakati programu imefungwa ili kuthibitisha daemon bado inaweza kuutatua. Weka neno la siri la mtumiaji na siri inayoshirikiwa katika vipengee tofauti ili kila kimoja kizunguke kwa ratiba yake, na kamwe usirekodi kamusi ya swali au rejea yenyewe. Kishikilio si siri, lakini ni ramani ya kuiendea.