Miks teie iPhone'i rakendus ei saa süsteemset VPN-i sisse ega välja lülitada
Avalik rakendus ei saa süsteemset VPN-i lülitada, selle olekut lugeda ega ühendust sundida. Valikuteks on On Demand reeglid, järelevalvega seadmete Always On profiilid ja MDM.
Tootejuht palub nuppu, mis lülitab sisse ettevõtte VPN-i, ja taotlus kõlab tühisena. iOS-is ei ole see väike funktsioon; see seisab avaliku lepingu taga, ja iga möödasõit kas kukub ülevaatusel läbi või katkeb järgmises väljaandes. Laske taotlus läbi selle, mida platvorm tegelikult lubab, ja disain kirjutab end suures osas ise. Rakendus võib omada VPN-konfiguratsiooni ja selle käivitada. Rakendus ei ulatu süsteemse lülitini, ei suuda lugeda profiili olekut, mida ta ise ei loonud, ja ei suuda hoida kasutajat ühendatud tema tahte vastaselt.
Alustage kolmest asjast, mida kasutaja mõtleb
Eraldage tähendused enne, kui eraldate API-d. Mõnikord tahab kasutaja, et teie rakenduse tunnel oleks ühendatud, mõnikord tahab ta Seadetes lülitit keerata profiilil, mille paigaldas keegi teine, ja mõnikord tahab ta, et telefon ei saaks ilma tunnelita sirvida. Need vastavad kolmele erinevale mehhanismile ja ainult esimene on tavalisele rakendusele avatud.
Teine tähendus on see, mis tekitab Stack Overflow küsimused, ja sellel puudub toetatud vastus. Seadetes olev lüliti kuulub kasutajale ja hallatavatel seadmetel profiilile. Ükski avalik API ei loetle VPN-konfiguratsioone, ei teata, kas süsteemne tunnel on üleval, ega lülita seda.
Mida rakendus tegelikult luua saab
NetworkExtension annab rakendusele oma konfiguratsiooni NEVPNManager kaudu. Personal VPN õiguse ja kasutaja nõusolekuga salvestab rakendus konfiguratsiooni, mis ilmub Seadetes tema enda nime all, ja saab selle ühe ühenduse käivitada või peatada. See on tõeline, ülevaatuse läbiv võimekus, ja see on ka kogu ulatus: haldur loeb ja kirjutab ainult seda, mille ta ise lõi.
Õigus ei ole automaatne. Te taotlete seda Apple'ilt ja põhjendate, miks rakendusel üldse tunnelit vaja on, ja kliendil, kelle ainus eesmärk on kellegi teise profiil sisse lülitada, ei ole head vastust. Pakettunnelite pakkujad järgivad sama reeglit teise klassiga: NETunnelProviderManager omab pakkujapõhiseid konfiguratsioone, mille rakendus ise paigaldas. Kumbki tee ei ulatu profiilini, mille MDM edastas.
Nõusolek kehtib ka salvestamise hetkel. Konfiguratsiooni kirjutamine küsib kasutajalt ja see küsimus ei ole midagi, mida rakendus võiks mugavuse huvides alla suruda.
Oleku lugemine põrkab sama seina vastu
Olek tundub kontrollist sõbralikum ja on sama suletud. NEVPNStatus teatab rakenduse enda konfiguratsiooni kohta kehtetu, katkestatud, ühendamine, ühendatud, uuesti kinnitamine või katkestamine, ja iga muutuse korral käivitub teade. See ei ütle midagi haldusprofiili paigaldatud tunneli kohta, ja just seda olekut tahab tugiteenus näha.
Võrgutee jälgimist ja liidese muutusi pakutakse disainiülevaatustel asendusena. Need kirjeldavad teed, mida rakenduse liiklus läbib, mis muutub VPN-i olekust sõltumatutel põhjustel, ja nende kasutamine VPN-i näiduna annab liidese, mis valetab mõlemas suunas.
On Demand ja Always On on tõelised hoovad
Toetatud hoovad elavad profiilis, mitte rakenduses. On Demand reeglid ütlevad süsteemile, millal ühenduda: järjestatud tingimuste loend koos tegevustega, mida hindab operatsioonisüsteem, mitte teie kood. Reegel, mis ühendub mis tahes liidesel, loob pideva ühenduse tunde, andmata ühelegi rakendusele kontrolli.
Always On VPN on jõustamismehhanism ja see on seotud järelevalvega. Järelevalvega seadmes paigaldab MDM profiili, mis hoiab tunneli üleval; järelevalveta isiklikus telefonis ei anna samad võtmed sama käitumist. See asümmeetria on tahtlik ja ükski kandevõtmete kombinatsioon ei kõrvalda seda. Kui nõue on tõesti see, et VPN peab olema sees, on nõue tegelikult see, et seadet peab haldama.
Nende vahel istub nõrgem sugulane: reegel, mis ühendub uuesti pärast seda, kui kasutaja katkestas. See ühendub reegli järgmisel hindamisel, mis ei ole sama mis kohe, ja kasutaja, kes katkestas meelega, märkab vahet. Kujundage liides selle lünga ümber, selle asemel et lubada lukku.
Tarnige toetatud tee
Neli küsimust otsustavad mehhanismi enne, kui koodi on üldse olemas: kellele seade kuulub, kas see on järelevalve all, milline klient tunneli lõpetab ja kust profiil tuleb. Kui midagi sellest on teadmata, ei ole funktsioonitaotlus hinnanguks valmis.
Privaatne API, mis süsteemset VPN-i songib, läbib demo ja kukub ülevaatusel läbi, ja kui see muul viisil välja lastakse, katkeb see järgmises iOS-i väljaandes. Selle vahetuse jaoks ei ole ühtegi versiooni, mis oleks ühe lüliti väärt.
Haldustelemeetria on eraldi kanal: see teatab, et profiil on paigaldatud ja kas seade vastab nõuetele, mis on aruandlus, mitte rakendusepõhine juhtpind. Testige voogu pärast igat uuendust päris seadmes, sest toetatud käitumine elab operatsioonisüsteemis ja operatsioonisüsteem liigub.