Zakaj vaša aplikacija za iPhone ne more vklopiti ali izklopiti sistemskega VPN
Javna aplikacija ne more preklopiti sistemskega VPN, prebrati njegovega stanja ali vsiliti povezave. Pravila On Demand, profili Always On na nadzorovanih napravah in MDM so možnosti.
Vodja izdelka prosi za gumb, ki vklopi korporativni VPN, in zahteva zveni trivialno. V iOS to ni majhna funkcija; stoji zunaj javne pogodbe in vsak obhod bodisi ne prestane pregleda bodisi se zlomi v naslednji izdaji. Peljite zahtevo skozi to, kar platforma resnično dovoljuje, in zasnova se bo večinoma napisala sama. Aplikacija lahko ima lastno konfiguracijo VPN in jo zažene. Aplikacija ne more doseči sistemskega stikala, ne more prebrati stanja profila, ki ga ni ustvarila, in ne more obdržati uporabnika povezanega proti njegovi volji.
Začnite s tremi stvarmi, ki jih uporabnik misli
Ločite pomene, preden ločite API-je. Včasih uporabnik želi, da je tunel vaše aplikacije povezan, včasih želi vklopiti stikalo v Nastavitvah za profil, ki ga je namestil nekdo drug, včasih pa želi, da telefon ne more brskati brez tunela. To ustreza trem različnim mehanizmom in samo prvi je odprt običajni aplikaciji.
Drugi pomen je tisti, ki ustvarja vprašanja na Stack Overflowu, in zanj ni podprtega odgovora. Stikalo v Nastavitvah pripada uporabniku, na upravljanih napravah pa profilu. Noben javni API ne našteva konfiguracij VPN, ne poroča, ali je sistemski tunel dvignjen, in ga ne preklopi.
Kaj lahko aplikacija resnično ustvari
NetworkExtension daje aplikaciji lastno konfiguracijo prek NEVPNManager. S pravico Personal VPN in soglasjem uporabnika aplikacija shrani konfiguracijo, ki se v Nastavitvah pojavi pod njenim imenom, in lahko zažene ali ustavi to eno povezavo. To je resnična, pregledna zmožnost, in to je tudi ves obseg: upravitelj bere in piše le tisto, kar je sam ustvaril.
Pravica ni samodejna. Zahtevate jo pri Applu in utemeljujete, zakaj aplikacija sploh potrebuje tunel, in odjemalec, katerega edini cilj je vklopiti tuj profil, nima dobrega odgovora. Ponudniki paketnih tunelov sledijo istemu pravilu z drugim razredom: NETunnelProviderManager ima konfiguracije, ki temeljijo na ponudniku in jih je aplikacija sama namestila. Nobena pot ne doseže profila, ki ga je dostavil MDM.
Soglasje velja tudi ob shranjevanju. Pisanje konfiguracije vpraša uporabnika in to vprašanje ni nekaj, kar bi aplikacija lahko zadušila zaradi udobja.
Branje stanja udari v isto steno
Stanje je videti prijaznejše od nadzora in je enako zaprto. NEVPNStatus poroča neveljavno, prekinjeno, povezovanje, povezano, ponovno potrjevanje ali prekinjanje za lastno konfiguracijo aplikacije in ob vsaki spremembi se sproži obvestilo. O tunelu, ki ga je namestil profil upravljanja, ne pove ničesar, in prav to stanje želi videti služba za podporo.
Spremljanje omrežne poti in spremembe vmesnika se na pregledih zasnove ponujajo kot nadomestilo. Opisujejo pot, po kateri gre promet aplikacije, in ta se spreminja iz razlogov, ki niso povezani s stanjem VPN, in njihova uporaba kot odčitek VPN daje vmesnik, ki laže v obe smeri.
On Demand in Always On sta prava vzvoda
Podprti vzvodi živijo v profilu in ne v aplikaciji. Pravila On Demand povedo sistemu, kdaj naj se poveže: urejen seznam pogojev z dejanji, ki ga ocenjuje operacijski sistem, ne vaša koda. Pravilo, ki se poveže na katerem koli vmesniku, ustvari občutek stalne povezanosti, ne da bi aplikaciji dalo kakršen koli nadzor.
Always On VPN je mehanizem vsiljevanja in je vezan na nadzor. Na nadzorovani napravi MDM namesti profil, ki drži tunel pokonci; na osebnem telefonu brez nadzora isti ključi ne dajo enakega vedenja. Ta asimetrija je namerna in nobena kombinacija ključev koristnega tovora je ne odpravi. Ko je zahteva resnično ta, da mora biti VPN vklopljen, je zahteva v resnici ta, da je treba napravo upravljati.
Med njima sedi šibkejši bratranec: pravilo, ki se znova poveže, potem ko se uporabnik izklopi. Poveže se ob naslednji oceni pravila, kar ni isto kot takoj, in uporabnik, ki se je izklopil namerno, bo opazil razliko. Oblikujte vmesnik okoli te vrzeli, namesto da bi obljubljali ključavnico.
Dostavite podprto pot
Štiri vprašanja odločijo mehanizem, preden obstaja kakršna koli koda: kdo ima napravo, ali je pod nadzorom, kateri odjemalec konča tunel in od kod pride profil. Če je karkoli od tega neznano, zahteva za funkcijo ni pripravljena za oceno.
Zasebni API, ki brska po sistemskem VPN, bo prestal predstavitev in padel na pregledu, in če bo dostavljen po drugi poti, se bo zlomil v naslednji izdaji iOS. Ni različice te menjave, ki bi bila vredna enega stikala.
Telemetrija upravljanja je ločen kanal: poroča, da je profil nameščen in ali je naprava skladna, kar je poročanje in ne nadzorna površina za vsako aplikacijo. Preizkusite tok na resnični napravi po vsaki posodobitvi, ker podprto vedenje živi v operacijskem sistemu in operacijski sistem se premika.